How can I tell if my dynamic number insertion is quietly broken?
Compare tracked calls to total calls on every published number, and check the rendered page rather than the source. Common failures are a script that swaps the number after the visitor has already read it, a display number that changes while the tap-to-call link does not, cached pages serving a stale number, an exhausted number pool, and a consent banner that blocks the script entirely.
The failure is usually partial, which is why it survives
Dynamic number insertion rarely fails completely. It fails on one template, one device, one cached path, or one traffic segment. Totals look plausible, attribution quietly degrades, and the first symptom is an argument about why the ad platform and the phone system disagree.
Because it degrades rather than breaks, nobody gets an alert. The check has to be deliberate and repeated.
The five failure modes, and how each looks
- Late swap. The script runs after paint, so a fast visitor reads and dials the static number. Symptom: a suspicious volume of calls to the house number from paid sessions.
- Display swapped, link not. The visible text updates but the tel: href still points at the original number. Tapping on mobile bypasses tracking entirely. Symptom: desktop attribution looks fine, mobile does not.
- Cache serving stale numbers. A page cache or CDN stores a rendered page with one session's assigned number, and later visitors see it. Symptom: one tracking number receiving far more calls than its share of sessions.
- Pool exhaustion. More concurrent sessions than numbers, so two visitors share one number and the join becomes ambiguous. Symptom: attribution accuracy that degrades specifically during your busiest hours.
- Consent gating. A privacy banner categorizes the tracking script as non-essential and blocks it until acceptance. Symptom: a step change in tracked call volume on the day the banner shipped.
The checks that catch them
Inspect the rendered DOM on a real mobile device, not view-source, and confirm the tel: link and the visible text agree. Load the page from a paid-style URL with campaign parameters, then again from a plain URL, and confirm the numbers differ. Reload repeatedly to see whether the assignment rotates or sticks — a sticky number across sessions points at caching.
Then run the volume check: total inbound calls on every published number versus tracked calls attributed to sessions. A persistent shortfall on the main line is the plainest evidence that the swap is not reaching everyone. Reconciling those two sources is part of standard marketing measurement rather than a one-time setup task.
Design so failure is visible
The best defense is structural. Give the untracked house number a distinct purpose — signage, invoices, vehicle wraps — so calls to it are meaningful rather than ambiguous. Size the number pool against peak concurrent sessions, not average. Exclude the tracking script from page caching. And set an alert on tracked call volume so a step change raises a flag the same day.
Systems that report their own match rate are worth far more than systems that quietly assume perfection, which is the same principle behind honest revenue attribution.
Topics: call tracking · dynamic number insertion · diagnostics · attribution
Have a version of this question about your own business?
The useful answer usually depends on which systems you run and how they're connected. That's a conversation, not a blog post.