+1 prefix, and any trailing extension (x123), so visitors never see anything unusual.
Search engine crawlers always see your site’s original number. Tracking numbers are never served to bots, so your indexed business listings and local SEO citations stay consistent.
How it works
1
A visitor lands on your site
The tracking script assigns them a number from your pool and swaps it into every
tel: link and any plain-text numbers you’ve configured.2
The number sticks to them
A visitor keeps their number for roughly 30 minutes of browsing, extended after they call — so navigating between pages, or returning a few minutes later, shows the same number.
3
They call
The call rings wherever that number already routes — an extension, ring group, IVR, queue, or the AI agent. Joining a pool does not change a number’s routing by itself, but a pool can carry a destination that every member inherits, and setting one rewrites every member’s routing, so check the pool before assuming a number still rings where it did.
4
The call is attributed
The call record picks up the visitor’s UTM source, medium, and campaign, the landing page, the referrer, and any ad click IDs (Google, Facebook, Microsoft, TikTok). For Google Ads clicks, attribution goes down to the campaign, ad group, and keyword.
Set it up
1. Create a number pool
From Communications → Pools (/dashboard/communications/pools), click New pool and add a few tracking numbers. Buy numbers first on the Numbers tab if you need them — see Phone Numbers.
Size the pool for how many visitors browse at the same moment: 2-4 numbers covers a modest site; heavy ad traffic needs more. When every number is in use, extra visitors see your main number — the call still lands, just without per-visitor attribution. If a pool stays fully occupied for a sustained period, account admins receive an email suggesting you add numbers.
2. Enable tracking on your project
Open your website project’s Hosting page and find the Phone Tracking card. Tracking is configured per environment (Development, Staging, Production) — switch the tier selector to the environment you want, toggle the card on, and pick a pool. Separate configs mean test traffic never pollutes production attribution. For sites hosted on Hiveku, that’s it — the tracking script auto-injects on every deployment. For sites hosted elsewhere, expand Manual install (external hosting) on the card and paste the script tag into the<head> of every page.
Consent mode and the on/off toggle are written into the site at deploy time: a change takes effect on that environment’s next deployment, not immediately.
3. Tell it which numbers to replace
Links usingtel: are found and swapped automatically. If your number also appears as plain text (a header, a footer, body copy), add it under Numbers to look for on the card — up to 5 numbers, in any format.
Under Advanced swap rules you can also set a Custom CSS selector for elements your site renders phone numbers into, and a Text-node regex to replace any text matching a pattern.
4. Prove it works
The card’s Swap tester has two buttons:- Watch it swap — opens your live site in a popup. A banner on the page confirms the swap, and the verdict (which number was shown, how many links and text mentions were updated) reports back to the card.
- Test my live site — runs full diagnostics: site reachable, tracking script detected, swappable numbers found on the page, a real test assignment, and how many pool numbers are free right now.
Local numbers for every visitor
When your pool holds numbers from more than one area code, each visitor is preferentially shown a number local to them — a Dallas visitor sees a 214/469/972 number, a Toronto visitor a 416 — based on where they are browsing from. No setup is needed beyond stocking the pool: the Pools page shows each pool’s area-code spread so you can add numbers in your visitors’ top regions. Visitors from regions you have no local number for simply get the next available number, exactly as before.Hiveku watches it for you
Two automatic monitors mean a broken setup never fails silently:- Swap health — every few hours Hiveku checks each live site: is it reachable, is the tracking script still present, and does the pool have free numbers? A confirmed problem (checked twice, so a momentary blip never cries wolf) emails account admins with the specific issue and how to fix it. Sites whose script loads through Google Tag Manager are exempt from the script check, and search-engine or security-bot responses are never mistaken for outages.
- Pool capacity — the moment every number in a pool is assigned at once, admins get an email explaining that overflow visitors are seeing the fallback number, how many numbers are held by recent callers, and the three ways to fix it (add numbers, shorten the sticky window, review the post-call hold).
Repeat callers and number recycling
Tracking numbers recycle quickly so a small pool goes a long way:- After a visitor calls, their number is held for two more days so a quick callback still reaches the same attribution.
- If the same person calls again within 90 days — even after their original tracking number has been handed to a new visitor — the call is matched back to their original campaign and marked as a repeat caller, so a returning customer doesn’t get miscounted as a fresh lead from someone else’s ad.
Where tracked calls show up
- Analytics → Calls
- Marketing → PPC
- CRM timeline
- Communications → Calls
Every website project gets a Calls view on its Analytics tab: KPI tiles (Total, Answered, Missed, Avg Duration, Unique Callers, Attributed %), breakdown cards by source, campaign, keyword, ad group, and tracking number, and a call log with the caller, disposition, duration, keyword, a repeat-caller marker, per-platform conversion-upload chips, and inline recording playback. Calls that could not be attributed show honestly as Unmatched rather than inflating Direct traffic, and the view defaults to production traffic with an “Include test traffic” toggle.
Conversation keywords
Turn on Conversation keywords in Communications → Settings and list the terms that matter to your business — “quote”, “pricing”, “appointment”, “cancel”. Every recorded call’s transcript is scanned automatically:- Matched terms appear as chips on the call log and in the call’s details.
- The communications Analytics page charts which terms come up and how often, week over week.
- Workflow triggers can filter on spotted keywords — text the owner the moment a call mentions “cancel”, or open a task when “quote” comes up. Multi-word phrases are supported; separate terms with commas.
Missed-call auto-text
Turn on the Missed-call SMS autoresponder in Communications → Settings to text a caller the moment an inbound call is missed or goes to voicemail. Personalize the message with{caller_first_name}, {caller_number}, and {business_number} — the editor shows a live character and SMS-segment count (up to 1,600 characters).
Send conversions back to your ad platforms
In Communications → Settings, under Ad conversion uploads, one toggle sends qualifying tracked calls to every ad platform you have connected:- Google Ads — calls that carried a Google click ID upload as offline conversions, so Smart Bidding learns which campaigns and keywords make the phone ring. Requires a Google Ads account connected in Marketing → PPC.
- Microsoft Advertising — calls that arrived through a Microsoft/Bing ad (an
msclkidon the landing URL) upload to a “Hiveku - Phone Call” offline conversion goal, created for you automatically in the connected Microsoft account. Requires a Microsoft Advertising connection in Marketing → PPC. - Meta — calls that arrived through a Facebook or Instagram ad (an
fbclid) post to your Meta dataset asphone_callconversion events, joined to the ad click. Requires a Meta Ads connection in Marketing → PPC; if the ad account has one pixel it is picked automatically, otherwise Hiveku asks which to use. Only the ad-click reference is sent — never the caller’s name, email, or phone number. - Which calls count — All tracked calls, Answered calls only, or Qualified calls (answered or at least N seconds long, so a detailed voicemail still counts). The default is Answered — a missed three-second call should not train your bidding.
- Conversion value — optional fixed value and currency per call; leave blank to use the platform-side default.
phone_call event to your GA4 property for qualifying tracked calls, joined to the visitor’s real Analytics session. Requires Google Analytics connected in Marketing → SEO, and uses the same call policy.
Every upload’s status is visible on the call itself — open a call in Communications → Calls and the Attribution tab shows a chip per platform (uploaded, queued, or failed with the reason), so a disconnected ad account can never silently stop your conversions.
Floating call widget
If your site doesn’t display a tappable phone number, enable the Floating call widget on the Phone Tracking card. It renders a small “Call us” pill anchored to the bottom-right or bottom-left corner, always showing the visitor’s tracking number. An optional fallback number covers the rare case a visitor can’t get one.Routing by caller location
Any number — pool member or not — can route by the caller’s own area code: open it in Communications → Numbers and add rules under Route by caller location (for example, send 214/469/972 callers to the Dallas ring group and everyone else to the default). Ring groups’ round robin strategy now takes true turns, starting each new call at the next member in the rotation.Tracking offline sources
Dynamic swapping needs a web session, so for offline channels — a billboard, a print ad, a business listing — dedicate a regular number instead: open it in Communications → Numbers and tag it with a tracking source and campaign name. Calls to that number carry the tag, giving you per-channel counts without a pool.Operate it from an AI agent
Everything on this page is reachable from the Hiveku plugin for Claude Code, and from any MCP client through the same tools. Two commands cover the day-to-day:/hiveku:call-tracking sets up, tests, and repairs the swap (including the CallRail cutover and an exhausted pool), and /hiveku:call-report answers “which ads made the phone ring” with the attribution breakdown and the cost per call.
The tools behind them:
Which of these a key can call depends on its profile: the reads above, the doctor, and the setup run resolve on a paid-ads (PPC) key;
voice_swap_test and the pool and config writes need a communications or full key. A tool name that does not resolve is a profile question before it is a missing feature.
Troubleshooting
My site still shows the regular number
My site still shows the regular number
Run Test my live site on the Phone Tracking card. The usual causes: the tracking script isn’t on the deployed site yet (redeploy, or check the manual install), the number appears as plain text and isn’t listed under Numbers to look for, or the pool is exhausted so visitors are seeing the fallback. If you’re checking by hand, remember your own visit may be sticky — use a private window.
The tester says the pool is exhausted
The tester says the pool is exhausted
Every number is currently assigned to an active visitor. Add more numbers to the pool — the diagnostics show how many are free right now, and sustained exhaustion also triggers an email to account admins.
Calls show up but without a campaign
Calls show up but without a campaign
Direct visits, and calls placed while the pool was exhausted, have no ad context to attach — they still appear in the Calls view, just unattributed. Ad-driven calls attribute automatically when the visitor arrived through a tagged URL or an ad click.
Conversions aren't appearing in Google Ads
Conversions aren't appearing in Google Ads
Only tracked calls that carried a Google click ID upload, and only when Upload call conversions to Google Ads is on with a connected Google Ads account. Uploads can also lag a very recent click — Google rejects conversions for clicks it hasn’t finished registering, and Hiveku retries these automatically.
Next steps
Phone Numbers
Buy the tracking numbers for your pool and set their routing.
SMS Messaging
Complete carrier registration so missed-call texts can send.
Hosting
Where the Phone Tracking card lives, alongside the other hosting add-ons.
Compliance and Recording
Recording consent, retention, and messaging rules.