Skip to main content
Craft → SnapchatIntegration guide

Connecting Craft CMS to Snapchat

Craft is a developer-oriented CMS, usually built bespoke by an agency, which means the implementation is whatever that agency decided and nothing is standard. Snapchat's audience is young, almost entirely mobile and inside an in-app browser, which is the least forgiving environment for browser-based tracking anywhere in paid media. The join between them succeeds or fails on one thing: whether the ScCid click identifier reaches the Craft Commerce order before the conversion happens, because Snapchat can only match a conversion it can tie back to a click it recognizes.

Free30 minutesNo obligation

Specific to this pair

Craft CMS to Snapchat: ScCid into an order field before checkout

Only Craft stores selling to young mobile buyers should wire Snapchat. Record ScCid on first load through a small uncached controller action, copy it to an order custom field, and send PURCHASE to the Snapchat Conversions API with value, currency, hashed email and phone, and an event ID shared with the Snap Pixel.

Snapchat is only worth wiring for Craft sites that sell to a young, mobile audience, such as a Commerce store for apparel, beauty or event tickets. For the B2B lead sites Craft often powers, Snapchat is the wrong channel and no integration changes that. Where it fits, the work is getting ScCid from Snapchat's in-app browser onto the Commerce order: read it on the first page load, write it to the session server-side immediately, and copy it to an order custom field in the order-complete listener.

Server-side capture matters more on Craft than usual, because static caching can serve the landing page HTML without running the code that would set a cookie, and the in-app browser may discard cookies anyway. A small uncached controller action that records ScCid on first load is the reliable version. Send PURCHASE to the Snapchat Conversions API with value, currency, the stored ScCid, hashed email and phone, and an event ID shared with the Snap Pixel.

Because Craft templates are bespoke, the Snap Pixel may have been added in a layout file, a tag manager and a plugin at different times. Inventory where it fires before adding a server source, or PURCHASE counts two or three times. Also test checkout inside the in-app browser; payment steps that open a new window or a 3-D Secure pop-up fail more often there.

Craft → Snapchat · what breaks

Why this join usually fails — Craft → Snapchat

  1. 01

    The ScCid click identifier never reaches Craft

    Craft's template caching and static caching plugins both serve stored output, and because every build is custom, where the capture code lives differs per site. There is no standard place to look.

  2. 02

    Every install is bespoke

    There is no standard Craft setup, so an approach that worked on another Craft site may have nothing to attach to on this one. Read the build before quoting.

  3. 03

    The in-app browser loses the identifier

    Snapchat traffic arrives through a webview with inconsistent storage. Anything relying on the identifier still being in the browser at conversion time will lose a large share, and the loss is invisible unless you measure capture on Snapchat traffic specifically.

  4. 04

    Nothing reconciles afterwards

    Snapchat Ads Manager shows received and matched events. Arriving is not the test — deduplicated and matched is. Reconcile against your own records for the same window.

Craft → Snapchat · the fix

What working looks like — Craft → Snapchat

  • The ScCid click identifier on every order

  • Conversions arriving in Snapchat

    Events appear in Snapchat Ads Manager, deduplicated against the pixel, and become usable for optimization.

  • Reconciled against the source

    Craft CMS's own records are the reference, not either dashboard.

Craft → Snapchat · architecture

How Craft and Snapchat actually connect

  1. 1

    Craft CMS holds the truth

    Craft installs are bespoke by nature. Establish how this particular build models a completed order before assuming anything transfers from another Craft site.

  2. 2

    Snapchat needs a click to match

    Snapchat matches server events on the click identifier and hashed customer information. Send both — on this traffic the fallback carries a meaningful share of the events.

  3. 3

    The identifier is the bridge

    The ScCid click identifier, captured at the visit and carried into the Craft Commerce order.

  4. 4

    The event source decides reliability

    Fire from the event listener in PHP rather than a Twig template, which may be cached.

  5. 5

    Deduplication at the destination

    Snapchat deduplicates on a client-supplied event identifier shared between the pixel and the Conversions API, the same pattern as Meta. Mismatched identifiers mean double counting.

Craft → Snapchat · normal or broken

Working vs. broken, side by side — Craft → Snapchat

