DNI, explained honestly
Call Tracking DNI: Dynamic Number Insertion Explained
DNI swaps the number on your website per visitor, attributing calls back to the keyword or ad that brought them. It is the deepest call attribution available — and we do not sell it. Here is how it works and how to decide if you need it.
- DNI: per-visitor number swapping
- Attribution to keyword level
- Our model: per-number, from $5/month
DNI questions
What is dynamic number insertion (DNI)?
A technique where your website swaps the displayed phone number for each visitor — a visitor from a Google Ads campaign sees one number, an organic visitor another — so the call can be attributed to the source that delivered the visitor.
How does DNI attribute calls to keywords?
The tracking script reads the visitor's referral data — campaign, ad group, keyword — assigns a fresh tracking number from a pool for that session, and logs the mapping. When the visitor calls the displayed number, the call inherits the session's attribution.
Do you offer DNI?
No. Our call tracking is per-number: each campaign or medium gets a fixed number, and calls attribute to the source displaying it. For keyword-level attribution, evaluate vendors that sell DNI explicitly.
Is per-number tracking enough without DNI?
For "which campaign or medium generates calls" — the question behind most budgets — yes, and it is far simpler. DNI earns its cost when keyword-level decisions, like individual ad optimisation, depend on call data.
Dynamic number insertion — DNI — is the deepest form of call attribution available, and it is also the most misunderstood. This page explains how it actually works, what it costs to do properly, who genuinely needs it, and where our own platform deliberately sits instead.
How DNI works
When a visitor lands on your website, a tracking script inspects how they arrived — the campaign, ad group and keyword in the referral data — and swaps the phone number on the page for a unique tracking number bound to that session. When the visitor calls the number they see, the call is logged against the session's attribution: keyword, ad, campaign. A visitor from Google Ads sees one number; a visitor from organic search sees another; a direct visitor a third. The number pool must be large enough to cover concurrent sessions, and the script must swap consistently on every page the number appears.
What DNI is good at — and what it costs
Good at: keyword-level answers. Which search terms generate calls, not just which channel. For businesses optimising individual ads against phone conversions, that is real signal.
Costs: a session-level number pool, a site-wide script, careful handling of numbers baked into images or PDFs, and privacy obligations — session tracking is user tracking, and your privacy documentation should say so. DNI products are priced accordingly, typically well above per-number tracking.
Who actually needs DNI
A simple test: name the decision that would change with keyword-level call data. If the answer is "which of my search ads deserves more budget next month, specifically", DNI earns its keep. If the answer is "radio, print or web?" — the question behind most marketing budgets — per-number tracking answers it at a fraction of the complexity, from $5 a month per number with call data charged per minute.
What we offer, stated plainly
We do not sell DNI. Our call tracking is the per-number model: each campaign or medium gets a fixed number from a pool spanning 40+ regions, call volumes report by number over time, and recording rides along. We would rather sell the simpler model that matches most businesses' real questions than stretch the label. If your test above says you need keyword-level attribution, evaluate DNI vendors against that requirement directly — the platform anatomy checklist applies to them too.
Ready for the per-number model? Pick tracking numbers from the available numbers pool and put the first campaign live.
Per-number, done well
Track campaigns without the complexity
One number per campaign from $5 a month — attribution your reports can explain.