# Event types

> Browse Analytics SDK event names with the trigger, an example payload, and the fields of each event.

Breadcrumb: Analytics SDK › Event types · Updated: 2026-10-17
Docs index: https://docs.cevoid.com/developers/llms.txt

Use this page when you want the Analytics SDK event catalog. Each event lists its trigger, an example payload, and its fields.

Events that Cevoid galleries and cards send carry `widgetType` `gallery` or `card`. Events you send with [`trackEvent()`](https://docs.cevoid.com/developers/analytics-sdk/api.md#trackeventname-data) always carry `widgetType` `api`, so the examples below show `api`.

## Widget lifecycle

### `widget.load`

Sent when a widget finishes loading its initial content.

```ts title="SDK input"
trackEvent('widget.load', {
  widgetId: 'gallery-homepage',
  marketId: 'market_se',
  postsLoadedCount: 12,
  fallbackPostsCount: 0,
  pagePositionX: 0,
  pagePositionY: 640
})
```

```json title="Browser event detail"
{
  "widgetId": "gallery-homepage",
  "marketId": "market_se",
  "postsLoadedCount": 12,
  "fallbackPostsCount": 0,
  "pagePositionX": 0,
  "pagePositionY": 640,
  "widgetType": "api"
}
```

The browser event is emitted as `cevoid:widget.load`. The forwarded payload is available on `event.detail`.

- `widgetId` (`string`): Your Cevoid widget instance ID.
- `widgetType` (`'gallery' | 'card' | 'api'`): Set by the SDK: `gallery` or `card` when a Cevoid widget sends the event, `api` when you call `trackEvent()`. You do not pass it.
- `marketId` (`string`): Market identifier for localized storefronts.
- `postsLoadedCount` (`number`): Number of posts loaded into the widget.
- `fallbackPostsCount` (`number`): Number of fallback posts used.
- `pagePositionX` (`number`): Horizontal page position.
- `pagePositionY` (`number`): Vertical page position.

### `widget.view`

Sent when a widget becomes visible to the shopper.

```ts title="SDK input"
trackEvent('widget.view', {
  widgetId: 'gallery-homepage',
  marketId: 'market_se',
  postsLoadedCount: 12,
  fallbackPostsCount: 0,
  pagePositionX: 0,
  pagePositionY: 640
})
```

```json title="Browser event detail"
{
  "widgetId": "gallery-homepage",
  "marketId": "market_se",
  "postsLoadedCount": 12,
  "fallbackPostsCount": 0,
  "pagePositionX": 0,
  "pagePositionY": 640,
  "widgetType": "api"
}
```

The browser event is emitted as `cevoid:widget.view`. The forwarded payload is available on `event.detail`.

- `widgetId` (`string`): Your Cevoid widget instance ID.
- `widgetType` (`'gallery' | 'card' | 'api'`): Set by the SDK: `gallery` or `card` when a Cevoid widget sends the event, `api` when you call `trackEvent()`. You do not pass it.
- `marketId` (`string`): Market identifier for localized storefronts.
- `postsLoadedCount` (`number`): Number of posts loaded into the widget.
- `fallbackPostsCount` (`number`): Number of fallback posts used.
- `pagePositionX` (`number`): Horizontal page position.
- `pagePositionY` (`number`): Vertical page position.

## Post events

### `post.view`

Sent when a post impression is tracked.

```ts title="SDK input"
trackEvent('post.view', {
  widgetId: 'gallery-homepage',
  postId: 'post_123',
  marketId: 'market_se',
  postPosition: 1,
  taggedProductIds: ['prod_1', 'prod_2']
})
```

```json title="Browser event detail"
{
  "widgetId": "gallery-homepage",
  "postId": "post_123",
  "marketId": "market_se",
  "postPosition": 1,
  "taggedProductIds": ["prod_1", "prod_2"],
  "widgetType": "api"
}
```

The browser event is emitted as `cevoid:post.view`. The forwarded payload is available on `event.detail`.

- `widgetId` (`string`): Widget instance ID that showed the post.
- `widgetType` (`'gallery' | 'card' | 'api'`): Set by the SDK: `gallery` or `card` when a Cevoid widget sends the event, `api` when you call `trackEvent()`. You do not pass it.
- `postId` (`string`, required): Cevoid post ID.
- `marketId` (`string`): Market identifier for localized storefronts.
- `postPosition` (`number`): Position of the post in the widget.
- `taggedProductIds` (`string[]`): Product IDs associated with the post.

### `post.click`

Sent when a shopper clicks a post.

```ts title="SDK input"
trackEvent('post.click', {
  widgetId: 'gallery-homepage',
  postId: 'post_123',
  marketId: 'market_se',
  postPosition: 4,
  taggedProductIds: ['prod_1', 'prod_2']
})
```

```json title="Browser event detail"
{
  "widgetId": "gallery-homepage",
  "postId": "post_123",
  "marketId": "market_se",
  "postPosition": 4,
  "taggedProductIds": ["prod_1", "prod_2"],
  "widgetType": "api"
}
```

The browser event is emitted as `cevoid:post.click`. The forwarded payload is available on `event.detail`.

- `widgetId` (`string`): Widget instance ID that showed the post.
- `widgetType` (`'gallery' | 'card' | 'api'`): Set by the SDK: `gallery` or `card` when a Cevoid widget sends the event, `api` when you call `trackEvent()`. You do not pass it.
- `postId` (`string`, required): Cevoid post ID.
- `marketId` (`string`): Market identifier for localized storefronts.
- `postPosition` (`number`): Position of the post in the widget.
- `taggedProductIds` (`string[]`): Product IDs associated with the post.

### `post.view.popup`

Sent when a post is viewed in the popup experience.

```ts title="SDK input"
trackEvent('post.view.popup', {
  widgetId: 'gallery-homepage',
  postId: 'post_123',
  marketId: 'market_se',
  postPosition: 1,
  taggedProductIds: ['prod_1', 'prod_2']
})
```

```json title="Browser event detail"
{
  "widgetId": "gallery-homepage",
  "postId": "post_123",
  "marketId": "market_se",
  "postPosition": 1,
  "taggedProductIds": ["prod_1", "prod_2"],
  "widgetType": "api"
}
```

The browser event is emitted as `cevoid:post.view.popup`. The forwarded payload is available on `event.detail`.

- `widgetId` (`string`): Widget instance ID that showed the post.
- `widgetType` (`'gallery' | 'card' | 'api'`): Set by the SDK: `gallery` or `card` when a Cevoid widget sends the event, `api` when you call `trackEvent()`. You do not pass it.
- `postId` (`string`, required): Cevoid post ID.
- `marketId` (`string`): Market identifier for localized storefronts.
- `postPosition` (`number`): Position of the post in the widget.
- `taggedProductIds` (`string[]`): Product IDs associated with the post.

### `post.clap`

Sent when a shopper claps a post.

```ts title="SDK input"
trackEvent('post.clap', {
  widgetId: 'gallery-homepage',
  postId: 'post_123',
  marketId: 'market_se',
  postPosition: 1,
  taggedProductIds: ['prod_1', 'prod_2']
})
```

```json title="Browser event detail"
{
  "widgetId": "gallery-homepage",
  "postId": "post_123",
  "marketId": "market_se",
  "postPosition": 1,
  "taggedProductIds": ["prod_1", "prod_2"],
  "widgetType": "api"
}
```

The browser event is emitted as `cevoid:post.clap`. The forwarded payload is available on `event.detail`.

- `widgetId` (`string`): Widget instance ID that showed the post.
- `widgetType` (`'gallery' | 'card' | 'api'`): Set by the SDK: `gallery` or `card` when a Cevoid widget sends the event, `api` when you call `trackEvent()`. You do not pass it.
- `postId` (`string`, required): Cevoid post ID.
- `marketId` (`string`): Market identifier for localized storefronts.
- `postPosition` (`number`): Position of the post in the widget.
- `taggedProductIds` (`string[]`): Product IDs associated with the post.

## Product click events

### `product.click.tag`

Sent when a shopper clicks a tagged product from a post.

```ts title="SDK input"
trackEvent('product.click.tag', {
  widgetId: 'gallery-homepage',
  postId: 'post_123',
  productId: 'prod_1',
  marketId: 'market_se'
})
```

```json title="Browser event detail"
{
  "widgetId": "gallery-homepage",
  "postId": "post_123",
  "productId": "prod_1",
  "marketId": "market_se",
  "widgetType": "api"
}
```

The browser event is emitted as `cevoid:product.click.tag`. The forwarded payload is available on `event.detail`.

- `widgetId` (`string`): Widget instance ID that showed the product.
- `widgetType` (`'gallery' | 'card' | 'api'`): Set by the SDK: `gallery` or `card` when a Cevoid widget sends the event, `api` when you call `trackEvent()`. You do not pass it.
- `postId` (`string`, required): Cevoid post ID tied to the product click.
- `productId` (`string`, required): Product ID that was clicked.
- `marketId` (`string`): Market identifier for localized storefronts.

### `product.click.post`

Sent when a shopper clicks through to a product from a post.

```ts title="SDK input"
trackEvent('product.click.post', {
  widgetId: 'gallery-homepage',
  postId: 'post_123',
  productId: 'prod_1',
  marketId: 'market_se'
})
```

```json title="Browser event detail"
{
  "widgetId": "gallery-homepage",
  "postId": "post_123",
  "productId": "prod_1",
  "marketId": "market_se",
  "widgetType": "api"
}
```

The browser event is emitted as `cevoid:product.click.post`. The forwarded payload is available on `event.detail`.

- `widgetId` (`string`): Widget instance ID that showed the product.
- `widgetType` (`'gallery' | 'card' | 'api'`): Set by the SDK: `gallery` or `card` when a Cevoid widget sends the event, `api` when you call `trackEvent()`. You do not pass it.
- `postId` (`string`, required): Cevoid post ID tied to the product click.
- `productId` (`string`, required): Product ID that was clicked.
- `marketId` (`string`): Market identifier for localized storefronts.

### `product.click.card`

Sent when a shopper clicks through to a product from a card widget.

```ts title="SDK input"
trackEvent('product.click.card', {
  widgetId: 'card-homepage',
  postId: 'post_123',
  productId: 'prod_1',
  marketId: 'market_se'
})
```

```json title="Browser event detail"
{
  "widgetId": "card-homepage",
  "postId": "post_123",
  "productId": "prod_1",
  "marketId": "market_se",
  "widgetType": "api"
}
```

The browser event is emitted as `cevoid:product.click.card`. The forwarded payload is available on `event.detail`.

- `widgetId` (`string`): Widget instance ID that showed the product.
- `widgetType` (`'gallery' | 'card' | 'api'`): Set by the SDK: `gallery` or `card` when a Cevoid widget sends the event, `api` when you call `trackEvent()`. You do not pass it.
- `postId` (`string`, required): Cevoid post ID tied to the product click.
- `productId` (`string`, required): Product ID that was clicked.
- `marketId` (`string`): Market identifier for localized storefronts.

## Gallery actions

### `gallery.load_more`

Sent when a shopper loads more posts in a gallery widget.

```ts title="SDK input"
trackEvent('gallery.load_more', {
  widgetId: 'gallery-homepage',
  marketId: 'market_se',
  loadMoreType: 'button',
  pagePositionX: 0,
  pagePositionY: 1280
})
```

```json title="Browser event detail"
{
  "widgetId": "gallery-homepage",
  "marketId": "market_se",
  "loadMoreType": "button",
  "pagePositionX": 0,
  "pagePositionY": 1280,
  "widgetType": "api"
}
```

The browser event is emitted as `cevoid:gallery.load_more`. The forwarded payload is available on `event.detail`.

- `widgetId` (`string`): Gallery widget instance ID.
- `widgetType` (`'gallery' | 'card' | 'api'`): Set by the SDK: `gallery` or `card` when a Cevoid widget sends the event, `api` when you call `trackEvent()`. You do not pass it.
- `marketId` (`string`): Market identifier for localized storefronts.
- `loadMoreType` (`'infinity_loader' | 'button'`, required): How additional posts were loaded.
- `pagePositionX` (`number`): Horizontal page position.
- `pagePositionY` (`number`): Vertical page position.

### `gallery.upload_cta_click`

Sent when a shopper clicks the upload CTA inside a gallery.

```ts title="SDK input"
trackEvent('gallery.upload_cta_click', {
  widgetId: 'gallery-homepage',
  marketId: 'market_se',
  pagePositionX: 0,
  pagePositionY: 920
})
```

```json title="Browser event detail"
{
  "widgetId": "gallery-homepage",
  "marketId": "market_se",
  "pagePositionX": 0,
  "pagePositionY": 920,
  "widgetType": "api"
}
```

The browser event is emitted as `cevoid:gallery.upload_cta_click`. The forwarded payload is available on `event.detail`.

- `widgetId` (`string`): Gallery widget instance ID.
- `widgetType` (`'gallery' | 'card' | 'api'`): Set by the SDK: `gallery` or `card` when a Cevoid widget sends the event, `api` when you call `trackEvent()`. You do not pass it.
- `marketId` (`string`): Market identifier for localized storefronts.
- `pagePositionX` (`number`): Horizontal page position.
- `pagePositionY` (`number`): Vertical page position.

## Conversion event

### `sale.complete`

Sent by `trackSale()` when a completed purchase is tracked. The SDK emits the browser event `cevoid:sale.complete` and sends the internal event `sale.complete`.

```ts title="SDK input"
trackSale({
  orderId: 'order_123',
  marketId: 'market_123',
  customerId: 'cust_456',
  currency: 'USD',
  revenue: 129.99,
  skus: ['SKU-1', 'SKU-2']
})
```

```json title="Browser event detail"
{
  "orderId": "order_123",
  "marketId": "market_123",
  "customerId": "cust_456",
  "currency": "USD",
  "revenue": 129.99,
  "skus": ["SKU-1", "SKU-2"]
}
```

The browser event is emitted as `cevoid:sale.complete`. The forwarded payload is available on `event.detail`.

- `orderId` (`string`, required): Order identifier.

- `marketId` (`string`): Market identifier used for SKU resolution in telemetry.

- `customerId` (`string`): Customer identifier.

- `currency` (`string`, required): ISO currency code.

- `revenue` (`number`, required): Decimal major-unit amount in `currency`.

  **Example:** `129.99`

- `skus` (`string[]`): Purchased SKUs used for telemetry-side product resolution.

* Provide `revenue` in the same currency as `currency`, for example `129.99` with `USD`.
* Use `trackSale(data)` for conversions rather than `trackEvent('sale.complete', ...)`.

## Related articles

- [SDK API](https://docs.cevoid.com/developers/analytics-sdk/api.md)
- [Manual event tracking](https://docs.cevoid.com/developers/analytics-sdk/track-events.md)
- [Track sales](https://docs.cevoid.com/developers/analytics-sdk/track-sales.md)

---

Canonical: https://docs.cevoid.com/developers/analytics-sdk/events
