[ Free tool · UTM builder for paid ads ]

Tracking links your analytics will

A tagged link for every platform you run, and the ChatGPT Ads file with per-ad tracking.

[ Build your pack ]

[ 01 · Destination ]

The page your ad lands on.
Use the exact page, so each click is measured against it.

[ 02 · Platforms ]
Where the links will run

Each platform gets the source and medium GA4 expects.

[ 03 · Campaign ]

The name in your reports.
Same name on every platform. Lowercase and hyphens applied for you.

chatgpt

Where the click comes from.
Set per platform. Editable on the pack page.

cpc

The kind of traffic.
GA4 picks the channel from this. cpc and paid-social read as paid.

The keyword or audience you paid for.
Search campaigns only. Empty fields are left out.

Which ad in the campaign.
{ad_id} on ChatGPT Ads, the creative name elsewhere.

GA4's ID for cost imports.
Only if you upload spend to GA4.

[ 04 · Your pack ]What you want back

[ Why clean UTMs matter ]

Paid clicks are the ones you paid for

An untagged campaign lands in GA4 as direct or unassigned, next to traffic that cost nothing. The report then says your best channel is the one you cannot attribute, and the budget moves the wrong way.

The pair decides the channel

GA4 reads utm_medium against a fixed list to pick a channel, and checks utm_source against its own list of social sites. Put facebook in both and a paid campaign reports as organic social.

Casing splits a campaign in half

Google and google are two sources in GA4. One inconsistent link in a launch and a single campaign reports as two, each with half the conversions.

[ The pairings this tool uses ]

These are the values GA4 sorts into each channel. ChatGPT is on none of its lists yet, so it lands in Paid Other until you add a custom channel group.

Platformutm_sourceutm_mediumGA4 channel
ChatGPT AdschatgptcpcPaid Other
Google AdsgooglecpcPaid Search
Meta Adsfacebookpaid-socialPaid Social
LinkedIn Adslinkedinpaid-socialPaid Social
TikTok Adstiktokpaid-socialPaid Social
EmailnewsletteremailEmail

[ Naming conventions ]

Lowercase, hyphens, no dates

autumn-promotion. Underscores and capitals split one campaign across two rows, and the date is already on every row of the report.

One campaign name everywhere

The same utm_campaign on every platform is what lines the channels up side by side in one report.

utm_content is for the ad

Creative name elsewhere, {ad_id} on ChatGPT Ads. The UTM is a join key, so keep notes in the ad platform.

[ FAQ ]

What is a UTM parameter?+

A tag on the end of a link that tells your analytics where the click came from. The five standard fields are utm_source, utm_medium, utm_campaign, utm_term and utm_content, plus utm_id for GA4 cost imports. Every mainstream analytics tool reads them.

Which fields do I actually need?+

Source, medium and campaign. Those three are what make GA4 treat the session as a campaign at all. Term, content and id are optional and each answers a narrower question.

What is the difference between source and medium?+

Source is where the click came from, medium is what kind of traffic it is. The common mistake is putting facebook in both: facebook is the source, paid-social is the medium when it is a paid Meta ad. GA4 picks the channel from the medium.

Where does ChatGPT Ads traffic land in GA4?+

In Paid Other. GA4 classifies paid traffic from utm_medium, so chatgpt/cpc is correctly read as paid, but chatgpt is not on its managed list of search or social sources, so it does not become Paid Search. Add a custom channel group with a rule for source = chatgpt and it reports on its own row.

Can I customise UTMs on ChatGPT Ads?+

Yes, three ways. Put them in the ad's destination URL. Paste a suffix into Landing page query parameters at campaign level, which appends what is missing at delivery and supports the {ad_id}, {ad_group_id} and {campaign_id} macros. Or set them per ad in the Edit Ad dialog. This tool builds the first two.

Are UTMs case sensitive?+

In GA4, yes. Google and google report as separate sources, which splits one campaign into two rows. Everything this tool builds is lowercase for that reason.

What is utm_id for?+

It is the key GA4 joins your uploaded ad spend to your session data. You only need it if you import cost data. Most ad platforms can fill it automatically with a campaign ID macro.

What breaks attribution most often?+

Tagging internal links, which overwrites the original campaign on every page view. Adding UTMs to a URL that then redirects, which can strip them before the analytics script runs. And leaving an empty field as utm_term=, which some platforms count as a real value.

ChatGPT Ads

Want us to run the campaign as well?

We run ChatGPT Ads across 31 markets, with per-ad tracking from day one.