---
title: Snapchat Conversions API
slug: snapchat-conversions-api
docTags: 
createdAt: 2025-06-02T18:47:30.053Z
---

The **Snapchat Conversions API** (CAPI) is a server-side integration that sends event data directly from Chord CDP to Snapchat's servers. Unlike the Snap Pixel (which runs in the browser), the Conversions API operates in cloud mode — events are sent server-to-server, making them resilient to ad blockers and browser tracking restrictions.

Snapchat recommends using the Conversions API alongside the Snap Pixel for maximum data coverage. When both are configured, Snapchat automatically deduplicates events using the `client_dedup_id` field, which Chord CDP sets to the event's `messageId` on both sides.

# Getting Started

This is a cloud-mode destination. You will need:

- **Pixel ID** — found in your Snapchat Ads Manager under **Events Manager > Pixel Details**
- **Access Token** — your Conversions API token, found in **Snapchat Ads Manager > Business Details**

Optionally:

- **Test Mode** — when enabled, events are sent to Snapchat's `/validate` endpoint and appear in the Snap Events Manager debug tool without affecting live reporting
- **Product Content ID Field** — which product field to use as `item_id` when sending events: `sku`, `product_id`, or `variant_id`. Defaults to `sku`. If the configured field is absent on a product, it falls back through `sku → variant_id → product_id → id`. **This must match the Item ID format in your Snap product catalog and must be set to the same value as the Snap Pixel destination.**

# Connecting to the Snapchat Conversions API CDP Destination

:::BlockQuote
**Warning:** Before connecting destinations in the Chord CDP, please verify with all Destination owners that all **non-Chord CDP** configured destinations are **disabled**. Running external destinations alongside configured Chord CDP destinations **can result in duplicate events downstream.**
:::

1. Log into the Chord data platform.
2. Navigate to the CDP.
3. Click the **"Add"** button next to Destinations.
4. Select **Snapchat Conversions API** from the destination catalog.
5. Enter the destination name, **Pixel ID**, and **Access Token**.
6. Optionally configure **Test Mode** and **Product Content ID Field**.
7. Click **"Create"** to connect.

# Event Mapping

| Chord Event                 | Snap Event        |
| --------------------------- | ----------------- |
| `page`                      | `PAGE_VIEW`       |
| `Order Completed`           | `PURCHASE`        |
| `Product Added`             | `ADD_CART`        |
| `Product Viewed`            | `VIEW_CONTENT`    |
| `Checkout Started`          | `START_CHECKOUT`  |
| `Subscription Created`      | `SUBSCRIBE`       |
| `Products Searched`         | `SEARCH`          |
| `Payment Info Entered`      | `ADD_BILLING`     |
| `Product Added to Wishlist` | `ADD_TO_WISHLIST` |
| `Signed Up`                 | `SIGN_UP`         |

Page, track, and screen events are forwarded. Identify events are not forwarded.

# Common Event Fields

These fields are included on every event sent to Snapchat.

| Snap Field                | Chord Source                            | Notes                                      |
| ------------------------- | --------------------------------------- | ------------------------------------------ |
| `event_name`              | *(mapped from event — see table above)* |                                            |
| `event_time`              | `timestamp`                             |                                            |
| `event_id`                | `messageId`                             | Used for deduplication with the Snap Pixel |
| `event_source_url`        | `context.page.url`                      |                                            |
| `data_processing_options` | *(hardcoded)* `false`                   |                                            |

# User Data

| Snap Field          | Chord Source (Priority Order)                                                                                   | Notes                     |
| ------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------- |
| `external_id`       | `userId` > `anonymousId`                                                                                        | Array                     |
| `email`             | `context.traits.email`                                                                                          |                           |
| `phone`             | `context.traits.phone`                                                                                          |                           |
| `gender`            | `context.traits.gender`                                                                                         |                           |
| `firstName`         | `context.traits.firstName`                                                                                      |                           |
| `lastName`          | `context.traits.lastName`                                                                                       |                           |
| `birthday`          | `context.traits.birthday`                                                                                       |                           |
| `city`              | `context.traits.address.city`                                                                                   |                           |
| `state`             | `context.traits.address.state`                                                                                  |                           |
| `zip`               | `context.traits.address.zip` > `context.traits.address.postalCode`                                              |                           |
| `country`           | `context.traits.address.country`                                                                                |                           |
| `client_ip_address` | `context.ip`                                                                                                    | Not hashed                |
| `client_user_agent` | `context.userAgent`                                                                                             | Not hashed                |
| `madid`             | `context.device.advertisingId`                                                                                  | Mobile ad ID              |
| `idfv`              | `context.device.id`                                                                                             | iOS identifier for vendor |
| `sc_click_id`       | `properties.click_id` > `integrations["Snap Conversions Api"].click_id` > `ScCid` query parameter from page URL | Snap click ID             |
| `sc_cookie1`        | `integrations["Snap Conversions Api"].uuid_c1`                                                                  | Snap cookie value         |

# Custom Data

These fields are sent in the `custom_data` block on all events.

| Snap Field      | Chord Source (Priority Order)                   | Notes                                                                  |
| --------------- | ----------------------------------------------- | ---------------------------------------------------------------------- |
| `currency`      | `properties.currency`                           | Defaults to `"USD"`                                                    |
| `value`         | `properties.value`                              | Total value after quantity (`price × qty` per the Chord tracking plan) |
| `num_items`     | Count of products with a resolvable `item_id`   |                                                                        |
| `order_id`      | `properties.order_id`                           |                                                                        |
| `search_string` | `properties.query` > `properties.search_string` |                                                                        |

# Products

Sent as a `products` array on events that include product data. Omitted if no products are present.

| Snap Field      | Chord Source (Priority Order)                                 | Notes                              |
| --------------- | ------------------------------------------------------------- | ---------------------------------- |
| `item_id`       | Configured field → `sku` → `variant_id` → `product_id` → `id` | Must match Item ID in Snap catalog |
| `item_category` | `properties.products[].category`                              |                                    |
| `brand`         | `properties.products[].brand`                                 |                                    |

# Deduplication

Chord CDP sends the same `messageId` as `client_dedup_id` on both the Snap Pixel and the Conversions API. Snapchat uses this field to automatically deduplicate events when both destinations process the same user action.

For **Purchase** events, Snapchat additionally deduplicates on `transaction_id`. Chord CDP sets this to `properties.order_id` on both the Pixel and CAPI, so no additional configuration is required.

For deduplication to work correctly:

- Both the Snap Pixel and Snapchat Conversions API destinations must be enabled in Chord CDP
- **Product Content ID Field** must be set to the same value in both destinations

# Testing and Validation

After connecting the destination:

1. Enable **Test Mode** in the destination settings to send events to Snapchat's `/validate` endpoint
2. Trigger test events and confirm they appear in the **Snap Events Manager debug tool**
3. Disable Test Mode before going live
4. After 24–48 hours, check **Events Manager > Diagnostics** to verify match rates and deduplication rates

***

**Updated 23 Apr 2026**
