Show every website visitor a number that tells you how they found you.
One line of code swaps the phone number on your website based on where each visitor came from. When they call, you know the source, the campaign and even the keyword.
How it works
Dynamic number insertion, usually shortened to DNI, is the part of call tracking that covers your website. A small script reads how each visitor arrived: the referring site, any UTM tags, and the click IDs Google, Microsoft and Meta add to ad links. It then shows that visitor a phone number tied to their source and swaps every copy of your number on the page, including click-to-call links.
- A visitor arrives from a Google Ads click on "emergency plumber leeds".
- The script replaces your number with one from your Google Ads pool and links it to that visit.
- They browse a few pages, then call the number they see.
- The call forwards to your phone as normal. Your dashboard shows the call against the campaign, ad group and keyword.
Source level or keyword level
Source-level tracking uses one number per channel, such as Google Ads, organic search, Facebook and direct. It needs only a handful of numbers and is ideal for smaller sites.
Keyword-level tracking uses a pool of numbers so each visitor at a given moment sees a unique one. That lets us match the call to the exact visit, which gives you the keyword, landing page and the pages they read before calling. Pools are sized automatically from your traffic, and a number is held for a visitor until well after their last activity so it is never handed to someone else mid-visit.
Built not to get in your way
- Your local SEO is safe. Search engine crawlers are always shown your normal number, so your name, address and phone number stay consistent across the web.
- Fast pages. The script is small, loads after your page and does not block rendering.
- Works with your site. There is a WordPress plugin and a Google Tag Manager template, and it supports page builders and single-page apps.
- Returning visitors. A first-party cookie remembers which source a visitor came from, so a call the next day is still credited correctly.
- Respects consent. The script can wait for your cookie banner before it sets anything.
Frequently asked questions
How many numbers do I need?
For source-level tracking, one per channel you want to see, usually four to six. For keyword-level tracking we work it out from your traffic. As a rough guide, a site with a few hundred visitors a day needs around eight to twelve numbers.
What happens if all the pool numbers are in use?
The visitor sees your source-level number for that channel instead, so the call is still credited to the right source.
Will customers notice the number changing?
No. The swap happens before the number is visible, and each visitor sees the same number throughout their visit and on return visits.
Works hand in hand with
All features →Tracking numbers
Pick numbers in your own area code for Google Business Profile, directories, print, vehicles and radio. Every call forwards to your phone and is logged against the channel that number belongs to.
Form and chat tracking
Track website forms and live chats with the same source data as your calls, so you can compare channels on all of their enquiries in one report.
Customer journeys
For every tracked call and form, see the first channel that found them, the last one before they got in touch, and the pages they read in between.
Call recording
Recordings for every tracked call, with an announcement you word yourself, automatic pausing for card payments and retention rules that delete old recordings for you.
See your first tracked call today.
14 days free, three numbers included, no card needed. Most people are set up within ten minutes.