By Ryan Richardson · Published 8 October 2026
Persisting campaign parameters into the payment record is step 45 (Part VII), marked hard difficulty, almost nobody does this. It's the single most consequential fix in this part of the book because it's a one-line change with an outsized effect on what a business can later prove.
Write the stored campaign parameters onto the payment record's metadata at checkout creation, specifically onto payment_intent_data.metadata on the same call that creates the session. Session metadata does not propagate to the payment intent or the charge, and the payment intent is what appears in dashboard search, in the export, and in the reporting tool. Skipping that one line is the commonest reason a business cannot reconcile platform-reported sales against the bank.
Twelve metadata keys cover it: a visit identifier, first-touch and last-touch copies of source, medium, campaign and content, the two platform click identifiers, and the page variant where one is running. The ceiling is fifty keys, forty-character key names, five-hundred-character values, strings only, no personal data (it appears in exports).
Click one of the business's own live advertisements, on a phone, the way a stranger would. Browse, open a second page, leave, come back from history. Buy the cheapest thing on offer, on a real card. Open that transaction in the payment provider and read its metadata. The campaign and the creative should be sitting there in writing. If either is empty, stop the launch and fix it before spending another dollar.
Writing tags to the checkout session only, which is the single commonest fault. A stored campaign silently overwritten by an empty one on a later, untagged visit, which is by far the most frequent failure overall, making every returning buyer look direct.
| Claim | Value | Source |
|---|---|---|
| Where metadata must be written | payment_intent_data.metadata at checkout creation, not session metadata | Measured in Real Money, Field Manual |
| Metadata limits | ceiling of 50 keys, 40-character key names, 500-character values, strings only | Measured in Real Money, Field Manual |
| Commonest campaign-loss fault | a stored campaign overwritten by an empty one on a later visit | Measured in Real Money, Field Manual |
| Matrix status for this step | Hard difficulty, almost nobody does this, automated tooling | The Sixty Steps matrix |