Skip to main content
Concrete CMS → SnapchatIntegration guide

Connecting Concrete CMS to Snapchat

Concrete CMS is a self-hosted PHP CMS used by small organisations and agencies, typically with commerce added through an add-on rather than built in. 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 Concrete CMS 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

Concrete CMS to Snapchat CAPI: rarely the right channel

Snapchat fits only youth-facing Concrete CMS sites, such as event tickets or course signups. Capture the click ID with JavaScript on the first page view and post it to an uncached endpoint storing it in the session, then attach it at order or entry creation. Send one server conversion with hashed email and phone, sharing a deduplication ID.

Concrete runs sites for small organisations and agencies, and most of them are not selling to Snapchat's young audience. The cases that fit are youth-facing: event tickets, a local venue, a program or course signup. If yours is a professional-services or association site, skip Snapchat; no measurement work makes that audience match.

Where it does fit, the capture problem is doubled. Snapchat traffic arrives in an in-app browser with unreliable storage, and Concrete's full page cache means server-side code may not run on the landing page. Capture the Snapchat click ID with JavaScript on the first page view and post it immediately to an uncached endpoint that stores it in the session, then attach it to the order or form entry when the add-on or form listener creates the record. Waiting until checkout to read it from the browser loses a large share of Snap clicks.

The sane minimal setup is the pixel plus one server event for the conversion that matters, sent from the order or form event with hashed email and phone and a deduplication ID shared with the pixel. Do not send page-level events server-side from Concrete; the cache makes them unreliable and they add nothing the pixel does not already report.

Concrete CMS → Snapchat · what breaks

Why this join usually fails — Concrete CMS → Snapchat

  1. 01

    The ScCid click identifier never reaches Concrete CMS

    Full page caching and the add-on ecosystem both interfere. Because commerce is an add-on rather than core, where the order is created differs by which add-on is installed.

  2. 02

    Commerce as an add-on, not a core feature

    Which add-on is installed determines the entire integration surface, so nothing transfers between two Concrete sites without checking first.

  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.

Concrete CMS → Snapchat · the fix

What working looks like — Concrete CMS → 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

Concrete CMS → Snapchat · architecture

How Concrete CMS and Snapchat actually connect

  1. 1

    Concrete CMS holds the truth

    Self-hosted means you own and can query the data directly, which makes reconciliation straightforward once the identifier is present.

  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 Concrete CMS order.

  4. 4

    The event source decides reliability

    Fire server-side. Page caching means the confirmation template may not execute.

  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.

Concrete CMS → Snapchat · normal or broken

Working vs. broken, side by side — Concrete CMS → Snapchat

Normal, not a fault

  • The ScCid click identifier present on the order

  • Sent from the order-completed event from your commerce add-on

  • 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

Actually broken

  • The ScCid click identifier missing on most records

    Full page caching and the add-on ecosystem both interfere. Because commerce is an add-on rather than core, where the order is created differs by which add-on is installed.

  • Sent from the browser

    Which add-on is installed determines the entire integration surface, so nothing transfers between two Concrete sites without checking first.

  • 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

Concrete CMS → Snapchat · diagnose

Diagnostic order — Concrete CMS → Snapchat

  1. 01

    Count orders carrying the ScCid click identifier

  2. 02

    Follow one real conversion end to end

  3. 03

    Identify which commerce add-on is in use

    That decides where the order is created and what events exist to hook.

  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.

Concrete CMS → Snapchat · prove

How it gets proven — Concrete CMS → Snapchat

Source of truth

Your own database's order records, at agreed states.

  • 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 attribute confirmed populated on a purchase through a cached page.

Concrete CMS → Snapchat · free audit

What we check in the free audit

  • Count orders carrying the ScCid click identifier
  • Follow one real conversion end to end
  • Identify which commerce add-on is in use
  • Measure capture rate on Snapchat traffic alone
  • Read the match rate, not the success message

Checked against

Your own database's order records, at agreed states.

Get my free conversion tracking audit

Free30 minutesNo obligation

Concrete CMS → Snapchat · when not to buy

When you don't need this — Concrete CMS → Snapchat

  • Measure identifier coverage yourself first — pull your last hundred orders and count how many carry the ScCid click identifier.
  • If your Concrete site is brochure-only with enquiries by form, treat it as a lead-gen site rather than a commerce one.
  • If your customers are not in Snapchat's age profile, the channel is the wrong question and no measurement work fixes that.

Concrete CMS → Snapchat · what we deliver

What gets built — Concrete CMS → Snapchat

  • Identifier capture into Concrete CMS

    Capture the identifier and persist it as order attribute data through an event listener, server-side.

  • Event source: the order-completed event from your commerce add-on

    Fire server-side. Page caching means the confirmation template may not execute.

  • 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

    Order state changes recorded by the add-on.

Written guarantee

95%+ tracking accuracy

Measured against Your own database's order records, at agreed states.. Miss it and we keep working at no cost.

Get my free conversion tracking audit

From $400 · See packages

FAQ

Concrete CMS → Snapchat questions, answered

Only if you sell to a young audience, such as tickets or a venue. For B2B or association sites the channel is the wrong question.

Free · 30 min

Get Concrete CMS and Snapchat joined properly

Free30 minutesNo obligation