> This page is for Browser API.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.webflow.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.webflow.com/_mcp/server.

# sendEvent()

> Trigger an on-site conversion goal with the sendEvent API

## `wf.sendEvent(eventName, options?)`

Trigger a custom goal to track conversions on your Webflow site.

> **Create a custom goal first**
>
> Before calling `wf.sendEvent()`, create a custom goal. Then, pass the `eventName` from the custom goal to this method.

### Syntax

```typescript
wf.sendEvent(eventName: string)
```

```typescript
wf.sendEvent(eventName: string, options: { value: number | string })
```

### Parameters

* **eventName** (required): `string` — The name of the custom event you created in your custom goal. Must be 40 printable ASCII characters or fewer, and cannot contain spaces.

* **options** (optional): `{ value: number | string }` — An object containing a `value` property for tracking monetary or numeric values with the conversion.

> **Value formatting**
>
> When including a `value`, it must meet these conditions:
>
> * Can be a string or number
> * Must not be negative (e.g., `10` is valid, `-10` is not)
> * Can include up to two decimal places (e.g., `10`, `10.5`, `10.50`)
> * Must not include currency symbols (e.g., `10.50` is valid, `$10.50` is not)
>
> To ensure two-decimal accuracy when working with dynamic values:
>
> ```javascript
> Number.parseFloat(rawValue).toFixed(2);
> ```

### Examples

#### Basic usage

Track a simple on-site conversion:

```javascript
wf.ready(function() {
    wf.sendEvent('form_submitted');
});
```

#### With a value

Track an on-site conversion with an associated monetary value:

```javascript
wf.ready(function() {
    wf.sendEvent('purchase', { value: 149.99 });
});
```

#### Recording dynamic values

Track values that vary based on user action, such as a shopping cart total:

```javascript
wf.ready(function() {
    var eventName = 'purchase';
    var price = document.getElementById('total_price').value;
    wf.sendEvent(eventName, { value: price });
});
```

### Returns

This method doesn't return a value. The event is sent to Webflow and recorded in your optimization results.

### FAQs

#### Why isn't my custom goal showing up in Analyze/Optimize?

Make sure you've:

* [Created the custom goal in Webflow](https://help.webflow.com/hc/en-us/articles/49675035413523)
* Used the exact `eventName` (case-sensitive) from the custom goal in your `wf.sendEvent()` call
* Wrapped your code in `wf.ready()` to ensure the Browser API is available

#### How quickly do on-site conversion goals appear in my Analyze/Optimize dashboard?

On-site conversion events are recorded in real time and should appear in your Analyze/Optimize dashboard within approximately 15 - 30 minutes.