Campaign Tracking
Describe the campaign behind an action using consistent fields across URL parameters and API signals. Resolve the effective values once, then use the same values in supported context, storage, reporting, and exports.
Implementation status: This page describes the target Campaign Tracking contract. Resolution, compact parsing, nine-field propagation, storage, and export support require implementation and end-to-end verification. Confirm support for your integration before relying on these rules; publication of this guide does not establish deployed conformance.
Campaign Fields
Use exact lowercase URL keys. API requests use the numeric SignalValueType identifiers in the shared Values envelope. Compact keys are parameter-transport representations, not an additional explicit API override.
| Effective field and meaning | URL key | SignalValueType | ID | Compact key |
TrackingCampaignID Stable campaign identifier at the same granularity as CampaignName. | utm_id | SessionTrackingCampaignID | 406 | TCI |
TrackingCampaignName Readable initiative or agreed TV flight name. | utm_campaign | SessionTrackingCampaignName | 407 | TCM |
TrackingSource Publisher, referring program, station, or feed. | utm_source | SessionTrackingSource | 408 | TSC |
TrackingMedium Marketing or distribution channel, such as tv. | utm_medium | SessionTrackingMedium | 409 | TMD |
TrackingContent Creative, version, placement, or link discriminator. | utm_content | SessionTrackingContent | 410 | TCN |
TrackingTerm Paid keyword; omit when inapplicable. | utm_term | SessionTrackingTerm | 411 | TTM |
TrackingSourcePlatform Platform managing or buying the traffic. | utm_source_platform | SessionTrackingSourcePlatform | 412 | TSP |
TrackingCreativeFormat Creative format, such as video, display, or native. | utm_creative_format | SessionTrackingCreativeFormat | 413 | TCF |
TrackingMarketingTactic Known tactic, such as prospecting or remarketing. | utm_marketing_tactic | SessionTrackingMarketingTactic | 414 | TMT |
TCM means CampaignName; TCN means Content. TrackingContext and compact TCX are exclusively internal and have no external mapping. TrackingID is an operation/correlation identifier, distinct from TrackingCampaignID.
Authoring Campaign Links
- For new manually authored campaign links, supply Source, Medium, and CampaignName. Centrally managed campaigns also need a stable CampaignID; document a partner exception when no ID is available. Intelligent TV has its own optional flight and QR rules below.
- Use lowercase, hyphen-separated company-authored labels; preserve exact controlled medium codes, including underscores. Preserve externally assigned identifier case and historical meaning unless an approved mapping exists.
- Keep channel and response mechanism separate: television is the medium; QR scanning is the response mechanism. Do not use Station or Flight as Medium, or an audience segment as Term.
- Supply Content when distinguishing creatives or links. Supply SourcePlatform, CreativeFormat, and MarketingTactic only when known; omit inapplicable fields rather than inventing values.
- Keep secrets, recipient identities, email addresses, phone numbers, MAC addresses, and device IDs out of campaign labels. Provider click IDs remain separate opaque evidence.
https://brand.example/offer/?utm_source=publisher-a&utm_medium=display&utm_campaign=fall-2026&utm_id=campaign-1042&utm_content=banner-v2
These are link-authoring requirements. Ordinary business actions and partial API actions without campaign tags remain valid; missing optional tracking must not stop the action.
Input Resolution and Limits
- Prefer valid explicit API evidence, then URL evidence, then request-context fallback. Parse the supplied origination URL, or the current page URL when none is supplied, and use that same URL for LandingURL.
- Decode once using UTF-8. Preserve submitted case and pair order. Within each input, trim outer whitespace, skip missing, blank, or invalid candidates, and take the first valid nonblank duplicate. Differently cased or unknown URL keys are not recognized fields.
- Where exact compact and UTM keys both occur, valid compact evidence wins within that input. Compact Base64 transport must encode UTF-8 bytes; do not directly apply
btoa to arbitrary Unicode.
- Resolve full campaign identity before truncation. Limit each effective external field to 128 Unicode characters, retaining leading characters without splitting a code point. Apply the same bounded representation before all supported projections. Never use a truncated ID as a new lookup key.
- Preserve the submitted URL and raw evidence under existing retention controls. Do not rewrite original or signed URLs, or strip arbitrary
utm_* parameters as part of resolution.
Keep Campaign ID and Name Together
The highest-priority input containing either campaign member establishes the pair. Use a lookup only in the configured tenant/partner scope; there is no assumed global campaign registry.
| Input | Effective identity |
| Known ID with a name | Use the registered ID and canonical name; reconcile a mismatched name. |
| Known ID alone | Fill its registered name when a scoped lookup is available. |
| Unknown partner ID | Preserve the ID and any supplied name without claiming registry validation. |
| Name alone | Keep the name; fill an ID only through an unambiguous scoped match. |
| Ambiguous name | Keep the name; do not choose an arbitrary ID. |
Do not borrow a missing ID or name from a lower-priority input unless a scoped lookup confirms the same identity. Matching names alone do not prove matching IDs. If explicit API evidence changes the campaign, omit URL-derived Content, Term, SourcePlatform, CreativeFormat, and MarketingTactic unless their association with the selected campaign is confirmed. Keep explicit API details; Source and Medium can still describe the incoming channel.
Intelligent TV QR Parameters
Only the Intelligent TV landing page translates sr to Source (408), fr to CampaignName (407), and composes CreativeRef/AiringRef into Content (410). Shared SDK/server processing does not interpret these product keys or infer behavior from hostnames or ActionTypes. Source and Flight retain valid short-alias-first, UTM-second precedence.
TrackingContent Composition
| Valid nonblank references | TrackingContent / utm_content / signal 410 |
| Both cr and ar | cr~ar (CreativeRef first, AiringRef second) |
| Only cr | cr |
| Only ar | ar |
| Neither | Valid utm_content, otherwise omit Content |
Trim and validate each decoded reference independently, using the first valid nonblank duplicate. Reserve ~ as the separator; it is not allowed inside either reference, even when percent-encoded. If one reference is invalid, use the other valid reference, then UTM fallback. Invalid nonblank values qualify for existing once-per-operation adjustment accounting; absent or blank values alone do not.
The composed or singleton candidate precedes utm_content within page evidence. Valid explicit API Content still takes precedence. Keep fallback and invalid evidence for generic conflict accounting. Compose from full valid references before applying the 128-Unicode-character effective field limit. Do not truncate each component first or use a truncated composite as a lookup key.
For example, cr=product-30s-v2&ar=air-847291 produces product-30s-v2~air-847291. Preserve the original supplied cr and ar separately in the immutable landing/handoff snapshot and preserve the unmodified landing URL as LandingURL (419). Never recover originals by splitting effective Content, which may be truncated, a singleton, or UTM fallback. Structured snapshot collection and persistence still require integration verification.
See the approved four-parameter QR URL contract for requiredness, examples, and the distinction between station, flight, creative, and airing.
Silent Adjustments and Internal Accounting
Continue the business action after a tracking adjustment. The target internal mechanism records CampaignTrackingConflict = 222 once per logical operation for qualifying disagreement, conflicting duplicates, invalid nonblank candidates, truncation, campaign mismatch reconciliation, or attempts to set external TrackingContext. Caller-supplied UsageIDs cannot authorize or suppress this internal signal.
Missing or blank optional values, identical duplicates, ordinary trimming/decoding, and ordinary registered-name enrichment do not trigger it by themselves. Do not add per-field warnings, TrackingFindings, external diagnostic payloads, or per-rule UsageIDs. Async processing and retries of the same logical operation must not inflate the count. This count describes affected operations, not field counts, conversion attribution, or downstream delivery.
API Example and Verification
This fragment illustrates tracking signals inside Values; use your provisioned keys and include the other inputs required by your ActionType.
{
"ActionKeyToken": "<provisioned-action-key>",
"Values": [
{ "SignalValueType": 406, "DataType": 0, "UnitType": 0, "Value": "campaign-1042", "OptionIDs": {} },
{ "SignalValueType": 407, "DataType": 0, "UnitType": 0, "Value": "fall-2026", "OptionIDs": {} },
{ "SignalValueType": 408, "DataType": 0, "UnitType": 0, "Value": "publisher-a", "OptionIDs": {} },
{ "SignalValueType": 409, "DataType": 0, "UnitType": 0, "Value": "display", "OptionIDs": {} },
{ "SignalValueType": 410, "DataType": 0, "UnitType": 0, "Value": "banner-v2", "OptionIDs": {} }
]
}
For equivalent URL and API evidence, verify equivalent effective fields through context, persistence, supported reports, and exports. Test conflicting duplicates, invalid values, Unicode limits, campaign-pair reconciliation, external TrackingContext exclusion, and once-only adjustment accounting. Enum or column presence alone does not prove support.