Ring pools
A number for every visitor.
When your call button appears, the visitor gets a tracking number leased to their session alone. Their click, campaign and form answers ride on it, so the call that comes in is already tied to the visit that made it.
- 555-0117
- 555-0124
- 555-0131
- 555-0138
- 555-0145
- 555-0152
- 555-0159
- 555-0166
- 555-0173
- 555-0180
- 555-0187
- 555-0194
555-0152 · leased to session 7f3a
gclid · utm_campaign · zip · has_medicare · age_range
Fictional numbers. Illustrative pool.
What rides on the lease
The call arrives with the visit attached.
A tracking number on its own tells you which ad ran. A leased number tells you which visitor dialled, what they clicked and what they typed.
Click IDs
- gclid
- gbraid
- wbraid
- fbclid
- msclkid
- ttclid
Campaign
- utm_source
- utm_medium
- utm_campaign
- utm_term
- utm_content
Partner
- ref
- sub-IDs (your custom params)
Visit
- referrer
- landing page
- device
- IP
Form answers
- zip
- has_medicare
- age_range
- …
The form answers are what our voice agent reads before it says hello.
The lease
Leased on sight. Back in the pool after they leave.
A number belongs to a visitor only while they can see your call button. Drag through one visit to see how.
One session, one number
Ask again from the same session and you get the same number back, not a second one.
Held while they look
The number stays theirs while the page is open, renewing quietly in the background.
Hidden tabs let go
Renewals stop when the tab is hidden, so idle numbers return to the pool on their own.
Longest idle goes next
A new visitor gets the number that has been free the longest.
Your timings
Lease and renew times can be changed. The lease must be at least 30 s and at least twice the renew time.
t = 0:00
555-0152
Leased · page visible- Lease runs out in
- 120 s
- Next renewal
- 60 s
- Call button mounts
- The page asks for a number. This session gets one of its own for 120 s.
Default timings. The moment the tab is hidden is illustrative.
Callbacks
A callback finds its earlier visit.
People save numbers and call back days later. Within 30 days, we match the caller to the session from their earlier call on that number, even if it has been leased to someone else since.
Visitor A
Gets 555-0152 from your landing page, calls, and saves the number.
session 7f3a
Visitor B
A’s lease has lapsed. The same number is now leased to B, with B’s own click and answers.
session c21e
Visitor A calls back
They dial the saved number. We match their hashed phone to session 7f3a, not to B.
matched to 7f3a
Attribution follows the earlier visit
The callback carries A’s click, campaign and answers, so the sale traces back to the ad that earned it.
Routing and price follow today’s setup
Where the call goes and what it costs come from the pool’s current settings, not the ones in place three days ago.
Times and session IDs are illustrative.
Install
Two ways in. Neither leaves a dead number.
Lease from your server, or let a script swap the number on the page. We set it up with you.
Server to server
Your server leases the number before the page renders, so the visitor sees the right number from the first paint. No flicker.
Script on the page
A script swaps the number in place after load. It edits only text and tel: links, and it never throws an error into your page.
Fallback number
If a lease can’t be made, the page shows your static fallback line. It tries again after about ten seconds and recovers on its own.
POST /v1/pools/{poolId}/session
Authorization: Bearer <api-key>
Content-Type: application/json
{
"external_session_id": "sess_7f3a",
"attribution": {
"gclid": "EAIaIQ…",
"utm_source": "search",
"utm_campaign": "medicare-aep",
"ref": "partner-12",
"sub_id": "lp-a"
},
"form_data": {
"zip": "33139",
"has_medicare": "yes",
"age_range": "65-69"
}
}
→ 200 OK
{
"phone_number": "+15555550152",
"expires_in": 120,
"renew_every": 60
}Field names and paths may differ in your integration.
Pricing
Priced per placement.
Each placement, the spot where a pool’s numbers appear, carries its own price. You choose whether it tracks or bills.
$0
Tracking only
Set a placement’s price to 0 and you get the numbers, the attribution and callback matching, with no per-call charge.
Your price
Billed once, past the line
Give a placement a price and a call bills once, when it passes the duration you set.
Never
Outside geo or hours
Calls from outside the campaign’s geo footprint, or outside your schedule, are not billed.
FAQ
Questions buyers ask
Can two visitors see the same number at once?
No. A number is leased to one session at a time, and it only goes back to the pool after that lease lapses. A visitor who asks again from the same session gets the same number.
What if a caller saves the number and calls back next week?
Within 30 days we match the caller to the session from their earlier call on that number, even if the number has been leased to someone else since. Attribution follows that earlier visit. Routing and price follow the pool’s current settings.
What happens if a number can’t be leased?
The page shows your static fallback number, so visitors can always call. It tries again after about ten seconds and goes back to leased numbers on its own.
Will the number flicker when the page loads?
Not with the server-to-server install: your server leases the number before the page renders. The on-page script swaps the number after load and touches only text and tel: links.
How many numbers does a pool need?
Enough to cover the visitors who have your call button on screen at the same moment, not your daily traffic. Hidden tabs let their leases lapse, so the peak number of people on the page at once is what counts. We size the pool with you.
How are ring pool calls billed?
Per placement. A price of 0 means tracking only. A positive price bills once, when the call passes your duration threshold. Calls from outside the campaign’s geo footprint or your schedule are never billed.
Know who called, and why.
Put a pool on one landing page and follow its calls from click to sale.