Skip to main content
Concrete CMS → PinterestIntegration guide

Connecting Concrete CMS to Pinterest

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. Pinterest is a save-now-buy-later platform, which makes its attribution window the loosest of any network here and its conversion data the most delayed. The join between them succeeds or fails on one thing: whether the epik click identifier reaches the Concrete CMS order before the conversion happens, because Pinterest can only match a conversion it can tie back to a click it recognizes.

Free30 minutesNo obligation

Specific to this pair

Concrete CMS stores on Pinterest: worth it with a product catalog

Pinterest fits Concrete CMS stores selling visual products; brochure sites need only the tag's lead event. For orders, get the order ID to the browser through an uncached block or endpoint so tag and server share event_id. Store _epik on the order via the commerce add-on's order event, and check the add-on can export a catalog feed.

Pinterest fits a Concrete site only when it sells visual products through a commerce add-on: prints, crafts, local makers, a museum shop. For a brochure site the conversion is a contact form, and Pinterest rarely drives those. If that is you, the Pinterest tag with a lead event is enough and the Conversions API is not worth building.

For a store, the hard part is deduplication on a cached site. The tag's checkout event and your server event need the same event_id, and the obvious value is the order ID. On Concrete the confirmation page may be served from full page cache, so the order ID has to reach the browser through something not cached, such as a block excluded from the cache or a small endpoint that reads it from the session. Without that, the tag and the server cannot agree on an ID and every order counts twice. Store the _epik value on the order through the add-on's order event so the server event can carry it.

Pinterest's shopping formats need a product catalog. Check whether your commerce add-on can export a feed Pinterest accepts. If it cannot, Pinterest has purchase events with no products behind them, and product-level reporting and dynamic retargeting are unavailable.

Concrete CMS → Pinterest · what breaks

Why this join usually fails — Concrete CMS → Pinterest

  1. 01

    The epik 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 save-now-buy-later gap

    Pinterest's whole behaviour model is saving something for later. A share of the revenue it genuinely drives arrives months after the click and outside any attribution window, and no build changes that. Say it before anyone sets a target.

  4. 04

    Nothing reconciles afterwards

    Pinterest Ads Manager reports events received and their match status. A successful API call is not a matched conversion — reconcile Pinterest's reported conversions against your own records for the same window and expect a structural gap from the save-then-buy delay.

Concrete CMS → Pinterest · the fix

What working looks like — Concrete CMS → Pinterest

  • The epik click identifier on every order

  • Conversions arriving in Pinterest

    Conversions appear in Pinterest Ads Manager against the campaign, with the value you sent, and become usable for optimization.

  • Reconciled against the source

Concrete CMS → Pinterest · architecture

How Concrete CMS and Pinterest 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

    Pinterest needs a click to match

    Pinterest matches server events using the click identifier where present and hashed customer information otherwise. Confirm current endpoint and field names against Pinterest's own documentation — its Conversions API has been through more than one revision.

  3. 3

    The identifier is the bridge

    The epik 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

    Pinterest deduplicates on event_id, so the tag and the server event must carry the same value for the same conversion. Pinterest volumes are often low enough that a doubling reads as a good week rather than a bug, which is why this needs testing deliberately rather than assuming.

Concrete CMS → Pinterest · normal or broken

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

Normal, not a fault

  • The epik click identifier present on the order

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

  • Deduplicated correctly

    Pinterest deduplicates on event_id, so the tag and the server event must carry the same value for the same conversion. Pinterest volumes are often low enough that a doubling reads as a good week rather than a bug, which is why this needs testing deliberately rather than assuming.

  • Reconciles with the source

Actually broken

  • The epik 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

    Pinterest's whole behaviour model is saving something for later. A share of the revenue it genuinely drives arrives months after the click and outside any attribution window, and no build changes that. Say it before anyone sets a target.

  • Nobody has reconciled it

Concrete CMS → Pinterest · diagnose

Diagnostic order — Concrete CMS → Pinterest

  1. 01

    Count orders carrying the epik 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

    Check the event delivery and match reporting in Pinterest Ads Manager

    Not the API response code. A 200 means Pinterest accepted the payload, not that it matched it to a click.

  5. 05

    Read the match rate, not the success message

    Pinterest Ads Manager reports events received and their match status. A successful API call is not a matched conversion — reconcile Pinterest's reported conversions against your own records for the same window and expect a structural gap from the save-then-buy delay.

Concrete CMS → Pinterest · prove

How it gets proven — Concrete CMS → Pinterest

Source of truth

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

  • The epik click identifier confirmed present on a live order.
  • Deduplication confirmed on a real conversion, and the attribution window your reporting uses stated explicitly.
  • Order attribute confirmed populated on a purchase through a cached page.

Concrete CMS → Pinterest · free audit

What we check in the free audit

  • Count orders carrying the epik click identifier
  • Follow one real conversion end to end
  • Identify which commerce add-on is in use
  • Check the event delivery and match reporting in Pinterest Ads Manager
  • 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 → Pinterest · when not to buy

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

  • Measure identifier coverage yourself first — pull your last hundred orders and count how many carry the epik 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 Pinterest is a small test line on your media plan, the Conversions API is more work than the signal is worth this quarter.

Concrete CMS → Pinterest · what we deliver

What gets built — Concrete CMS → Pinterest

  • 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 Pinterest

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

  • 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 → Pinterest questions, answered

Yes, by sending events from the commerce add-on's order event on your server. There is no native connector to rely on, so check the marketplace for your version.

Free · 30 min

Get Concrete CMS and Pinterest joined properly

Free30 minutesNo obligation