Start from a decision, not a dashboard
An event earns its place when a person would change something after reading it. Everything else adds rows somebody has to explain.
A filled plan
Meridian Landscaping, four events, configured in September 2026.
event: lead_submitted
fires when: the form endpoint stores a response
parameters: form_id, page_path, service
denominator: sessions
decision: is this service page worth more traffic
verified: one real submission, one row
event: tel_click
fires when: a visitor taps the phone number
parameters: page_path
denominator: sessions
decision: is the offer clear enough to start a call
verified: one tap on a phone
event: quote_started
fires when: a visitor opens the quote form
parameters: page_path, service
denominator: sessions
decision: which page starts the conversation
verified: one open, without submitting
event: outbound_link
fires when: a link leaves the site
parameters: domain, page_path
denominator: sessions
decision: do we need our own page for that topic
verified: one click to a supplier page
deliberately absent
- purchase: the invoice happens offline
- qualified lead: a person judges this on a call
- scroll depth: no decision follows on a five page site
Two rules that keep a plan usable
- One event per decision. If two events answer the same question, drop one.
- Send the page path, not a full URL. A query string is not a dimension.
Where the plan goes wrong
Sending parameters nobody reads. Naming an event after a reserved name. Firing a click as a lead. Each one makes the report harder to defend, not easier to read.
Acceptance: the plan is live when
- each event fired once from a real action, and the row was read
- every event carries a denominator
- reserved names are not reused for another purpose
- offline actions that will never appear are written down
- the consent state is recorded, so a low count is explainable
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| The event fires twice per action | Two tags, or a retry | Count the tag in the built HTML |
| Events but no leads | The endpoint stores elsewhere | Check the form, not the tag |
| A test order appears | A test was recorded as real | Remove it, and mark test traffic |
| Counts look low one week | The consent rate moved | Read the consent rate beside the event |
| Nobody reads the report | Four events, no decisions written | Attach a decision to each event |
Limits
Consent changes what you will see, and sampling changes how precisely.
A lead that arrives by phone will never appear here. The stored enquiry count stays in the report, beside the event count.