Example report: Northloop is a made-up company, but this is the exact format and depth of a real $400 Diagnostic. · Not a real client · Prepared as a public example of a Cold Index $400 Diagnostic
Cold Index
Cold Index
Event taxonomy and tracking audits

Download this sample as PDF · Back to audits

$400 Diagnostic · Sample

Diagnostic report for Northloop

A written review of 36 distinct event names from a fictional B2B SaaS Amplitude export: duplicate and drifting names, broken properties, value hygiene, dead events, and plan vs reality. Ranked fixes with evidence, plus a clear answer on whether a full audit is worth it.

Sample disclaimer. Northloop is a made-up company. Every event name, count, property, and quote in this report was invented for this example. Nothing here comes from a real customer file or project.
Client (sample)
Northloop — fictional B2B SaaS
Platform
Amplitude (export + inventory)
Scope
36 distinct event names (Diagnostic cap: 40)
Window
Last 30 days of inventory · sample event rows
Access
Read-only export (no live project changes)
Deliverable
Ranked fix list + audit recommendation

Recommendation

A full Audit ($2,000) is worth it — but only if you will ship the renames.

The Diagnostic already covers your whole taxonomy (36 ≤ 40). The problems are concentrated in a few places: four high-impact duplicate clusters on sign-up, login, check-in, and upgrades; an incomplete team_created → Workspace Created rename; personal data on acquisition events; and a tracking plan that no longer matches production.

What a full Audit would still buy you: a clean tracking plan spreadsheet with old-to-new mapping, a naming guide your team can keep, and a decision log for every merge. If engineering will not dedicate a sprint to the renames in the next 30 days, stop at this Diagnostic, implement the High items below, and skip the upsell. The $400 Diagnostic credit applies to an Audit booked within 30 days of delivery.

What we reviewed

In scope Event names, properties, and values for all 36 names in the 30-day inventory; sample Amplitude rows; the attached tracking plan (22 rows, last edited early 2025).
Out of scope Live Amplitude project settings, SDK code changes, dashboard rebuilds, warehouse dbt models, and any write access. Audit-only, by design.

Snapshot

SignalFinding
Distinct event names36 in inventory · Taxon near-dup pass collapses obvious aliases toward ~27 canonicals · several same-intent names still sit outside those clusters and need a human merge
Tracking plan22 listed · 5 never fire · 14+ production names absent from the plan
Highest-risk funnelsSign-up, login, check-in, plan upgrade / purchase
Personal dataemail and full_name present on Sign Up variants and Invite Sent
Dead weightlegacy_pulse_v1, Old Dashboard Viewed (last seen 2025)

Ranked fix list

Severity reflects impact on numbers your team already uses. High items first. Each fix is written so engineering can implement without a call.

1

Collapse the four sign-up names into one canonicalHigh

Evidence

Last 30 days: Sign Up 1,840 · signup_completed 620 · user_signed_up 210 · Signup Completed 95. Same product moment; four chart definitions.

Why it matters

Activation and acquisition reports silently disagree depending on which name an analyst picks. Funnel step one is not stable.

Fix

2

Finish the Workspace rename — stop team_createdHigh

Evidence

Workspace Created 520 and team_created 340 both fire in the same 30-day window. Your notes say the rename shipped August 2025; mobile (or an old build) still emits the old name.

Why it matters

Workspace creation is undercounted by ~40% if charts use only the new name; double-counted if someone unions both without deduping users.

Fix

3

Unify login: Log In · login · User Logged InHigh

Evidence

Volumes: 9,200 · 3,100 · 180. Near-dup clustering catches Log In/login; User Logged In stays separate and still dribbles in.

Why it matters

DAU/WAU proxies and “returning user” segments drift by source file.

Fix

4

One check-in event — including the no-hyphen / snake variantsHigh

Evidence

Check In Submitted 5,400 · checkin_submitted 980 · Check-In Submitted 140. Hyphen variant clusters with the Title Case name; checkin_submitted does not and is easy to miss in a UI-only pass.

Why it matters

Check-in is your core product action. A 15%+ shadow stream breaks retention curves.

Fix

5

Upgrade / purchase: merge aliases and investigate double-countHigh

Evidence

Upgrade family: Plan Upgraded 410 · plan_upgraded 155 · Subscription Upgraded 60. Purchase pair: Purchase Completed 290 vs purchase_completed 275 — nearly equal volume, classic client + server double-fire shape. Keep Refund Processed separate.

