Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD007/ul-indent Unordered list indentation [Expected: 0; Actual: 2]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD007/ul-indent Unordered list indentation [Expected: 0; Actual: 2]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD007/ul-indent Unordered list indentation [Expected: 0; Actual: 2]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD001/heading-increment Heading levels should only increment by one level at a time [Expected: h3; Actual: h4]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD007/ul-indent Unordered list indentation [Expected: 0; Actual: 2]

* [Adding an item to a subscription](#adding-an-item-to-a-subscription).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD007/ul-indent Unordered list indentation [Expected: 0; Actual: 2]

* [Editing an item in a subscription](#editing-an-item-in-a-subscription).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD024/no-duplicate-heading Multiple headings with the same content [Context: "#### Request body example"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD024/no-duplicate-heading Multiple headings with the same content [Context: "#### Request body example"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

To remove a manual price, you must set the `manualPrice` value to `null` when making a <span class="APIMethod APIMethod_fixedWidth APIMethod_patch">patch</span> [Edit item on subscription](https://developers.vtex.com/vtex-rest-api/reference/patch_api-rns-pub-subscriptions-id-items-itemid) request.

Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ You can manually modify the price when:

Read the following sections for details on the endpoints you must use and their request body examples.

> 🚧 You can only apply a manual price to a subscription item if the `manualPriceAllowed` configuration is set to `true`, as described in the [Configuration](#configuration) section.
> ⚠️ You can only apply a manual price to a subscription item if the `manualPriceAllowed` configuration is set to `true`, as described in the [Configuration](#configuration) section.


Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]

### Adding an item to a subscription
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

Comment on lines 84 to 85
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint-fix] reported by reviewdog 🐶

Suggested change
### Adding an item to a subscription
### Adding an item to a subscription

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ This guide explains how to send event notifications to VTEX Ads. You can send ev
- Through a web browser using the `sendBeacon()` API
- Server-side or through native apps using REST endpoints

> 🚧 Don't construct event URLs manually. Always use the URL provided from the `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) request.
> ⚠️ Don't construct event URLs manually. Always use the URL provided from the `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) request.
>
> This is extremely important to ensure long-term stability of the integration, because the parameters of the event URL may change over time, but the integration itself does not.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Click tracking is essential for measuring ad performance in VTEX Ads. This guide
- Click events require both `user_id` and `session_id` for proper attribution.
- Click URLs are unique to each ad and should be obtained from the [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) response.

> 🚧 Don't construct event URLs manually. Always use the URL provided from the `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) request.
> ⚠️ Don't construct event URLs manually. Always use the URL provided from the `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) request.
>
> This is extremely important to ensure long-term stability of the integration, because the parameters of the event URL may change over time, but the integration itself does not.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Conversion tracking is crucial for measuring ad campaign effectiveness in VTEX A
- Prices must be sent per unit. Don't multiply the `price` or `promotional_price` by the `quantity`.
- All customer identifiers (email, phone, etc.) must be hashed for privacy.

> 🚧 Don't construct event URLs manually. Always use the URL provided from the `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) request.
> ⚠️ Don't construct event URLs manually. Always use the URL provided from the `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) request.
>
> This is extremely important to ensure long-term stability of the integration, because the parameters of the event URL may change over time, but the integration itself does not.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Impression tracking is fundamental for measuring ad visibility in VTEX Ads. This
- Impression events require both `user_id` and `session_id` for proper attribution.
- Impression URLs are unique to each ad and should be obtained from the [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) response.

> 🚧 Don't construct event URLs manually. Always use the URL provided from the `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) request.
> ⚠️ Don't construct event URLs manually. Always use the URL provided from the `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) request.
>
> This is extremely important to ensure long-term stability of the integration, because the parameters of the event URL may change over time, but the integration itself does not.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ VTEX Ads uses view tracking to measure when banner advertisements are effectivel
- View events require both `user_id` and `session_id` for proper attribution.
- View URLs are unique to each ad and should be obtained from the [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) response.

> 🚧 Don't construct event URLs manually. Always use the URL provided from the `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) request.
> ⚠️ Don't construct event URLs manually. Always use the URL provided from the `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-) request.
>
> This is extremely important to ensure long-term stability of the integration, because the parameters of the event URL may change over time, but the integration itself does not.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ The response is a dictionary where:

Sponsored brands campaigns have a different response format that includes brand information and related products.

> 🚧 All events must be triggered for both the ad and its products.
> ⚠️ All events must be triggered for both the ad and its products.

Request example:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The Digital Signage integration uses the `POST` [Get ads](https://developers.vte

All ads that should be displayed will be returned. Once all ads have been displayed, the API must be called again to retrieve the next batch of items to be shown.

>🚧 Don't display the same items twice, as display metrics will only be counted once.
> ⚠️ Don't display the same items twice, as display metrics will only be counted once.

Request example:

Expand Down Expand Up @@ -60,7 +60,7 @@ In some cases, it is possible to identify the user making a purchase, typically

Once the user is identified, you can request a personalized ad for that user.

>🚧 For segmented campaigns, an audience integration is required.
> ⚠️ For segmented campaigns, an audience integration is required.

Request example:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ updatedAt: "2025-05-21T22:18:24.684Z"

Campaign targeting allows meta-information to be provided during an ad query, which can be used in real time to prioritize campaigns aimed at that specific audience.

> 🚧 Campaigns with targeting will have higher priority during the query process, meaning they are considered more relevant to the audience they were directed to. However, the presence of targeting does not prevent non-targeted campaigns from also being displayed.
> ⚠️ Campaigns with targeting will have higher priority during the query process, meaning they are considered more relevant to the audience they were directed to. However, the presence of targeting does not prevent non-targeted campaigns from also being displayed.

## Targeting attributes

Expand Down Expand Up @@ -56,7 +56,7 @@ Content-Type: application/json

In this approach, targeting information is obtained based on the audiences associated with the `user_id`. These audiences must have been previously imported into the system.

> 🚧 When using this approach, don't send data in the `segmentation` field, since this field would take priority over `user_id`. The system will automatically fetch the audiences associated with the `user_id`.
> ⚠️ When using this approach, don't send data in the `segmentation` field, since this field would take priority over `user_id`. The system will automatically fetch the audiences associated with the `user_id`.

Request example:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Inventory information defines the price, promotional price, and "stock." Regardi

Learn more about each field on `POST` [Synchronize inventory information](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/product/bulk/inventories).

> 🚧 Batch Insert / Update
> ⚠️ Batch Insert / Update
>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint-fix] reported by reviewdog 🐶

Suggested change
>
>

> For each batch insert/update, a maximum of 500 objects per request and 3 simultaneous requests are allowed.
>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint-fix] reported by reviewdog 🐶

Suggested change
>
>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Learn more about each field on `POST` [Synchronize product information](https://

To update the basic product data, the following endpoint must be used:

> 🚧 Batch Insert / Update
> ⚠️ Batch Insert / Update
>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint-fix] reported by reviewdog 🐶

Suggested change
>
>

> For each batch insert/update, a maximum of 500 objects per request and 3 simultaneous requests are allowed.
>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint-fix] reported by reviewdog 🐶

Suggested change
>
>

Expand Down
107 changes: 107 additions & 0 deletions docs/localization/exporting-ads-events.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
---
title: "Exporting ads events"
slug: "exporting-ads-events"
excerpt: "Export raw advertising event data including impressions, clicks, views, and conversions for detailed analysis."
hidden: false
createdAt: "2025-10-13T00:00:00.000Z"
updatedAt: "2025-10-14T00:00:00.000Z"
---
Event data export enables systematic and periodic integration of raw advertising events for detailed analysis and custom reporting.

## Integration connection

See more about the connection in [Exporting data from VTEX Ads](https://developers.vtex.com/docs/guides/exporting-data-from-vtex-ads).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[link-check] reported by reviewdog 🐶
🚨 Found a broken link in a Markdown Link (Error 404):
https://developers.vtex.com/docs/guides/exporting-data-from-vtex-ads

👉 Please review this link before merging your Pull Request.


## Integration format

- Data sent is always D-1 (previous day)
- Files are in [Parquet](https://parquet.apache.org/docs/overview/) format with [Snappy](https://parquet.apache.org/docs/file-format/data-pages/compression/) compression
- Files are always sent in a daily path format: `TYPE_REPORT/YYYY/MM/DD/TIMESTAMP_NS/RANDOM_FILE_NAMES.snappy.parquet` (one or more files may be sent)

> ⚠️ Event deduplication
>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint] reported by reviewdog 🐶
MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[markdownlint-fix] reported by reviewdog 🐶

Suggested change
>
>

> All events are guaranteed to be sent, but there is no guarantee that an event will be sent only once. Therefore, events must always be deduplicated.

## Event data

### Impressions

| Attribute | Type | Description |
| :------------- | :------------ | :-------------------------------------------------------------- |
| event_id | String | Unique event identifier **(deduplication key)** |
| session_id | String | Unique user session identifier |
| user_id | String | Unique user identifier |
| ad_id | String | Advertisement identifier |
| campaign_id | String | Unique campaign identifier |
| request_id | String | Unique ad query request identifier |
| ad_type | String | Type of advertisement that generated the event |
| placement_name | String | Name of the placement where the ad was displayed |
| context | String | Context in which the ad was displayed |
| created_at | Timestamp UTC | Timestamp of when the event occurred |
| site | String | Site brand identifier |

### Views

| Attribute | Type | Description |
| :------------- | :------------ | :-------------------------------------------------------------- |
| event_id | String | Unique event identifier **(deduplication key)** |
| session_id | String | Unique user session identifier |
| user_id | String | Unique user identifier |
| ad_id | String | Advertisement identifier |
| campaign_id | String | Unique campaign identifier |
| request_id | String | Unique ad query request identifier |
| ad_type | String | Type of advertisement that generated the event |
| placement_name | String | Name of the placement where the ad was displayed |
| context | String | Context in which the ad was displayed |
| created_at | Timestamp UTC | Timestamp of when the event occurred |
| site | String | Site brand identifier |

### Clicks

| Attribute | Type | Description |
| :------------- | :------------ | :-------------------------------------------------------------- |
| event_id | String | Unique event identifier **(deduplication key)** |
| session_id | String | Unique user session identifier |
| user_id | String | Unique user identifier |
| ad_id | String | Advertisement identifier |
| campaign_id | String | Unique campaign identifier |
| request_id | String | Unique ad query request identifier |
| ad_type | String | Type of advertisement that generated the event |
| placement_name | String | Name of the placement where the ad was displayed |
| context | String | Context in which the ad was displayed |
| created_at | Timestamp UTC | Timestamp of when the event occurred |
| site | String | Site brand identifier |

### Conversions

| Attribute | Type | Description |
| :--------- | :------------ | :----------------------------------------------------- |
| event_id | String | Unique conversion event identifier |
| session_id | String | Unique user session identifier |
| user_id | String | Unique user identifier |
| order_id | String | Unique retail order identifier **(deduplication key)** |
| channel | String | Channel identifier |
| placed_at | Timestamp UTC | Order timestamp |
| site | String | Site brand identifier |

### Conversion items

| Attribute | Type | Description |
| :---------------- | :-------- | :-------------------------------------------------------------- |
| event_id | String | Unique identifier of the event that generated the conversion (view or click) |
| session_id | String | Unique user session identifier |
| user_id | String | Unique user identifier |
| order_id | String | Unique retail order identifier **(deduplication key)** |
| product_sku | String | Product identifier **(deduplication key)** |
| ad_id | String | Unique advertisement identifier |
| campaign_id | String | Unique campaign identifier |
| request_id | String | Unique ad query request identifier |
| ad_size | String | Size of the media used in the advertisement |
| ad_type | String | Type of advertisement that generated the conversion |
| placement_name | String | Name of the placement where the ad was displayed |
| context | String | Context in which the ad was displayed |
| event_created_at | Timestamp | Timestamp of when the event occurred |
| price | Float | Product price (regular) |
| promotional_price | Float | Product promotional price |
| quantity | Int | Quantity of items sold |
| total_value | Float | Total item value (quantity * min(price, promotional_price)) |
Loading
Loading