NPI lookup tracking spec

For the NPI-in-signup build · agreed in the Carlos / David / Dylan huddle, 19 Aug 2026 · prototype: npi-signup.carlosmccoy.xyz

Three PostHog events cover the funnel David described: how often the lookup gets it right, what people do when we show a match, and whether the screen costs us signups. The single-versus-multiple distinction rides as a property, not a separate event.

Events

1. npi lookup completed (backend)

Fires when the registry query returns, during the email-verify wait. Fires for every lookup, including the ones where the user never sees anything. Without this event the no-match rate, which is most signups, is invisible.

PropertyValuesWhy
outcomesingle / multi / none / errorMatch rate = share of lookups with outcome ≠ none. error covers registry timeouts, which skip silently.
candidate_count0–4Survivors after all three filters (name + taxonomy + state).
professionsignup profession valueWhich professions match well. Feeds the taxonomy rollup question.
lookup_msintegerConfirms the query hides inside the verify wait.

2. npi candidate shown (frontend)

Fires when the "Is this you?" screen renders. This is David's "NPI displayed" event.

PropertyValuesWhy
match_typesingle / multiThe property David asked for: one confirm card versus the small picker.
candidate_count1–4Picker size, for read-out by list length.

3. npi candidate answered (frontend)

Fires on any action the user takes on the screen.

PropertyValuesWhy
actionconfirmed / picked / rejected / skippedconfirmed = yes on the single card; picked = chose from the picker; rejected = "not me"; skipped = "none of these are me".
match_typesingle / multiCarried through so the funnel splits without a join.

Read-outs

Experiment gate: the lookup runs for ~20% of new US-IP signups at first. Put the flag/variant on all three events so control and variant separate cleanly. Non-US signups never fire any of these.
Spam exclusion: any cohort or funnel built on these events must exclude the known scam workspaces (standing providerId exclusion list), same as every signup analysis.