Campaign Name and UTM Builder

Four fields in. A campaign name and its matching UTM string out. Validated against real platform character limits before you copy. No signup.

1. The four fields

Four fields, joined by underscores, lowercase only. Anything else about this campaign already exists as a column you can filter on.

2. The link
Load sample v

Output

Campaign name 0 chars
t1_launch_webinar_2026-09
Tagged URL 0 chars
https://example.com/webinar?utm_source=linkedin
Validation Waiting

    Want more PMM tools and templates?

    Join the newsletter. Positioning, launch playbooks, persona updates - no spam, just value.

    How to use the campaign name and UTM builder

    1. Set the tier first. Tier is the field no ad platform, analytics tool or BI table stores for you. Without it you can never compare T1 launch spend against T3 spend at the end of the year.
    2. Pick the motion, not the objective. The bidding objective is already a setting you can filter on. The go-to-market motion - launch, demand gen, brand, nurture, event, ABM - is not stored anywhere else.
    3. Name the offer, not the funnel stage. Funnel stage is derivable from the offer with a two-column lookup. Encoding both means two fields carrying one fact, and they will disagree eventually.
    4. Use the start month as the period. A YYYY-MM period makes an alphabetical sort a chronological sort, and it separates the same offer run twice in one year.
    5. Leave channel out of the name. utm_source and utm_medium already carry it. Keeping it out means the same launch on search, social and email shares one campaign value and rolls up as a single row.
    6. Read the validation panel before you copy. It flags forbidden characters, uppercase, wrong field counts, character limits per platform, and medium values that will not match a default channel group.
    7. Export the schema once, then share it. The JSON export is the artifact you attach to an agency statement of work so the convention gets validated rather than interpreted.

    Why the name and the UTM have to come from one input

    Google Ads can auto-inject a campaign ID into a tracking template, but there is no ValueTrack parameter that inserts the campaign name. So the ID is machine-generated and the name is hand-typed, which is the structural reason the campaign name in the platform and the utm_campaign value on the landing page slowly stop describing the same thing.

    Generating both from one field set removes the typing step entirely. That is the whole design of this builder, and the full argument for the four fields, the per-platform limits and the retrofit plan lives in the companion guide:

    Read: Campaign Naming Convention: A Four-Field System You Can Retrofit

    Related templates and guides

    Frequently asked questions

    What does this campaign name generator do?

    It takes four fields - tier, motion, offer and period - and emits both the campaign name you paste into the ad platform and the matching UTM string for the landing page. Because both come from the same inputs, the two can never drift apart.

    Why only four fields?

    A field belongs in a campaign name only if no tool you already own gives you that column. Geo, objective, audience and format all exist as native columns or as utm_content, so encoding them again multiplies your unique campaign names for no reporting gain.

    Which character limits does the builder check?

    Google Ads at 256 characters, Microsoft Advertising at 128, Amazon Ads at 128 for sellers and 116 for vendors, and a 100-character working ceiling for analytics event parameter values, which is usually the tightest cap in the chain.

    What characters are forbidden in a campaign name?

    Anything outside a-z, 0-9, underscore and hyphen. Spaces, ampersands, hashes, percent signs, plus signs, equals signs, question marks and slashes all carry structural meaning in a URL query string and either percent-encode into a second version of the same campaign or break the parameter outright.

    Can I change the allowed values for each field?

    Yes. Every field accepts a custom value as well as the presets. Type your own motion or offer and the builder validates it against the same character rules, then includes it in the schema export.

    What is the schema export for?

    It downloads your four fields and their allowed values as a JSON file. Attach it to an agency statement of work or drop it in your marketing ops repo so the convention is validated rather than interpreted.

    Does the builder store my data?

    No. Everything runs in your browser. Your inputs are saved to your own device via localStorage so they survive a refresh, and nothing is sent anywhere.

    Why does my medium value trigger a warning?

    Analytics matches medium against fixed patterns to assign a default channel group. The paid channels need a medium matching cp, ppc, retargeting or paid. Organic Social needs one of social, social-network, social-media or sm. Display needs display, banner, expandable, interstitial or cpm, and Referral needs referral, app or link. A medium outside every documented list lands in Unassigned unless you build a custom channel group.