Paid search
UTM builder for Google Ads campaigns.
Google Ads already tags clicks with gclid, so UTMs are for everything that isn't Google Analytics: your CRM, your attribution tool, your BI warehouse. This builder starts from the google / cpc convention GA4 expects and keeps ValueTrack macros intact so one final URL suffix covers every ad.
Your campaign URL
Enter a destination URL.
How EndFrame parses this
- utm_source
- utm_medium
- cpc
- utm_campaign
- brand-search-us
- utm_term
- {keyword}
- utm_content
- {creative}
- utm_source_platform
- google-ads
The Google Ads convention
What each parameter should say for Google Ads.
| Parameter | Value | Why |
|---|---|---|
| utm_source | Matches the source GA4 assigns from auto-tagging, so manually tagged and gclid-tagged sessions land in the same row. | |
| utm_medium | cpc | cpc, ppc, and paid are all grouped into Paid Search by GA4, but cpc is the value auto-tagging uses. |
| utm_campaign | brand-search-us | ValueTrack has no campaign-name macro (only {campaignid}), so name it by hand or use the numeric ID. |
| utm_term | {keyword} | ValueTrack fills in the keyword that matched. Add {matchtype} in utm_content if you report by match type. |
| utm_content | {creative} | The ad ID, so you can compare creatives without reading the ad platform. |
Example tagged link
https://www.example.com/landing-page?utm_source=google&utm_medium=cpc&utm_campaign=brand-search-us&utm_term={keyword}&utm_content={creative}&utm_source_platform=google-ads
What to know before you paste it into Google Ads
Put it in the final URL suffix, not each ad
Set the tagged query string once as the account-level Final URL suffix. Every campaign, ad group, and ad inherits it, and a naming change is one edit instead of hundreds.
Auto-tagging still wins in GA4
GA4 uses gclid for Google Ads attribution. Leave auto-tagging on; your UTMs feed the tools that cannot read gclid. If you turn on manual-tag override in GA4, the UTM values replace the auto-tagged ones.
Macros must stay unencoded
Google reads {keyword} literally. If a builder encodes the braces to %7Bkeyword%7D the macro never expands and your reports fill with the literal text. This builder restores the braces after encoding.
Frequently asked
Do I need UTM parameters if Google Ads auto-tagging is on?
For GA4 alone, no. gclid carries campaign, ad group, keyword, and creative. You need UTMs the moment another system (a CRM, an attribution platform, a data warehouse, or a server-side tracker) has to know the visit came from a Google Ads campaign.
Which ValueTrack parameters can I use in UTMs?
The common ones are {keyword}, {creative}, {campaignid}, {adgroupid}, {matchtype}, {network}, {device}, and {placement}. Each expands at click time. There is no campaign-name macro, so utm_campaign is usually typed by hand.
Why does GA4 show google / cpc twice?
Usually because one set of sessions came through auto-tagging and another through manual UTMs with slightly different values, such as Google with a capital G or medium=ppc. Match the auto-tagging values exactly (google, cpc) and the rows merge.
Build UTMs for another channel
The full parameter reference, naming-convention table, and custom parameter guide live on the main UTM builder page, and our UTM naming convention template covers how to roll one out across a team.
Free tools, free trial
UTMs are step one. Attribution is the payoff.
EndFrame reads these exact parameters and credits each server-side conversion to its campaign and source — so the campaigns you tag here report conversions, even when iOS and ad blockers hide the click.
No credit card required