Marketing Attribution for D2C Brands: Setting Up GA4 and UTMs So You Know What Actually Sold
By Hyphening Media · Analytics & Measurement · Published 2026-11-05
A practical setup guide for Indian D2C teams: UTM naming, a clean GA4 purchase event, and a weekly reconciliation against store orders so you can see which channel sold what.
Marketing Attribution for D2C Brands: Setting Up GA4 and UTMs So You Know What Actually Sold
Marketing attribution for D2C brands comes down to three things: every external link carries a consistent UTM tag, GA4 records a purchase with the correct value, and someone checks the two against your store's order count each week. Get those right and you can say which channel sold which order, within a tolerance you understand. Skip any one and your reports will quietly credit "direct" or "(not set)".
This is the setup guide that follows our piece on vanity metrics vs. real performance . That post covered which numbers to stop watching. This one covers how to wire up the numbers worth watching.
Key Takeaways
Tag every external link with utm_source, utm_medium and utm_campaign, all in lowercase, from one shared naming sheet. Confirm that GA4 records one purchase per order, with the right value, before you trust any channel report. Expect GA4 and your store to disagree slightly. Track the gap instead of hoping it is zero. Use GA4 for cross-channel comparison and each ad platform for in-platform optimisation. Neither is the whole truth.
What does GA4 actually read from a UTM link?
GA4 collects utm_source, utm_medium, utm_campaign, utm_id, utm_term, utm_content and utm_source_platform. Google's documentation says to always use source, medium and campaign, and that missing parameters show up as "(not set)" in reports (Google Analytics Help: Campaigns and traffic sources ).
The same page makes the point that wrecks most D2C reports: values are case sensitive, so utm_source=google and utm_source=Google count as different values. If your performance agency writes Instagram, your in-house designer writes instagram and a creator's link says insta, you now have three rows for one channel.
How do you build a UTM convention a team will follow?
Keep it boring and short. Indian practitioner guides recommend lowercase values with underscores and no special characters, plus a shared builder and a tracking sheet so the convention survives staff changes (Brainguru: UTM tagging guide for Indian marketers ). A workable template:
| Parameter | Rule | Example | |---|---|---| | utm_source | The platform or partner | instagram, whatsapp, klaviyo, creator_riya | | utm_medium | A short, fixed list | paid_social, email, influencer, cpc | | utm_campaign | Offer or theme plus month | diwali_gifting_2026_11 | | utm_content | The creative or placement | reel_hook_b, story_swipe |
Two choices matter more than the rest.
Give each creator their own source. One shared "influencer" tag tells you the programme sold something. A per-creator tag tells you who sold it, which is what you need when deciding whom to rebook. Our post on building a creator pipeline that doesn't burn budget covers how to use that data in selection.
Tag WhatsApp and email links too. Brainguru notes that untagged WhatsApp visits usually land in direct traffic. For brands that rely on broadcasts and abandoned-cart nudges, that hides a real channel.
Two things to leave alone. Keep Google Ads auto-tagging switched on and add manual UTMs only for tools that cannot pass the click ID (Brainguru makes the same recommendation). And never put UTMs on internal links, because that overwrites the real source of the session.
How do you check that GA4 records purchases correctly?
Place a test order and confirm that one purchase event arrives in GA4's Realtime or DebugView report with the right value and currency. If you run Shopify, the common failure is a duplicate purchase event caused by the Google & YouTube app running alongside a manual GA4 tag in the theme. Remove the manual tag so only one source fires (Polar Analytics: GA4 on Shopify setup guide ). Polar calls this the most common Shopify GA4 misconfiguration, as it inflates revenue.
Then do the weekly reconciliation:
Pull orders and revenue from your store admin for last week. Pull GA4 purchases and revenue for the same dates and time zone. Divide GA4 by store. Write the ratio down.
A ratio that is stable week to week, even at 90 per cent, is usable. A ratio that swings between 60 and 120 per cent means something is broken, usually duplicate events, a checkout hop to another domain, or ad blockers and consent choices removing sessions. Polar's guide also says GA4 and Shopify will always report somewhat different sales numbers, because they define a sale differently.
While you are in GA4, extend event data retention from the shorter setting to 14 months. Google documents 2 or 14 months for user-level data, and the setting affects explorations and funnel reports, not standard reports (Google Analytics Help: Data retention ). If you want to compare this Diwali with last, you will need the longer window.
Which attribution model should you read?
GA4 now offers three reporting models: data-driven, paid and organic last click, and Google paid channels last click. The first-click, linear, time-decay and position-based models were removed in November 2023, and every model excludes direct visits from credit unless the whole path was direct (Google Analytics Help: Attribution models ).
For a D2C founder, the practical reading is:
Use data-driven as the default view for comparing channels. Flip to last click when a number looks too good, to see how much of it depended on assisted touches. Treat the ad platforms' own dashboards as a second opinion. They count conversions their own way, so Meta's number and GA4's number should never be added together.
The Attribution paths report (under Advertising) is where you see whether reels and creators open the journey and search or email closes it. That is the evidence for or against the argument in conversion-optimised campaigns vs. reach .
What should the founder's weekly view look like?
One table, five columns, rows by channel: sessions, orders, revenue, spend, and revenue per rupee of spend. Add a sixth line at the bottom, total revenue divided by total marketing spend. We like this blended ratio because it does not depend on any one platform's counting. It is noisy with low order volumes, so read it over a month rather than a day.
Look at repeat orders by first-touch channel too. A channel that wins a first order at ₹900 CAC and never sees the customer again is a different animal from one that costs ₹1,300 and brings back half its buyers. For that side of the ledger, see our post on retention economics . The rupee figures here are illustrative, not benchmarks.
If you would rather not build and maintain this yourself, that is the kind of dashboard we set up for founders through our performance analytics work .
A simple test to run this week
Pick one live campaign. Re-tag every link with the convention above, place a test order through each link, and confirm that each lands in the right source and medium in GA4 Realtime. Then run the weekly reconciliation once. By Friday you will know your GA4-to-store ratio and which of your channels were previously hiding in direct.
FAQ
What is marketing attribution for D2C brands?
It is the practice of assigning orders to the marketing touchpoints that led to them. In practice that means tagged links, a correctly firing purchase event in GA4, and a regular check against actual store orders.
Do I need UTMs if I use Google Ads auto-tagging?
Keep auto-tagging on for Google Ads. Use UTMs for everything else: Meta, creators, email, WhatsApp, SMS and QR codes.
Why does GA4 show fewer orders than my Shopify store?
Some mismatch is normal. Common causes are duplicate or missing purchase events, a checkout on another domain breaking the session, and visitors who decline tracking. Track the ratio weekly and investigate when it moves.
Which GA4 attribution model is best for D2C?
Data-driven is the sensible default for comparing channels, with last click as a cross-check. GA4 no longer offers first-click or linear models.
How long should I keep GA4 data?
Set event data retention to 14 months so year-on-year exploration, for example this Diwali against last, remains possible.
Sources
Google Analytics Help: Campaigns and traffic sources (UTM parameters) Google Analytics Help: Attribution models Google Analytics Help: Data retention Brainguru: UTM tagging guide for Indian marketers (2026) Polar Analytics: How to set up Google Analytics 4 on Shopify