By Ryan Richardson · Published 8 October 2026
A sale happens. The payment record carries no campaign, source or creative information, so there's no way to say which advertisement, or which piece of content, actually produced it. The sale is real. It's just un-creditable.
Campaign tags written into a checkout session don't automatically reach the payment record. They have to be written onto the payment intent's own metadata, on the same call that creates the session, because session-level metadata doesn't propagate to the payment intent or the charge, and the payment intent is what shows up in dashboard search, exports and reporting. Skipping that one line is the commonest reason a business can't reconcile its platform numbers against its bank.
Capture the five standard campaign parameters at the edge, before any page renders, so a visitor who leaves within a second hasn't taken the answer with them. Keep two stored copies, first-touch (written once, never overwritten) and last-touch (overwritten only by a visit that itself carries parameters). Write the stored values onto the payment record's own metadata at checkout creation, not just the checkout session. Buy your own product through a live advertisement once before anyone else's money is involved, then search the payment dashboard for the campaign and creative identifiers. If they're there, attribution works. If not, you have a page that decorates links.
| Claim | Value | Source |
|---|---|---|
| Most common fault in losing a campaign tag | a stored campaign overwritten by an empty one on a later visit | Measured in Real Money, Field Manual |
| Where campaign metadata has to be written to appear in dashboard search and exports | payment_intent_data.metadata, on the session-creation call, not the checkout session alone | Measured in Real Money, Field Manual |