On this page
Name the unit before writing the formula
The source dates shown in this guide identify documentation checks on 22 October 2026, not original publication dates. Define whether one row is a request, a rendered item, an impression opportunity, a click event, or a deduplicated actor-item pair. Keep the event name, version, source system, timestamp basis, and object identity together. If “impression” means different things in two systems, do not union the counts under one label.
| Unit | Required fields | Common mistake |
|---|---|---|
| Opportunity | Eligible item and request context | Use all candidates as shown |
| Impression | Display event and event definition | Count a server response as display |
| Click | Click event linked to exposure | Count click without exposure |
| Unique pair | Stable actor or session and item key | Deduplicate by timestamp alone |
| Window | Start, end, timezone, inclusivity | Mix rolling and calendar windows |
| Exclusion | Replay, bot, test, or failure rule | Hide excluded rows |
Write the formula in words first. For example: click-through rate equals accepted click events linked to eligible impression events divided by eligible impression events in the same window. Then state what happens to an orphan click, duplicate delivery, and item shown outside the target audience.
Separate eligibility from delivery evidence
A candidate can be eligible but not shown, shown but not acknowledged, or acknowledged more than once because a client retried. Record each transition. Counting rules from an advertising standard should not be generalized to every product event; the local event contract still controls the denominator.
| State | Evidence | Denominator treatment |
|---|---|---|
| Eligible | Rule and candidate record | Opportunity if in window |
| Rendered | Client or component event | Impression only if contract says so |
| Acknowledged | Receipt or measurement event | Separate delivery evidence |
| Clicked | Linked click event | Numerator after validation |
| Rejected | Reason code and timestamp | Excluded and reported |
| Unknown | Missing transition or id | Hold or show as unknown |
The Google Analytics Help, (opens in a new tab) documentation groups event collection and event counts around triggered events. That is a useful reminder to preserve event parameters and collection status. It does not define your product’s impression denominator or prove that every trigger was delivered once.
Make retries and duplicates visible
Choose an idempotency key before counting. It might be an exposure id, event id, or a composite that the producer documents. Report raw event count, accepted event count, duplicate count, orphan count, and late-arrival count separately. A deduplicated count is derived from the raw log and should never overwrite it.
- Freeze event names and versioned definitions.
- Validate the link from click to exposure.
- Apply the stated eligibility and window rules.
- Deduplicate by the declared idempotency key.
- Report excluded classes and unknown transitions.
- Calculate numerator and denominator from the same cohort.
Run a synthetic denominator sheet
Synthetic event counts
event_id | exposure_id | kind | eligible | accepted | status
fixture-1 | exp-a | impression | yes | yes | one
fixture-2 | exp-a | click | yes | yes | linked
fixture-3 | exp-b | impression | yes | no | duplicate
fixture-4 | exp-b | click | yes | yes | orphan
fixture-5 | exp-c | impression | no | yes | out-of-cohort
formula: linked_clicks / accepted_impressions; publish raw and excluded counts beside rate| Assertion | Expected result | Hold condition |
|---|---|---|
| Duplicate impression | Excluded with reason | Counted twice |
| Orphan click | Not in linked numerator | Added to numerator |
| Out of cohort | Excluded from denominator | Mixed with eligible rows |
| Window edge | Inclusivity stated | Boundary guessed |
| Retry | Same idempotency key | Timestamp-only dedupe |
All identifiers in this fixture are invented. Add a late event, a missing exposure id, and two distinct clicks from one exposure. The result should expose the counting choice instead of presenting one unexplained percentage.
Keep event rates separate from product conclusions
Denominator review can show how a rate was constructed and which events were excluded. It cannot establish user intent, content quality, conversion causality, or the success of a campaign. Preserve raw, accepted, rejected, and unknown event classes for a qualified interpretation.
Pair this guide with ranking click-log position bias review for exposure context and event ordering and replay review for sequence handling. After a supported non-health scope, authority to describe the collection, and a controlled event packet are established, the qualified appraisal request path may be a preparation step. It does not define event taxonomies, count impressions, create a quote, match a buyer, or grant a license.
Takeaways
- Define opportunity, impression, click, cohort, and window as separate units.
- Link clicks to exposures before counting a numerator.
- Report duplicates, orphans, retries, and unknown transitions.
- Keep raw event counts beside deduplicated counts.
- Do not compare rates whose denominators use different boundaries.