How to Track Google Ads Campaigns
Sealmetrics reads the UTM parameters located in your URLs.
By incorporating these URL tracking templates into your Google Ads campaigns, SEAL can track campaigns, terms/keywords, placements, or product IDs from Google Ads.
Because Sealmetrics is cookieless, the landing URL is the only place attribution data can come from: UTM tags and ad click IDs are extracted server-side from the page URL the visitor actually lands on. If a parameter is not in that URL, it cannot be reported.
Google Search & Display (GDN)
{lpurl}?utm_medium=cpc&utm_source=google&utm_campaign={Campaignid}&utm_term={ifsearch:{keyword}\{matchtype}}{ifcontent:{placement}}
Google Shopping
{lpurl}?utm_medium=cpc&utm_source=google&utm_campaign={Campaignid}&utm_term={_term}
What the template does
Everything in {curly braces} is a Google Ads ValueTrack parameter. Google replaces it at click time, before the visitor reaches your site, so Sealmetrics only ever sees the final resolved values.
| Placeholder | Replaced by | Lands in Sealmetrics as |
|---|---|---|
{lpurl} | The ad's final URL | The landing page |
{Campaignid} | The campaign's numeric ID | Campaign in the Campaigns tab |
{keyword} | The keyword that triggered the ad | Part of Term |
{matchtype} | The keyword's match type (e exact, p phrase, b broad) | Part of Term |
{placement} | The site or app where a Display ad was shown | Term, for Display clicks |
{_term} | A custom parameter you define in Google Ads | Term, for Shopping clicks |
The two conditional wrappers are what let a single template cover both networks:
{ifsearch:…}resolves only when the click came from the Search network. Everything else is dropped.{ifcontent:…}resolves only when the click came from the Display network.
So utm_term={ifsearch:{keyword}\{matchtype}}{ifcontent:{placement}} produces a utm_term that holds the keyword and its match type on Search clicks, and the placement domain on Display clicks — never both, and never an empty tag on either network. Sealmetrics then reports whichever value arrived as the TERM.
utm_medium=cpc and utm_source=google are fixed values, not ValueTrack. They are what keep these visits classified as paid: a hit carrying utm_ parameters or a gclid is never counted as organic search. See How Sealmetrics Calculates SEO Traffic.
{_term} in the Shopping template is a custom parameter, not a built-in one. Google only fills it if you have defined a custom parameter named term in your Google Ads account, campaign, or ad group. If it is undefined, the value arrives empty and the Terms tab shows (not set).
Google Ads Account-Level Setup
You can add this code directly at the Account level following these Google Ads instructions.
When configured at the account level, Google Ads will automatically append all value-track parameters to every campaign — including new ones — ensuring reliable attribution in Sealmetrics.
How to verify it works
You do not have to wait for a real click. Sealmetrics processes hits in seconds, not hours, so you can confirm the setup end to end in a couple of minutes.
1. Test the resolved URL first. In Google Ads, use the Test button next to the tracking template. Google shows you the final URL a click would produce. Check that the UTM parameters are present and filled in — not left as literal {keyword} text.
2. Land on your own site with a tagged URL. Paste that resolved URL into a browser and load the page. Any URL with the same parameters works for a smoke test, for example:
https://yoursite.com/landing?utm_medium=cpc&utm_source=google&utm_campaign=123456789&utm_term=running+shoes
3. Confirm the hit arrived. Open the Overview report and check the Last hit timestamp at the top right — it should read "seconds ago". If it does not move, the hit never arrived and the problem is with your tracking installation, not the template. See Data Delay.
4. Confirm the values landed in the right tabs. Open the Sources report and check:
| Tab | What you should see |
|---|---|
| Mediums | cpc |
| Sources | google |
| Campaigns | Your campaign ID (the numeric value {Campaignid} resolved to) |
| Terms | Your keyword and match type, or the placement for Display clicks |
Troubleshooting
Terms show (not set), or campaigns show numeric IDs you can't read.
(not set) means the parameter never reached the landing URL. {Campaignid} resolves to Google's numeric campaign ID, not the campaign name, so numbers in the Campaigns tab are expected behaviour rather than a fault. See Understanding the "(not set)" Value.
A redirect sits between the ad and the landing page.
Redirect chains frequently strip query parameters. Because Sealmetrics reads UTMs from the URL of the page where the pixel fires, anything dropped in a redirect is gone for good. Load the ad URL and inspect the address bar after all redirects settle — the parameters must still be there.
Your marketing stack uses different parameter names.
If your team standardises on names like campaign_id instead of utm_campaign, map them in Settings → Sites → UTM Mappings rather than editing the template. See How to Change UTM Parameters.
Medium shows (none) instead of (not set).
That is specific to a missing utm_medium, and is aligned with GA4's behaviour. It means utm_medium=cpc did not survive to the landing URL.
Related documentation
- How Sealmetrics Calculates SEO Traffic — How paid is kept separate from organic
- What Is a TERM in Sealmetrics? — How keywords are captured from Google Ads
- How to Track Social Ads Campaigns — UTM tagging for Meta Ads
- How to Change UTM Parameters in Sealmetrics — Map custom parameter names
- Sources Report — Analyze campaign and keyword performance