Implement the standard
Point an agent or tool at two JSON documents. Everything it needs to generate a conforming UTM is in them.
Step 1
Endpoints
https://www.schemafirst.org/standards/utm/standard.jsonLatest standard in this major versionhttps://www.schemafirst.org/standards/utm/0.1Pinned to version 0.1 — use in productionhttps://www.schemafirst.org/standards/utm/sources/index.jsonRegistry indexhttps://www.schemafirst.org/standards/utm/sources/{source}.jsonIndividual source record
All endpoints are public, CORS-enabled, and served as JSON.
Step 2
Agent instruction
Add this to a system prompt or tool description. The agent fetches the standard and follows it.
Generate UTM parameters using the SchemaFirst UTM Standard 0.1.0.
Standard: https://www.schemafirst.org/standards/utm/standard.json
Source Registry: https://www.schemafirst.org/standards/utm/sources/index.json
Rules:
- Require campaign, source, and distribution_context. If any is missing, return
{"status": "requires_context", "missing": [...]} and do not guess.
- Resolve source against the registry's canonical_source and aliases.
- utm_source and utm_medium come only from the resolved source record.
- utm_campaign = campaign.slug if present, otherwise slugify campaign.name.
- Do not add source, medium, platform, creative, audience, or dates to utm_campaign.
- Set other utm_* parameters only from supplied inputs.Step 3
Conformance cases
A conforming implementation produces exactly these outputs. They are computed from the published standard.
Organic social
Input { "campaign": { "name": "Spring Product Launch" }, "source": "linkedin", "distribution_context": "organic", "destination_url": "https://example.com/product" }Expected output { "status": "ok", "standard_version": "0.1.0", "parameters": { "utm_source": "linkedin", "utm_medium": "social", "utm_campaign": "spring_product_launch" }, "url": "https://example.com/product?utm_source=linkedin&utm_medium=social&utm_campaign=spring_product_launch" }Alias resolves to canonical source
Input { "campaign": { "slug": "spring_product_launch" }, "source": "fb", "distribution_context": "paid" }Expected output { "status": "ok", "standard_version": "0.1.0", "parameters": { "utm_source": "facebook", "utm_medium": "paid_social", "utm_campaign": "spring_product_launch" } }Existing UTMs are replaced, other params kept
Input { "campaign": { "name": "Spring Product Launch" }, "source": "email", "distribution_context": "owned", "destination_url": "https://example.com/product?ref=nav&utm_source=old#pricing" }Expected output { "status": "ok", "standard_version": "0.1.0", "parameters": { "utm_source": "email", "utm_medium": "email", "utm_campaign": "spring_product_launch" }, "url": "https://example.com/product?ref=nav&utm_source=email&utm_medium=email&utm_campaign=spring_product_launch#pricing" }Missing context
Input { "campaign": { "name": "Spring Product Launch" }, "source": "linkedin" }Expected output { "status": "requires_context", "missing": [ "distribution_context" ] }Unsupported context
Input { "campaign": { "name": "Spring Product Launch" }, "source": "sms", "distribution_context": "paid" }Expected output { "status": "unsupported_context", "source": "sms", "supported": [ "owned" ] }