A product by MM Sanford
Campaign links your whole agency agrees on.
Tag Docket is the campaign-link registry for the paid-media teams inside agencies. Buyers mint tagged URLs and QR codes from the values the agency approved, on one screen with no wizard and no save dialog, and every link lands in a history the whole team can search.
It replaces the shared spreadsheet of UTM strings, and the GA4 report where
facebook and Facebook are two
different sources.
Tag Docket never changes a link after it ships.
The warning arrives before the link ships. The page check found a redirect that would have stripped the tagging off every click. It warns; it never blocks. The buyer decides.
Minted. The destination clears and the taxonomy stays, because the next link is usually the same campaign pointed somewhere else.
What it does
- Mints tagged links and QR codes from the values your agency approved, lowercased every time
- Filters out combinations that should never exist, like email traffic from facebook
- Keeps every link in one searchable history: who made it, when, and where it points now
- Gives printed pieces a short code you can point somewhere new after they ship
- Hands a client their whole link history whenever they ask. Export is always free
What it doesn’t
- Run your ads or log in to your ad accounts. You paste the link where it goes
- Grant itself access to a client’s GA4. Google requires a person to do that
- Change a link after it ships. A minted link is frozen, byte for byte
- Charge per link or per seat. The meter is clients
Approved values only
Forty links before lunch. None of them typed by hand.
The agency owns the taxonomy: the dimensions, the values, and the rules about which values go together. Picking a channel fills the fields it knows; the rest are dropdowns of approved values. When a buyer sets the channel to email, a pairing rule stops facebook being offered as a source, and the field says which choice narrowed it.
A pasted list goes in row by row, so one bad URL does not reject the other thirty-nine,
and duplicates are caught within the batch and against history. Platform macros like
{campaignid} pass through byte for byte, checked against
the platform’s pack, and every link records the pack version it was minted under.
Which values go together
When Channel is Email, Platform is one of MailchimpHubSpot
Not offered with Email: Facebook, Google, TikTok, Nextdoor.
One history
“What did we ship for them last spring?” One search.
Every link lands in a history with one always-visible filter row: the campaign string, the destination, the person and every dimension. The filters live in the address bar, so sharing a view with an account manager is pasting a link. People who have left the agency still appear against the work they did.
Bring the old spreadsheet. Links are imported exactly as they ran, nothing is written until you have seen it, and a row the taxonomy cannot read is still imported, flagged rather than refused.
- Morespring26_freeinspect_gutters Spring storm /r/k7m2qx
https://cedarroofing.example/gutters?utm_source=directmail&utm_medium=print&utm_campaign=spring26_freeinspect_gutters&utm_content=cedarrapidspriya@fieldworkmedia.example · today - Morespring26_freeinspect_gutters Spring storm
https://cedarroofing.example/gutters?utm_source=facebook&utm_medium=paidsocial&utm_campaign=spring26_freeinspect_gutters&utm_content=cedarrapidspriya@fieldworkmedia.example · today - MoreSpring_Gutters_FINAL
https://cedarroofing.example/gutters?utm_source=Facebook&utm_medium=Social&utm_campaign=Spring_Gutters_FINALjordan@fieldworkmedia.example · imported Imported as it ran · does not match the taxonomy - Morewinter26_seasonaldiscount_gutters Winter /r/p4hvw9 · retired
https://cedarroofing.example/gutters?utm_source=yardsign&utm_medium=offline&utm_campaign=winter26_seasonaldiscount_gutters&utm_content=cedarrapidssam@fieldworkmedia.example · 12 Jan 2026
Short codes for print
The landing page moves. The postcards follow.
A printed piece gets a short code, and its QR is drawn from that instead of the full tagged URL. When the client’s web team renames the page, point the code somewhere new and every mailer already in a letterbox follows. The tagging is not touched, so GA4 goes on seeing one campaign instead of two halves of one.
Codes redirect with a 302, never a 301, so the change reaches phones that scanned last week. Before a print run, Tag Docket reports the QR grid, printed width and module size, and warns when they fall below what print holds. A code you are done with is retired, never deleted.
- Code
- app.tagdocket.com/r/k7m2qx
- Was
- https://cedarroofing.example/spring-inspection
- Now
- https://cedarroofing.example/gutters
- Tagging
- utm_source=directmail &utm_medium=print &utm_campaign=spring26_freeinspect_gutters &utm_content=cedarrapids Unchanged since minted
The tagging never changes, so GA4 keeps seeing one campaign. Anything already printed follows.
- retargeted priya@fieldworkmedia.example · today
- minted priya@fieldworkmedia.example · 3 days ago
The client owns the record
When a client moves agencies, their links go with them.
The client owns the records about them; the agency owns the taxonomy and templates it wrote. Export is always available and always free, with values written out in full rather than as internal ids.
A transfer is requested by the receiving agency and approved by the client at their own address. The outgoing agency cannot block it. Every minted link arrives byte for byte, short codes move with it, and the outgoing agency keeps a read-only archive that stops counting against its plan.
Every feature, on tagdocket.comCedar Rapids Roofing Co.
Moving from Fieldwork Media
- 1 Requested by Northbound Digital, the receiving agency
- 2 Approved by the client at Cedar Rapids Roofing Co.’s own address. Fieldwork Media cannot block it
- 3 Transferred every minted link byte for byte, and control of its short codes
The client keeps
Every record about them
Fieldwork Media keeps
Its taxonomy, and a read-only archive off the plan
Why MM Sanford built it
Bad tagging cannot be cleaned up after GA4 records it.
MM Sanford’s day job is measurement: GA4 configuration, audits and reporting for teams
that have to defend their numbers. In that work the same problem keeps arriving from
upstream. GA4 treats Facebook and
facebook as different sources, and an MM Sanford
audit of a client’s live GA4 property found 13,494 sessions split across
social and
Social alone.
No report fixes that afterwards. So Tag Docket fixes it where the link is made: every value lowercased, unconditionally, with no setting to turn it off, and every link stored exactly as it shipped so the record matches what GA4 saw.
GA4 · SESSION SOURCE
Tagged by hand
- fb
Three rows. One platform.
Tagged through the registry
One row, Monday to Friday.
Who it’s for
Agency paid-media teams. Bought by the owner, used by the buyers.
The competitor is a spreadsheet. Every agency that asks about Tag Docket arrives holding one.
The agency owner who answers for the data
Every client’s links tagged the same way, a record of who shipped what, and a clean hand-over when a client leaves. Paste the agency’s website in settings and the app takes on its colour and logo, with brand colours adjusted for contrast.
The media buyer shipping forty links before lunch
If minting is slower than typing into the spreadsheet, the spreadsheet wins. So it is one screen, a preview that updates as you type, warnings beside the field, a keyboard path from paste to minted, and an emailed sign-in link instead of a password.
Pricing
From $49/month. Priced by client, never by link or seat.
Charging per record makes people avoid recording, so the meter is the number of clients. Seats are uncapped and export is always free.
| Plan | Live clients | Monthly |
|---|---|---|
| Starter | 5 | $49 /month |
| Studio | 50 | $99 /month |
| Agency | 100 | $199 /month |
| Agency+ | 250 | $299 /month |
| Custom | Unlimited | Quoted |
- Unlimited links, QR codes and short codes
- Unlimited seats
- Every platform pack
- Export, always free
Every plan includes every feature. Getting started is by request: we set your organization up, and your team signs in with an emailed link.
Tag Docket never changes a link after it ships.
Renaming a campaign changes how it is displayed, never a string already published. GA4 has already recorded the old value, and the QR code is already on a yard sign.
Bring the spreadsheet. We’ll bring the registry.
Tell us about your agency and the clients you tag for. We set up your organization, and your team signs in with an emailed link.