Why it matters

Revenue and conversion charts can read ~2× on purchases if both names are summed. Upgrade reporting is split three ways.

Fix

6

Remove personal data from event propertiesHigh

Evidence

Sample rows for Sign Up variants and Invite Sent carry email and full_name. Your own notes flag a 2025 growth experiment as the likely source.

Why it matters

Event properties are the wrong place for direct identifiers: wider export surface, harder retention/deletion, and easy leakage into shared charts.

Fix

7

One key for plan, one for workspace — stop the three-way splitMed

Evidence

Plan is split across plan, plan_type, and planType (each populated on about a third of sample rows). Workspace id appears as workspace_id, Workspace ID, and sometimes org_id with the same ws_* values.

Why it matters

Breakdowns by plan or workspace look empty for large slices of traffic. Required-field checks on the plan fail even when “a plan field” was sent.

Fix

8

Normalize plan / country / status values; block free text in plan_typeMed

Evidence

Values pass shows pro/Pro/PRO, pro_annual/Pro Annual, country US/U.S./us/USA/United States, status active/Active/ACTIVE. At least one plan value is a free-text deal note, not a category.

Why it matters

Segment and cohort filters under-count. Free text in a category key makes every new deal a new “plan.”

Fix

9

Require amount (number) on revenue eventsMed

Evidence

In the sample of upgrade/purchase-like rows, roughly one in four arrives with an empty amount. Populated values arrive as digit strings (49, 49.00, 99) rather than a consistent number type. currency mixes USD and usd.

Why it matters

Revenue sums drop nulls; type mixes break some warehouse casts.

Fix

10

Page views and button clicks: one name each, or drop them from product analyticsMed

Evidence

Page views: 128k + 44k + 8.9k under three names. Buttons: 22k + 6.7k + 1.2k. Both families cluster cleanly once casing/tense is normalized.

Why it matters

High-volume noise crowds the event list and makes taxonomy reviews harder. Rarely used for product decisions in SaaS if you already have session replay or a warehouse pagefeed.

Fix

11

Own or kill the feature-flag firehoseMed

Evidence

experiment_flag_exposed 45,000 and Feature Flag Evaluated 12,000 — neither appears in the tracking plan. Combined volume rivals your intentional product events.

Why it matters

Orphan high-volume events inflate bills and bury the taxonomy. If experimentation needs them, they should be documented and named once.

Fix

12

Reconcile the tracking plan with productionMed

Evidence

Plan lists 22 events; inventory has 36. Plan rows with zero fires in the window: Onboarding Completed, Activation Milestone, NPS Submitted, Logout, Password Reset Requested. Your notes confirm onboarding “never shipped.”

Why it matters

Analysts trust the spreadsheet; production diverged in 2025. New events ship without owners.

Fix

13

Align source and utm_source on acquisition eventsLow

Evidence

Sign-up rows alternate between source and utm_source for the same idea, with casing drift (google vs Google).

Why it matters

Channel reports need a single field.

Fix

14

Retire dead eventsLow

Evidence

legacy_pulse_v1 last seen 2025-12-02 (3 events) · Old Dashboard Viewed last seen 2025-08-19 (1 event).

Why it matters

Clutter and confusion for anyone browsing the full event list.

Fix

15

Identity: stop sending events with no user_id when the user is knownLow

Evidence

About 8% of sample rows have an empty user_id while other identity fields may still be present.

Why it matters

Breaks user-level funnels and inflates “anonymous” counts after login.

Fix

Keep separate (do not merge)

PairWhy
Invite Sent vs Invite AcceptedDifferent funnel steps; merging destroys invite conversion.
Purchase Completed vs Refund ProcessedOpposite money direction.
pro vs pro_annual (plan values)Different SKUs; casing variants within each SKU should merge.

Suggested first week

  1. Ship fixes #1–#6 (names + PII + workspace rename).
  2. Turn on allow-lists for plan_type and required amount on revenue events (#7–#9).
  3. Decide flag-event and pageview policy (#10–#11); refresh the tracking plan (#12).

About this sample

This document is a public sample of a Cold Index $400 Diagnostic. The company Northloop, its people, and its data are fictional. A real Diagnostic is invoiced after delivery, due in 14 days, and credited toward an Audit or Estate booked within 30 days. Book: hello@coldindex.net · https://coldindex.net/audit/