A measurement plan template is a table that links each business objective to a KPI, each KPI to a GA4 event, and each event to its trigger, parameters, platforms, consent requirements, owner and status. This free CSV opens in Google Sheets or Excel and comes with 13 example rows for an online store and a lead form, using GA4 recommended event names such as view_item, add_to_cart, purchase and generate_lead.
This measurement plan template is a spreadsheet that both marketers and developers can read: one row per event, with the objective and KPI it serves on the left and the trigger, parameters, platforms, consent and owner on the right. Download the measurement plan template (CSV). It opens in Google Sheets (File, Import) and in Excel, and it comes with 13 filled example rows for an online store and a B2B lead form.
What is a measurement plan template for?
It stops the most common tracking failure: a request for "conversion tracking" that turns into a click listener on the wrong button, and a "lead" in GA4 that nobody can define six months later. Writing every event down before anything is built forces three decisions early: which actions matter, exactly when each one counts, and which platform receives it.
The CSV is the event table from our longer guide, the measurement plan template article, which also covers objectives, the parameter dictionary and the change log. Use the article for the full document and this file for the part people build from.
What does each column mean?
| Column | What to write | Example |
|---|---|---|
| Business objective | Why the site exists, in a few words. Several rows share one objective. | Grow online revenue |
| KPI | The number the event supports, precise enough to compute twice and get the same answer, with its source of truth | Net online revenue (source of truth: shop order system) |
| Event name | The GA4 event, lowercase snake_case. Use a recommended event wherever one fits. | purchase |
| Trigger / when it fires | The exact moment, written so a developer has nothing to guess | Order confirmation shown for the first time, after payment is confirmed |
| Parameters | Every parameter, with its type or allowed values | transaction_id (string), value (number), currency (ISO 4217) |
| Key event (yes/no) | Whether the event is marked as a key event in GA4 | yes |
| Platforms (GA4, Google Ads, Meta) | Every destination, with the Ads conversion action or Meta standard event name | GA4; Google Ads "Purchase"; Meta Purchase |
| Consent required | The consent each destination depends on | GA4: analytics_storage; Google Ads: ad_storage, ad_user_data |
| Owner | One person or team for the build, one for the business meaning | Dev: web team. Business: ecommerce manager |
| Status | Planned, In development, In QA, Live or Needs fix | Live |
| Notes | Rules that go wrong, open questions, links to the change log | value excludes shipping and tax |
How do you fill in the template?
Work top-down and do not skip a level.
- Write the objectives first. Two to four per site is plenty. An event that serves no objective does not get a row.
- Add the KPIs and their source of truth. Revenue usually comes from the shop or finance system and qualified leads from the CRM. GA4 and the ad platforms explain those numbers, they do not replace them.
- Pick the events. For a shop, start with
view_item,add_to_cart,begin_checkoutandpurchase, then addview_item_list,select_item,view_cart,remove_from_cartandrefundwhen someone will use them. For leads,generate_leadis the key event, withform_startorsign_upas supporting events. Use a custom name such asview_pricingonly when no recommended event describes the action. - Write the trigger as a moment, not an element. "The server returns success for the demo form" survives a redesign. "Click on the blue button" does not.
- List parameters with types.
valueis a number,currencyis a three-letter ISO 4217 code, and custom parameters such asform_idneed registering as custom dimensions to appear in reports. - Decide key events and conversions. GA4 calls important actions key events and keeps "conversion" for actions used in ad measurement and bidding. Fill in the Platforms column so each conversion has one primary source per platform.
- Map consent per destination. For EU sites, every row says which consent mode signals or CMP category it depends on.
- Assign an owner and a status, and keep the status current after every release.
Which GA4 limits should you check before building?
Check the finished sheet against GA4's limits for a standard property. They are the ones that force late redesigns.
- Event names and parameter names: 40 characters at most.
- Parameter values: 100 characters, with some exceptions such as
page_title. - Parameters per event: 25.
- Custom dimensions: 50 event-scoped and 25 user-scoped.
- Key events: 30 per property.
Event names are case sensitive, must start with a letter and may contain only letters, numbers and underscores, so Generate_Lead and generate_lead are two different events.
What are the common mistakes?
- Too many events. Every row has to be built, tested, consented, documented and monitored. Plans fail more often from too many events than too few.
- Vague KPIs. "Leads" is not a KPI. "Successful demo form submissions, deduplicated by email per day, excluding internal traffic" is.
- Firing on a click instead of a result. A purchase on page load of the thank-you page counts every reload. A lead on button click counts failed validations.
- The wrong value. For ecommerce,
valueis the sum of price times quantity, without shipping or tax. Our article on GA4 ecommerce tracking mistakes lists eleven more. - No primary source per conversion. If GA4 imports a purchase into Google Ads and the Google Ads tag also counts it, the account double counts.
- Personal data in parameters. Names, emails and phone numbers never go into event parameters or URLs.
- A plan nobody updates. Compare the sheet with GA4 (Admin, Events) and the GTM container once a quarter. Events in GA4 that are not in the plan are either undocumented work or bugs.
Once the plan is agreed, the developer needs the exact keys and example values for each event. That is the job of the dataLayer specification template, which uses the same event names.
Next step
Connect your GTM container and GA4 property to Tracking Whisper and it lists the events and parameters actually in use, so you can check this plan against reality, then builds the missing tags in its own workspace for a person to approve. See tracking setup or start with an audit of your container.
Frequently asked questions
Is this measurement plan template free?
Yes. It is a plain CSV file with no sign-up. Download it, import it into Google Sheets or open it in Excel, delete the example rows you do not need and add your own.
Does the template work for GA4 only?
No. Each row has a Platforms column for GA4, Google Ads and Meta, and a Consent required column for each destination. GA4 recommended event names are used as the shared language, and the Meta standard event or Google Ads conversion action is written next to them.
How many rows should my measurement plan have?
As few as answer your KPIs, usually 10 to 25 events on top of what GA4 collects automatically. Remember that a standard GA4 property allows 30 key events, 50 event-scoped and 25 user-scoped custom dimensions.
What is the difference between this template and a dataLayer spec?
The measurement plan says what is measured and why. The dataLayer spec says exactly which keys a developer pushes, with types and example values. Fill in the plan first, then use our dataLayer specification template for the build.
Sources
Last updated by Dimitris.