---
title: Snap Pixel
slug: snap-pixel
docTags: 
createdAt: 2026-01-27T20:29:25.533Z
---

**Snap Pixel** is Snapchat's conversion tracking pixel for measuring ad performance and building retargeting audiences. This destination loads the Snapchat Pixel JavaScript SDK in the browser and forwards ecommerce and engagement events to Snapchat Ads. There is no server-side component.

# Getting Started

This is a device-mode destination. The Snapchat Pixel SDK is loaded automatically — no manual script installation is required. You will need:

- **Pixel ID** — your Snapchat Pixel ID, found in your Snapchat Ads Manager under **Assets > Pixels**.

Optionally:

- **Product Content ID Field** — which product field to use as the content ID: `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`. **If you are also using the Snapchat Conversions API destination, this must be set to the same value in both destinations** so that item IDs match between client-side and server-side events.

# Connecting to the Snap Pixel 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 **Snap Pixel** from the destination catalog.
5. Enter the destination name and your **Pixel ID**.
6. Optionally configure the **Product Content ID Field**.
7. Click **"Create"** to connect.

# Events

All Snap Pixel events include a `client_dedup_id` parameter set to the Chord `messageId` for deduplication.

# 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 Events

**Snap SDK call:** `snaptr("track", "PAGE_VIEW", { client_dedup_id })`

No additional attributes are sent with page events.

# Identify Events

Re-initializes the Snap Pixel with user data for enhanced matching. The event is skipped if neither email nor phone is available.

**Snap SDK call:** `snaptr("init", pixelId, userData)`

| Snap Attribute      | Chord Source (Priority Order) | Notes                  |
| ------------------- | ----------------------------- | ---------------------- |
| `user_email`        | `context.traits.email`        | Omitted if not present |
| `user_phone_number` | `context.traits.phone`        | Omitted if not present |

# Order Completed

Fires a purchase conversion event with order and product data.

**Snap SDK call:** `snaptr("track", "PURCHASE", orderData)`

| Snap Attribute   | Chord Source (Priority Order)                                                | Notes                                                                     |
| ---------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| `item_ids`       | Each product's configured field → `sku` → `variant_id` → `product_id` → `id` | Array of products with a resolvable ID; omitted if empty                  |
| `item_category`  | `properties.products[0].category`                                            | First product's category                                                  |
| `currency`       | `properties.currency`                                                        | Defaults to `"USD"`                                                       |
| `price`          | `properties.value`                                                           | Total value after quantity (`price × qty`); formatted to 2 decimal places |
| `transaction_id` | `properties.order_id`                                                        | Used by Snapchat to deduplicate against CAPI Purchase events              |
| `number_items`   | Count of products with a resolvable ID                                       |                                                                           |

# Product Added

Fires an add-to-cart event using the first product from `properties.products[]`.

**Snap SDK call:** `snaptr("track", "ADD_CART", productData)`

| Snap Attribute  | Chord Source (Priority Order)                                                 | Notes                                                     |
| --------------- | ----------------------------------------------------------------------------- | --------------------------------------------------------- |
| `item_ids`      | First product's configured field → `sku` → `variant_id` → `product_id` → `id` | Single-element array; event skipped if no ID resolves     |
| `item_category` | `properties.products[0].category`                                             |                                                           |
| `currency`      | `properties.currency`                                                         | Defaults to `"USD"`                                       |
| `price`         | `properties.value`                                                            | Total value after quantity; formatted to 2 decimal places |

# Product Viewed

Same attributes as **Product Added** above.

**Snap SDK call:** `snaptr("track", "VIEW_CONTENT", productData)`

# Checkout Started

Same attributes as **Order Completed** above.

**Snap SDK call:** `snaptr("track", "START_CHECKOUT", orderData)`

# Subscription Created

Same attributes as **Order Completed** above.

**Snap SDK call:** `snaptr("track", "SUBSCRIBE", orderData)`

# Products Searched

**Snap SDK call:** `snaptr("track", "SEARCH", searchData)`

| Snap Attribute  | Chord Source (Priority Order)                   | Notes |
| --------------- | ----------------------------------------------- | ----- |
| `search_string` | `properties.query` > `properties.search_string` |       |

# Payment Info Entered

No additional attributes beyond the dedup ID.

**Snap SDK call:** `snaptr("track", "ADD_BILLING", { client_dedup_id })`

# Product Added to Wishlist

Same attributes as **Product Added** above.

**Snap SDK call:** `snaptr("track", "ADD_TO_WISHLIST", productData)`

# Signed Up

No additional attributes beyond the dedup ID.

**Snap SDK call:** `snaptr("track", "SIGN_UP", { client_dedup_id })`

# Initialization

The plugin loads `https://sc-static.net/scevent.min.js` and calls `snaptr("init", pixelId)`, optionally with `user_email` and `user_phone_number` if available on the triggering event. Before the script loads, a queue buffers any calls to `snaptr`.

The plugin manages SDK loading state (`fresh` → `loading` → `loaded`/`failed`) to prevent duplicate script loads. If the script fails to load, subsequent events are silently dropped.

# CSP Requirements

If your site uses a Content Security Policy, allow the following domains:

| Directive     | Domain                  |
| ------------- | ----------------------- |
| `script-src`  | `https://sc-static.net` |
| `connect-src` | `https://sc-static.net` |

***

**Updated 23 Apr 2026**
