Skip to main content
Concrete CMS → RedditIntegration guide

Connecting Concrete CMS to Reddit

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. Reddit's audience blocks trackers at rates well above the web average, which makes its browser pixel the least reliable in this list and its server-side path the most necessary. The join between them succeeds or fails on one thing: whether the rdt_cid click identifier reaches the Concrete CMS order before the conversion happens, because Reddit can only match a conversion it can tie back to a click it recognizes.

Free30 minutesNo obligation

Specific to this pair

Reddit Conversions API for Concrete CMS: catch rdt_cid past the cache

Cached Concrete CMS landing pages skip PHP, so capture rdt_cid with server-side GTM or exclude those URLs from caching, then store it as an order attribute. Send Purchase server-side from the commerce add-on's order-completed event with the order ID as conversion ID, value, currency and hashed email. Server-only is defensible for small stores.

Reddit traffic arrives with rdt_cid on the URL and often with the Reddit Pixel blocked, so the server event is the one you can count on. On a Concrete CMS site the trap is the full page cache: if the landing page is served from cache, PHP never runs, and any block or template logic that reads rdt_cid simply does not execute. Capture it with something that runs on every request, such as a server-side GTM container on your own subdomain, or exclude URLs carrying the parameter from the cache.

Write the captured rdt_cid to the session, then to an order attribute in the commerce add-on's order-created listener. Send a Purchase server-side from the order-completed event with the order ID as conversion ID, value and currency from the order, and the hashed email the buyer entered at checkout. Because so few Reddit visitors run the pixel, sending server-only and dropping the browser Purchase is a defensible simplification for a small Concrete store, and it removes the deduplication question.

If the Concrete site is brochure-only, the Reddit conversion is a form enquiry rather than an order, and the event becomes Lead, sent from the form's server-side submit handler.

Concrete CMS → Reddit · what breaks

Why this join usually fails — Concrete CMS → Reddit

  1. 01

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

    An audience that blocks trackers by habit

    Coverage on Reddit traffic is structurally lower than on other networks. That is a property of who uses Reddit, not a broken implementation, and chasing a benchmark this audience will not give you wastes time.

  4. 04

    Nothing reconciles afterwards

    Reddit Ads Manager reports events received and matched. Expect lower match rates here than on Meta or Google and report the gap rather than explaining it away — reconcile against your own records for the same window.

Concrete CMS → Reddit · the fix

What working looks like — Concrete CMS → Reddit

  • The rdt_cid click identifier on every order

  • Conversions arriving in Reddit

    Events appear in Reddit Ads Manager and become usable for optimization, at coverage that will be lower than you are used to elsewhere.

  • Reconciled against the source

Concrete CMS → Reddit · architecture

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

    Reddit needs a click to match

    Reddit matches server events on the click identifier and hashed customer information. Reddit's Conversions API is younger than Meta's and its documentation moves, so confirm the current endpoint and required fields directly rather than from an integration blog post.

  3. 3

    The identifier is the bridge

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

    Reddit deduplicates on a conversion identifier carried by both the pixel and the server event. Because so much Reddit traffic never runs the pixel, sending server-side only is a legitimate choice here in a way it rarely is elsewhere — and it removes the deduplication problem entirely. Decide deliberately rather than running both and hoping.

Concrete CMS → Reddit · normal or broken

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

Normal, not a fault

  • The rdt_cid click identifier present on the order

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

  • Deduplicated correctly

    Reddit deduplicates on a conversion identifier carried by both the pixel and the server event. Because so much Reddit traffic never runs the pixel, sending server-side only is a legitimate choice here in a way it rarely is elsewhere — and it removes the deduplication problem entirely. Decide deliberately rather than running both and hoping.

  • Reconciles with the source

Actually broken

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

    Coverage on Reddit traffic is structurally lower than on other networks. That is a property of who uses Reddit, not a broken implementation, and chasing a benchmark this audience will not give you wastes time.

  • Nobody has reconciled it

Concrete CMS → Reddit · diagnose

Diagnostic order — Concrete CMS → Reddit

  1. 01

    Count orders carrying the rdt_cid 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 click-identifier capture on Reddit traffic specifically

    Not across all traffic. A healthy site-wide capture rate routinely hides a poor one on exactly the segment you are paying for.

  5. 05

    Read the match rate, not the success message

    Reddit Ads Manager reports events received and matched. Expect lower match rates here than on Meta or Google and report the gap rather than explaining it away — reconcile against your own records for the same window.

Concrete CMS → Reddit · prove

How it gets proven — Concrete CMS → Reddit

Source of truth

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

  • The rdt_cid click identifier confirmed present on a live order.
  • Capture rate measured on Reddit traffic specifically, and the pixel-versus-server-only decision documented.
  • Order attribute confirmed populated on a purchase through a cached page.

Concrete CMS → Reddit · free audit

What we check in the free audit

  • Count orders carrying the rdt_cid click identifier
  • Follow one real conversion end to end
  • Identify which commerce add-on is in use
  • Measure click-identifier capture on Reddit traffic specifically
  • 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 → Reddit · when not to buy

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

  • Measure identifier coverage yourself first — pull your last hundred orders and count how many carry the rdt_cid 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 Reddit strategy is organic community presence rather than ads, none of this applies — that traffic has no click identifier by definition.

Concrete CMS → Reddit · what we deliver

What gets built — Concrete CMS → Reddit

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

    Server events to the Reddit Conversions API with the click identifier and hashed customer information.

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

You can add it to the site header, but a large share of Reddit visitors block it. Capture rdt_cid server-side and send purchases through the Reddit Conversions API from the order event.

Free · 30 min

Get Concrete CMS and Reddit joined properly

Free30 minutesNo obligation