What is the Snapchat Conversions API?
Snap’s Conversions API lets a server pass web conversion events straight to Snapchat through a server-to-server integration, next to the events the Snap Pixel sends from the shopper’s browser. Snap recommends that web advertisers use it alongside the pixel.
With WeProfit, a Shopify purchase reaches Snapchat as PURCHASE, sent from WeProfit’s servers to the Snap Pixel you connect. Snapchat is included in every WeProfit plan, with Meta, Google, TikTok, Pinterest, X Ads, Microsoft (pilot), Reddit, LinkedIn and Taboola.
Connect Snapchat in WeProfit
Connect your Shopify store first. Snapchat delivery needs two values: your Snap Pixel ID and a Conversions API token. Only an Organization Admin of your Snapchat business can create that token.
- In Snap Ads Manager, open the menu at the top left, select Events Manager and click your pixel. Copy the Pixel ID shown at the top: a long code with dashes.
- To create the token, open the menu in Ads Manager and select Business Details. Go to Conversions API Tokens and select Generate Token, then copy the token.
- Use that Conversions API token. The access token shown in Events Manager’s Event Source Setup is a different type of token and does not work for this connection.
- In WeProfit, open Ad Networks > Snapchat and select Add destination. Enter the Snap Pixel ID and the Conversions API token. A label is optional and helps when you connect more than one pixel.
- Leave Conditions empty to send every eligible event, or add conditions such as country, event, order value or campaign to limit what this pixel receives. Then select Connect Snapchat.
- Select Send test. WeProfit sends a test event to Snap’s validation endpoint, which checks whether an event is built correctly, and shows whether Snap accepted it. WeProfit’s Snapchat destination has no test event code, so there is no test mode for live events.
Purchases and checkout events sent to Snapchat
From a Shopify store, WeProfit sends Snapchat your purchases and two checkout steps that its web pixel records: checkout started and payment information added. Purchases come from Shopify’s order webhook, and each order’s purchase goes at most once to each connected pixel.
WeProfit sends an event to Snapchat only when it carries at least one of the match keys Snap asks for: a hashed email address, a hashed phone number, or both an IP address and a user agent. It sends a PURCHASE only with a value and a currency. It skips events that miss them, and a skipped event gets no row in the delivery log.
Snap’s list of standard events has no lead event, so WeProfit skips leads for Snapchat rather than sending them under another name. Custom events and refunds are not sent to Snapchat, and nothing withdraws a purchase Snapchat already received.
Each purchase carries the order total as Shopify reports it, in the order’s currency, the products with their IDs, quantities and prices, the number of items and the Shopify order ID as order_id.
| Store event | Snapchat event |
|---|---|
| Checkout started | START_CHECKOUT |
| Payment information added | ADD_BILLING |
| Purchase | PURCHASE |
Customer details sent with each purchase
To help Snapchat match a purchase to a Snapchat user, WeProfit sends details from the Shopify order, hashed with SHA-256: the buyer’s email address and phone number, and the first and last name, city, state, ZIP code and country from the shipping address, or else the billing address. The IP address and user agent go unhashed. When WeProfit has it, it also sends an external ID, a SHA-256 hash of WeProfit’s visitor ID.
When WeProfit has them, the purchase also carries Snapchat’s click ID and cookie: the ScCid value that Snapchat adds to your landing page URL when someone clicks your ad, sent as sc_click_id, and the Snap Pixel’s _scid cookie, sent as sc_cookie1. WeProfit does not load the Snap Pixel, so the _scid cookie only exists when your store runs it.
Snap Pixel and Conversions API: avoid counting twice
Snap matches a Snap Pixel event with a Conversions API event for the same Pixel ID when the pixel’s client_dedup_id equals the server’s event_id and the event names match, within 48 hours. For PURCHASE events, Snap can also match the pixel’s transaction_id with the order_id of the server event, for up to 30 days.
WeProfit does not load the Snap Pixel. It sends Snapchat’s events from its server only, each with its own event ID. A purchase goes out as pur_ followed by a store code and the Shopify order ID, such as pur_a1b2c3d4-6012345678901, once per order and pixel, and a retry reuses that ID. Its order_id is the Shopify order’s numeric ID, such as 6012345678901, not the order number your customers see.
If a Snap Pixel also reports purchases for the same Pixel ID, for example through an app or your theme code, its event IDs will not equal WeProfit’s. Snap then falls back to the order ID: it can match the two copies only if the pixel reports the same Shopify order ID as its transaction_id. Check how your pixel reports purchases, keep one purchase sender per Snap Pixel unless you have confirmed the IDs match, and compare a test purchase in Snapchat Ads Manager with the WeProfit delivery log.
Check delivery in the CAPI delivery log
Open Ad Networks > Snapchat in WeProfit and scroll to the CAPI delivery log. It lists every server-side event sent to Snapchat with the columns Created, Event, Destination, Event ID, Status, Attempts and Error, and you can filter by destination, event and status. The Purchase filter also finds PURCHASE events.
The log shows WeProfit’s own event ID, such as pur_6012345678901; Snapchat receives it with the store code, such as pur_a1b2c3d4-6012345678901. The log has no value column, so check a purchase’s value on the Events page in WeProfit. The Orders page shows each order’s delivery per connected network in its Networks column.
A sent status means Snapchat accepted the event, not that it credited the order to an ad. If Snapchat rejects the token, WeProfit pauses the connection and shows a banner; a new token or a passing Send test turns it back on.
| Status | What it means |
|---|---|
| pending | Queued and not sent yet. |
| sent | Snapchat accepted the event. |
| failed | A temporary problem. WeProfit retries automatically for a few hours, with the same event ID. |
| dead | WeProfit gave up: Snapchat refused the event, with its message in the Error column, or the attempts ran out. |
| skipped disabled | The destination was switched off or paused when the event’s turn came. Events skipped while it is switched off are not sent later. |
| skipped pre install | The purchase of an order placed before WeProfit was installed. It is never sent. |
Snapchat ad spend: added by hand, not synced
WeProfit has no Snapchat ad account connection, so Snapchat spend is not synced automatically. Add it in one of three ways: as manual entries under Profit > Ad spend > Manual entries, with the date, amount, network, an optional campaign ID and an optional note; as a daily schedule, which books the same amount every day until you change it; or through the developer API.
Add the campaign ID to an entry when you want profit per Snapchat campaign: Attribution matches spend to attributed orders by campaign ID or name, and spend without a campaign counts at channel level. Snapchat campaigns usually show their IDs in Attribution, because there is no Snapchat ad account connection to look names up. A manual entry for a day takes priority over a daily schedule.
Campaign detail from your Snapchat ads
WeProfit files a visit under Snapchat Ads when it carries Snapchat’s ScCid click ID, or utm_source=snapchat with a paid medium. With Snap’s Auto-UTMs, it also reads the campaign ID and, where present, the ad ID. For the ad set, add WeProfit’s Snapchat URL template to each ad, after the question mark in the creative’s website URL.
The macros are case-sensitive: write {{adSet.id}}, not {{adset.id}}. Templates apply to new clicks only. In WeProfit’s own attribution an ad click counts for 30 days and the most recent click wins, which works like last click with a 30-day ad-click lookback. Snapchat credits conversions under its own attribution settings, so its numbers and WeProfit’s can differ for the same orders.
utm_source=snapchat&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_term={{adSet.name}}&utm_content={{creative.name}}&wpcid={{campaign.id}}&wpasid={{adSet.id}}&wpadid={{ad.id}}