Meta and TikTok click-to-session loss and UTM gaps in GA4
Compares Meta and TikTok link clicks with the sessions GA4 actually records, flags where traffic and attribution leak, audits destination URLs for missing or inconsistent UTMs, and ends with a paid social UTM standard.
When to use it
When Meta or TikTok report far more clicks than GA4 shows sessions, or paid social traffic lands as direct or unknown in GA4.
What you get
A click-to-session table per platform and campaign with flagged leaks, a list of ads with missing or inconsistent UTMs, an estimate of untracked spend and a UTM naming standard for paid social.
Does it change anything in my account?
No. The assistant only reads your data and reports back.
Works with
Meta Ads, TikTok Ads, GA4
Fill in before sending
[Meta ad account][TikTok ad account][GA4 property]
Check how much Meta and TikTok traffic reaches GA4 and how well it is tagged. Meta ad account: [Meta ad account]. TikTok ad account: [TikTok ad account]. GA4 property: [GA4 property]. Period: the last 14 days. This is read-only.
1. Ad platforms: pull spend and link clicks per campaign from Meta and spend and clicks per campaign from TikTok.
2. GA4: list the key events first. Then pull sessions and key events by source / medium for the same 14 days, and separately by landing page with source / medium as the second dimension. If purchase is not the only key event, label the column "all key events" instead of "purchases".
3. Platform-level view: group the Meta sources (facebook, instagram, fb, ig, meta and similar) and the TikTok sources. Build a table: platform, link clicks, GA4 sessions, click-to-session ratio, GA4 purchases, spend per GA4 purchase. Flag a platform below 60%.
4. Campaign-level view: GA4 here gives source / medium and landing page, not session campaign. Match each ad campaign to GA4 through the landing page its ads point to. Where several campaigns share a landing page, report them together and say so. If I paste a GA4 export by session campaign, use that for an exact campaign match instead. Mark every match as exact, via landing page, or unmatched. Apply the same 60% flag, and flag any campaign with spend and no GA4 match.
5. UTM audit:
- Meta: for each flagged campaign, list its active ads and read their creatives. Check the destination URL and any URL parameters set on the creative. List every ad with missing utm_source, utm_medium or utm_campaign, or with values that do not follow one consistent pattern.
- TikTok: list the ads in the flagged campaigns. If the ad data includes the landing page URL, audit it the same way. If it does not, tell me and ask me to paste the TikTok destination URLs.
6. Unattributed traffic: report GA4 sessions arriving as (not set), (direct) / (none) or unknown sources during the period, and estimate how much paid social spend likely sits behind them, based on the click gap in step 3. Label it as an estimate.
End with a UTM naming standard I can apply to all paid social ads (source, medium, campaign, content values and casing rules). Do not edit any ad.
Builds a one-page, jargon-free monthly report for a client with exact calendar-month figures versus the previous month, explains every big KPI move from campaign data and creates the white-label link only after you approve the draft.
When to use itWhen you have to send a client their monthly Google Ads results in plain language and explain what moved and why.
Compares every connected Google Ads client account over the last 30 days versus the previous 30, adds month-to-date budget pacing, ranks accounts by risk and gives account managers one data-backed first check for the top 5. Read-only.
When to use itWhen you manage many Google Ads client accounts and need to know which ones to open first this week.