Normal, not a fault

  • The ScCid click identifier present on the order

    Visible on the record itself in Craft CMS, not merely captured somewhere on the site.

  • Sent from the Craft Commerce order-complete event

  • Deduplicated correctly

    Snapchat deduplicates on a client-supplied event identifier shared between the pixel and the Conversions API, the same pattern as Meta. Mismatched identifiers mean double counting.

  • Reconciles with the source

    Snapchat's count and Craft CMS's records agree within a few percent over a closed window.

Actually broken

  • The ScCid click identifier missing on most records

    Craft's template caching and static caching plugins both serve stored output, and because every build is custom, where the capture code lives differs per site. There is no standard place to look.

  • Sent from the browser

    There is no standard Craft setup, so an approach that worked on another Craft site may have nothing to attach to on this one. Read the build before quoting.

  • Counted twice, or not at all

    Snapchat traffic arrives through a webview with inconsistent storage. Anything relying on the identifier still being in the browser at conversion time will lose a large share, and the loss is invisible unless you measure capture on Snapchat traffic specifically.

  • Nobody has reconciled it

    The dashboard shows a number and no one has compared it to Craft CMS.

Craft → Snapchat · diagnose

Diagnostic order — Craft → Snapchat

  1. 01

    Count orders carrying the ScCid click identifier

  2. 02

    Follow one real conversion end to end

  3. 03

    Read how this specific build handles order completion

    Assumptions carried from another Craft project are the main source of wasted time here.

  4. 04

    Measure capture rate on Snapchat traffic alone

    The in-app browser is the failure case, so a healthy overall rate can hide a poor one on precisely the traffic you are paying for.

  5. 05

    Read the match rate, not the success message

    Snapchat Ads Manager shows received and matched events. Arriving is not the test — deduplicated and matched is. Reconcile against your own records for the same window.

Craft → Snapchat · prove

How it gets proven — Craft → Snapchat

Against Craft CMS's own records, not against either platform's dashboard.

Source of truth

Craft Commerce's order records in your own database, filtered to completed.

  • The ScCid click identifier confirmed present on a live order.
  • Capture rate measured on Snapchat traffic specifically, and deduplication confirmed on a real conversion.
  • Order custom field confirmed populated on an order placed as an anonymous visitor through cache.

Craft → Snapchat · free audit

What we check in the free audit

  • Count orders carrying the ScCid click identifier
  • Follow one real conversion end to end
  • Read how this specific build handles order completion
  • Measure capture rate on Snapchat traffic alone
  • Read the match rate, not the success message

Checked against

Craft Commerce's order records in your own database, filtered to completed.

Get my free conversion tracking audit

Free30 minutesNo obligation

Craft → Snapchat · when not to buy

When you don't need this — Craft → Snapchat

  • If Snapchat already reports conversions that reconcile against Craft CMS's records within a few percent, this join is working and there is nothing to buy.
  • Measure identifier coverage yourself first — pull your last hundred orders and count how many carry the ScCid click identifier.
  • If the original agency is still engaged, the fastest path is usually specifying the field and having them add the hook.
  • If your customers are not in Snapchat's age profile, the channel is the wrong question and no measurement work fixes that.

Craft → Snapchat · what we deliver

What gets built — Craft → Snapchat

  • Identifier capture into Craft

    Capture the identifier and store it as a custom field on the order through a Craft event listener, server-side.

  • Event source: the Craft Commerce order-complete event

    Fire from the event listener in PHP rather than a Twig template, which may be cached.

  • Dispatch to Snapchat

    Server events to the Snapchat Conversions API with the click identifier, hashed customer data and a matched event identifier.

  • Reversals where they exist

    Refunds and cancelled orders are recorded against the order.

Written guarantee

95%+ tracking accuracy

Measured against Craft Commerce's order records in your own database, filtered to completed.. Miss it and we keep working at no cost.

Get my free conversion tracking audit

From $400 · See packages

FAQ

Craft → Snapchat questions, answered

The ScCid is often dropped by Snapchat's in-app browser or never captured because a cached page didn't run the capture code. Record it server-side on first load.

Free · 30 min

Get Craft and Snapchat joined properly

Free30 minutesNo obligation