Dynamic number insertion (DNI) shows each website visitor their own tracking number, so a call can be tied to the ad, keyword or page that brought them. On Edesy you paste one script tag; it captures UTM tags and click IDs such as gclid and matches each call to the visit. No tracking fee: calls Rs 1.00/min plus rental.
1 tag
Script install
30 min
Default lease
Rs 0
Tracking fee
Rs 1.00
Per minute of calls
UTM, gclid, fbclid, msclkid
All visitors or paid only
Falls back to your number
No tracking fee
| Install | One async script tag in the <head>: https://voice-api.edesy.in/v1/public/ct/edesy-ct.js with your pool key (data-key="ctk_..."), about 3 KB gzipped |
| What it swaps | Elements marked data-edesy-ct, tel: links and written numbers in common Indian formats; content added later is swapped too |
| Website numbers to replace | Up to 10 per pool |
| Allowed domains | Up to 50 per pool; example.com (with www.) or *.example.com |
| Who gets a number | All visitors, or paid traffic only (a click ID or a paid utm_medium) |
| Captured per visit | utm_source, utm_medium, utm_campaign, utm_term, utm_content, gclid, gbraid, wbraid, fbclid, msclkid, landing page, referrer, first touch (90 days) |
| Lease | 30 minutes by default (5 to 240), renewed every 60 seconds while the page is open |
| Cooldown | 30 minutes by default before a released number is shown to anyone else |
| Call matching | Exact (lease live), grace (within the cooldown), repeat caller (90 days), or unattributed |
| Pool full | Show your normal number (default) or reuse the oldest lease |
| Bot filter | Crawlers, ad reviewers, uptime monitors and scripts never take a number |
| Consent | Optional data-consent="required"; nothing runs until EdesyCT.consent() |
| Failure mode | Script blocked, pool paused or no free number: the page keeps its own number |
| Outputs | Reports, calls CSV, Google Ads offline-conversion CSV, call_tracking.call.completed webhook |
| Not offered | GA4 or dataLayer sync; automatic upload to Google Ads (the export is a CSV) |
| Price | No tracking fee. Calls Rs 1.00/min (forwarding rate) plus monthly rental per pool number |
Prices exclude 18% GST.
From pool to attributed call
In forwarding.edesy.in, open Call tracking, list your website domains and the number your site shows today, and choose all visitors or paid traffic only.
Add Indian numbers from your account. Each one gets the pool's forwarding setup, so every tracking number rings your team.
Add one async tag to the head of every page, directly or through a tag manager.
The script swaps your number for a free pool number and stores the visit's UTM tags, click IDs, landing page and referrer.
When a tracking number rings, the call is forwarded and credited to the visit that held it: exact, grace or repeat caller.
See calls by source, campaign, site or day, download the calls CSV or the Google Ads CSV, or receive a webhook per call.
Copy your exact tag from the pool's Install tab. Mark a number with data-edesy-ct if it is split across elements or unusually formatted.
<!-- In the <head> of every page -->
<script async src="https://voice-api.edesy.in/v1/public/ct/edesy-ct.js" data-key="ctk_XXXXXXXXXXXXXXXXXXXXXXXX"></script>
<!-- Optional: mark a number explicitly -->
<a data-edesy-ct href="tel:+912240001234">+91 22 4000 1234</a>
<!-- Optional: read the visitor's number in your own code -->
<script>
document.addEventListener('edesy-ct:ready', (e) => console.log(e.detail.display));
</script>A tracking number belongs to one visitor at a time. It stays theirs while the page is open, for the lease after they leave (30 minutes by default), and then rests for the cooldown (30 minutes) before anyone else sees it. A call during the lease is an exact match; a call during the cooldown is a grace match for the same visit.
So each tracked visitor ties up a number for roughly minutes on site + lease + cooldown. Pool size follows from your busiest hour:
numbers needed ≈ tracked visitors in the peak hour × (minutes on site + lease + cooldown) ÷ 60, plus about 20%
| Tracked visitors in peak hour | Minutes on site | Lease + cooldown | Numbers needed (+20%) |
|---|---|---|---|
| 10 | 3 | 30 + 30 | 14 |
| 40 | 3 | 30 + 30 | 51 |
| 40 | 3 | 15 + 15 | 27 |
| 100 | 3 | 30 + 30 | 126 |
Most businesses start with paid traffic only, so organic and direct visitors keep your normal number and the pool only covers ad clicks. The pool's Health tab shows numbers in use, visits that found the pool full and a suggested pool size. Work out your own numbers with the call tracking number pool calculator.
What the script does, and what it leaves alone
tel: links and text such as +91 22 4000 1234, 022-4000-1234 or 02240001234 are swapped, keeping your site's separators.
If the script is blocked, the pool is paused or every number is in use, visitors simply see your normal number.
Crawlers, ad reviewers, uptime monitors and scripts get no tracking number, so they never use up the pool.
The pool only answers your listed domains (up to 50), matched on whole labels.
Landing pages keep only campaign parameters; other query values such as form fields are dropped. IPs are kept as a network prefix.
Content added later is swapped too. With data-consent="required" nothing runs until you call EdesyCT.consent().
Edesy supports both; many businesses use both
Every website visit is attributed, including organic and direct. Needs the most numbers.
Only ad clicks (click ID or paid utm_medium) take a number. A smaller pool, focused on ad spend.
One number per print ad, hoarding, listing or flyer, where there is no website visit to track.
Explore more comparisons, alternatives, and resources
Tell us your monthly website visitors and ad channels. We'll suggest a pool size and setup.
Create a pool, add numbers and paste one tag. New accounts get a Rs 20 welcome credit; no card needed. No tracking fee.