Skip to main content
Square → RedditIntegration guide

Connecting Square to Reddit

Square holds the transaction, and for most Square businesses the majority of those transactions are a card tapped at a counter with no browser anywhere near them. 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 Square payment or 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

Square to Reddit Conversions API: online orders, server-side only

Capture rdt_cid on landing, keep it on your server, and attach it to the Square Online order before hosted checkout. Send completed online orders from the Square payment webhook to Reddit's Conversions API as Purchase, with the Square order ID as conversion ID, amount, currency and hashed email. Report counter-sales lift separately, never as Reddit's.

For a Square business, Reddit is usually a test for a product with a hobby or niche community, such as coffee, sneakers or gear, and almost always for Square Online sales rather than the counter. Reddit traffic blocks the pixel more than most, and Square Online checkout is hosted, so the browser side contributes very little. Capture rdt_cid on landing, keep it on your server, and attach it to the order before the shopper reaches Square's checkout.

Send completed online orders from the Square payment webhook to the Reddit Conversions API as Purchase, with the Square order ID as the conversion ID, amount and currency from the order, and the buyer's hashed email from the order or customer record. Server-only is a reasonable choice for this pair; if you run the pixel as well, it has to send the same order ID. Reflect refunds at least in your own reporting, since returns on hobby goods are common.

The specific misread: a Reddit thread mentions your shop, foot traffic rises, and counter sales jump with no rdt_cid anywhere. That lift is real and unattributable. Report it beside the measured online orders rather than adding it to the campaign.

Square → Reddit · what breaks

Why this join usually fails — Square → Reddit

  1. 01

    The rdt_cid click identifier never reaches Square

    Square Online checkout is hosted, so the identifier must be carried deliberately rather than by cookie. For in-person payments there is no identifier at all unless the customer booked an appointment or is in the customer directory — a walk-in who taps a card cannot be joined to an ad click by anyone.

  2. 02

    Most of the revenue has no browser

    A card at a terminal has no click, no session and no identifier. That is a boundary to measure rather than a bug to fix, and the honest deliverable includes how much of your revenue sits outside it.

  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.

Square → Reddit · the fix

What working looks like — Square → Reddit

  • The rdt_cid click identifier on every transaction

  • 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

Square → Reddit · architecture

How Square and Reddit actually connect

  1. 1

    Square holds the truth

    Square records every payment with its amount, channel and, where the customer is identified, a link to the customer directory. That directory is the only bridge between a counter payment and anything that happened online.

  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 Square payment or order.

  4. 4

    The event source decides reliability

    Subscribe to payment and order events and send from your server. This covers online orders cleanly, and covers in-person payments only for the share you can join to an identity.

  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.

Square → Reddit · normal or broken

Working vs. broken, side by side — Square → Reddit

Normal, not a fault

  • The rdt_cid click identifier present on the transaction

  • Sent from the Square payment webhook

  • 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

    Square Online checkout is hosted, so the identifier must be carried deliberately rather than by cookie. For in-person payments there is no identifier at all unless the customer booked an appointment or is in the customer directory — a walk-in who taps a card cannot be joined to an ad click by anyone.

  • Sent from the browser

    A card at a terminal has no click, no session and no identifier. That is a boundary to measure rather than a bug to fix, and the honest deliverable includes how much of your revenue sits outside it.

  • 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

Square → Reddit · diagnose

Diagnostic order — Square → Reddit

  1. 01

    Count transactions carrying the rdt_cid click identifier

  2. 02

    Follow one real conversion end to end

  3. 03

    Split Square revenue by channel before anything else

    Online versus in-person. Every subsequent number depends on that split, and blending them makes both unreadable.

  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.

Square → Reddit · prove

How it gets proven — Square → Reddit

Source of truth

Square's transaction list, split by channel — online and in-person are different questions.

  • The rdt_cid click identifier confirmed present on a live transaction.
  • Capture rate measured on Reddit traffic specifically, and the pixel-versus-server-only decision documented.
  • The in-person join rate measured and stated as a number before any coverage claim is made.

Square → Reddit · free audit

What we check in the free audit

  • Count transactions carrying the rdt_cid click identifier
  • Follow one real conversion end to end
  • Split Square revenue by channel before anything else
  • Measure click-identifier capture on Reddit traffic specifically
  • Read the match rate, not the success message

Checked against

Square's transaction list, split by channel — online and in-person are different questions.

Get my free conversion tracking audit

Free30 minutesNo obligation

Square → Reddit · when not to buy

When you don't need this — Square → Reddit

  • Measure identifier coverage yourself first — pull your last hundred transactions and count how many carry the rdt_cid click identifier.
  • If nearly all your revenue is in person with no appointments and no identified customers, there is very little here to attribute and we will say so rather than build a bridge to nothing.
  • If your Reddit strategy is organic community presence rather than ads, none of this applies — that traffic has no click identifier by definition.

Square → Reddit · what we deliver

What gets built — Square → Reddit

  • Identifier capture into Square

    Capture the click identifier and carry it into Square Online checkout, and for in-person work use an appointment booking as the bridge so the eventual payment can be joined through the customer record.

  • Event source: the Square payment webhook

    Subscribe to payment and order events and send from your server. This covers online orders cleanly, and covers in-person payments only for the share you can join to an identity.

  • Dispatch to Reddit

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

  • Reversals where they exist

    Square exposes refunds clearly, and in hospitality and services voids and comps are frequent enough that wiring the reversal matters.

Written guarantee

95%+ tracking accuracy

Measured against Square's transaction list, split by channel — online and in-person are different questions.. Miss it and we keep working at no cost.

Get my free conversion tracking audit

From $400 · See packages

FAQ

Square → Reddit questions, answered

Capture rdt_cid on landing, link it to the order before checkout, and send completed orders from the Square payment webhook to Reddit's Conversions API with the order ID.

Free · 30 min

Get Square and Reddit joined properly

Free30 minutesNo obligation