The measurement plan is the deliverable, not the tag
Most analytics projects begin with someone installing GA4 and end with an argument in month three about whether a WhatsApp click counts as a lead. The argument is the real problem, and it's a documentation problem, not a technical one.
So we start with a spreadsheet and don't touch the tag manager until you've signed it. It is unglamorous and it is the entire value of the engagement.
| Column | What goes in it | The argument it prevents |
|---|---|---|
| Event name | generate_lead, whatsapp_click, purchase — snake_case, fixed forever | Three people creating three names for the same action |
| Trigger | The exact user action and the exact selector or gateway callback | "It fired for me" versus "it didn't fire for me" |
| Parameters | Value, currency, form ID, page path, plan tier | Reporting that can tell you how many, but never which |
| Definition of qualified | In words a salesperson agrees with, not a marketer | The month-three lead-quality dispute, in full |
| Owner | The named human who fixes it when it breaks | Six weeks of silence after a site release breaks a tag |
| Where it's reported | GA4 key event, Ads conversion, both, or neither | Double-counting the same lead in two dashboards |
What actually gets built
Once the plan is signed, the build is mechanical. These are the parts that get missed most often, in our experience of opening other people's containers.
- GA4 property configuration — data retention moved off the two-month default to 14 months, internal traffic filtered by IP, cross-domain linking, unwanted referrals excluded so your payment gateway doesn't get credit for every sale.
- Google Tag Manager container — one container, documented, with a naming convention and no orphan tags left behind by the last agency.
- Key events — the ones from the plan, marked as key events in GA4 and imported into Google Ads where they belong.
- Consent handling — Consent Mode where you have EU traffic or a cookie banner. If you serve only India, we'll tell you plainly that you probably don't need the complexity yet.
- Search Console and Ads links, plus a Looker Studio view that shows the six numbers you actually check, not the 40 GA4 offers.
- Server-side tagging, only when it pays for itself. It adds a hosting bill and a maintenance surface. Our rule: below roughly ₹5 lakh a month in ad spend, or without meaningful iOS traffic, it costs more than it recovers. We'll say no.
The three conversions Indian sites get wrong
Default GA4 tracking was designed for a card-first, single-page checkout in a desktop browser. Indian funnels leave that model constantly, and the tracking silently under-reports every time they do.
WhatsApp clicks
A wa.me link unloads your page and opens an app. A click event fired on navigation frequently never reaches Google's servers, and in-app browsers make it worse. We fire on pointer-down with a beacon transport, and we append a prefilled message carrying the page reference so your sales team can see which page produced which chat.
What we can't do is follow the conversation. Unless you run the WhatsApp Business API, attribution ends at the click, and any agency claiming otherwise is guessing.
Call taps
A tel: link tap is trackable. A person reading the number off your header and dialling it from their phone is not. If phone calls are your main channel, the honest answer is a call-tracking number, not a cleverer tag.
UPI and Razorpay payments
This is the big one. A UPI intent payment throws the user into GPay or PhonePe, and a large share never come back to your thank-you page. If your purchase event lives on that page, you are under-counting revenue — sometimes badly enough that paid campaigns look unprofitable when they aren't.
The fix is to fire the purchase server-side from the gateway webhook using the Measurement Protocol, with the transaction ID as the deduplication key against the client-side event. It's a day of work and it's usually the single most valuable thing in the whole build.
What's included, and what isn't
| Included | Not included |
|---|---|
| Audit of your current GA4, GTM and Ads conversions, with a written list of what's broken | Fixing a broken site or a slow theme — that's technical SEO |
| Measurement plan, signed by you before the build starts | Ongoing campaign reporting or monthly commentary |
| GA4 property config, GTM container build, key events, Ads import | Rebuilding your CRM or wiring lead data back into it |
| WhatsApp, call-tap, form and purchase tracking including server-side purchase confirmation | A WhatsApp Business API subscription or its licence costs |
| Consent Mode setup where you have EU traffic | Legal advice on DPDP or GDPR compliance |
| Reconciliation against Razorpay, Shopify or your gateway's payout data | Accounting reconciliation, or anything your CA should be signing |
| A Looker Studio dashboard and a handover session recorded for your team | A performance guarantee — see the last section for the reason |
Reconciliation: the step that ends the arguments
This is what separates a tracking build from a tracking build that's finished. Before handover we pull a fixed window — usually the last full month — and put three columns side by side: GA4 purchases, gateway settlements, and orders in your backend.
They will not match perfectly. They never do, and any agency that shows you an exact match has either got lucky or filtered the sheet. What matters is that every gap has a name.
- Refunds and cancellations counted as purchases in one system and not the other.
- COD orders that were placed but never paid, or paid weeks later.
- Consent declines and ad blockers, which remove sessions from GA4 entirely and can never be recovered client-side.
- Cross-device journeys, where the research happened on mobile and the payment on a laptop.
- Failed and retried payments that create two attempts and one settlement.
Price, timeline, and why there's no guarantee on this one
₹75,000, fixed, one-time. GST extra. Two to four weeks, depending on how many payment paths you have and how quickly your developers can give us access. Multi-country properties, a headless storefront, or a gateway with no webhook support push it to the upper end, and we'll tell you before you pay, not during.
Everything is yours: the GTM container, the measurement plan, the dashboards, the documentation. There is nothing in a Last Agency analytics build that another agency couldn't pick up on day one, which is deliberate.
Now the awkward bit. Our 90-day guarantee — beat your frozen baseline of qualified organic leads or we keep working free — does not apply to this project, and we won't pretend it does. A tracking build doesn't create demand. It tells you the truth about the demand you already have, and sometimes that truth is worse than the fiction you were reporting. Attaching a performance promise to measurement work would be selling you a coin toss with our name on it.
What it does do is make the guarantee possible everywhere else. You cannot freeze a baseline you can't measure, which is why most SEO engagements that start with us start here.