sixtysteps.co

Why can't I tell which ad paid for a sale, with UTMs on

By Ryan Richardson · Published 8 October 2026

Because the campaign tags were written onto the checkout session, not onto the payment itself. Session metadata does not propagate to the payment intent or the charge, and the payment intent is what appears in dashboard search, exports and reporting. Write the tags onto payment_intent_data.metadata on the same call that creates the session.

What this step is

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.

The gap, named precisely

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).

The five-minute check that proves it worked

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.

Where it breaks

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.

The numbers
ClaimValueSource
Where metadata must be writtenpayment_intent_data.metadata at checkout creation, not session metadataMeasured in Real Money, Field Manual
Metadata limitsceiling of 50 keys, 40-character key names, 500-character values, strings onlyMeasured in Real Money, Field Manual
Commonest campaign-loss faulta stored campaign overwritten by an empty one on a later visitMeasured in Real Money, Field Manual
Matrix status for this stepHard difficulty, almost nobody does this, automated toolingThe Sixty Steps matrix
Go deeper

This page covers one step. The full method is in the book.

Read the full part
sixtysteps.co
AI-powered growth for what's next. Sixty Steps is Onwards Analytics — a data and analytics firm.
Pages
Home Library The book — $7 About
Start
The Teardown — free [email protected]
© 2026 Onwards Analytics Every claim on this site carries a number, or is marked as reasoning.