Most marketers assume Google Ads and Meta Ads automatically attach UTM parameters to their URLs.
They don’t.
Not by mistake, but by design.

Both platforms prefer to keep analysis inside their own ecosystem. UTMs are “data escape hatches”: as soon as they exist, any external tool (GA4, Matomo, Amplitude, Looker Studio, Snowflake, your BI stack, etc.) can rebuild your full acquisition performance.

This article clarifies:

Let’s get into it.

1. Google Ads: no UTM parameters unless you explicitly create them

By default, Google Ads does not add any UTM parameter.
If you publish a campaign without configuring anything, your URLs look like this:

https://www.mystore.com/product/123

Nothing more.
No utm_source, no utm_campaign, no dynamic value.

1.1 The only automatic parameter: gclid

Google pushes its own auto-tagging system.
When enabled, Google Ads adds this parameter:

?gclid=XXXXXX

This is not a UTM.
It is an internal click identifier that allows Google Analytics to “match” your traffic with Google Ads data.

1.2 What Analytics can reconstruct using gclid (without UTMs)

When Google Ads is linked to GA4 and auto-tagging is enabled, GA4 automatically restores:

This works only inside the Google ecosystem.

If you want to analyze your traffic in another tool, UTMs are necessary.

2. Google Ads Tracking Templates: dynamic parameters for automated UTMs

The proper way to implement UTMs in Google Ads is through a tracking template.

This template allows you to mix:

2.1 Key Google dynamic parameters (ValueTrack)

Some of the most useful are:

2.2 Example of a solid 2025 tracking template

?utm_source=google
&utm_medium=cpc
&utm_campaign={campaignname}
&utm_content={adgroupname}-{creative}
&utm_term={keyword}
&device={device}
&network={network}

This gives you fully dynamic, structured attribution without relying exclusively on Google’s closed-loop system.

3. Meta Ads: UTMs must be configured manually

Meta has a similar philosophy: no UTMs unless you configure them.

UTMs are added at the ad level, in the “Tracking” section, under “URL Parameters”.

3.1 Meta dynamic macros (equivalent to ValueTrack)

Meta provides its own dynamic variables:

3.2 Recommended UTM structure for Meta Ads

utm_source=meta
&utm_medium=paid-social
&utm_campaign={{campaign.name}}
&utm_content={{adset.name}}
&utm_term={{ad.name}}
&utm_placement={{placement}}

Just like Google, Meta does not pre-fill anything.
If you don’t configure these parameters, no UTM appears in your URLs.

4. Why neither Google nor Meta generates UTMs by default

The reason is simple and strategic:

Google wants you in Google Ads + GA4.
Meta wants you in Meta Ads Manager + Meta Attribution.

UTMs make it easy to:

This is not in the interest of the ad platforms.

So they don’t enable UTMs by default.

5. Server-side tracking: nothing is automatic anymore

This is the part that surprises many teams.

When you move to server-side tracking (Google Analytics 4 server-side, Meta CAPI, TikTok Events API, Pinterest API, etc.):

5.1 Required workflow in server-side setups

  1. Capture
    Client → collect utm_*, gclid, fbclid, referrer, landing page.
  2. Store / Persist
    • first-party cookies
    • local storage
    • session storage
    • server session
    • BigQuery / internal DB
  3. Forward
    Include these parameters in server-to-server payloads:
    • Meta CAPI events
    • GA4/collect server endpoint
    • Google Ads enhanced conversions
    • TikTok Events API requests
    • Pinterest Conversion API events
  4. Reconcile
    Join click IDs with event IDs for attribution, deduplication, and debugging.

No platform reconstructs anything for you when you operate server-to-server.
It is a full BYOT workflow: Bring Your Own Tracking.

6. Best practices in 2025

6.1 Google Ads

6.2 Meta Ads

6.3 Cross-platform UTM strategy

Use a consistent UTM structure for all ad platforms:

6.4 Server-side

7. Summary

Google Ads and Meta Ads do not provide UTM parameters by default — intentionally.
Google only adds gclid, and only for use inside its own ecosystem.

If you want clean attribution, analysis across tools, or robust server-side tracking, you must:

Good tracking is not automatic.
It’s engineered.