Skip to content
gohighlevel call tracking

How Do You Set Up Call Tracking Number Pools in GoHighLevel?

How GoHighLevel number pools track which ads and keywords drive phone calls: step-by-step setup, the October 2026 ring-multiple-users and ad platform attribution updates, reporting, and common pitfalls.

dr

DRGHL

GoHighLevel developer

·8 min read
How Do You Set Up Call Tracking Number Pools in GoHighLevel?

Short answer: In GoHighLevel, call tracking runs on a number pool: a set of at least four tracking numbers that swap onto your site based on how each visitor arrived, so every call is tied back to its source, keyword, and landing page. You create the pool under Settings → Phone Numbers → Add Number Pool, paste its snippet into your funnel or website's body tracking code, and read results in the Call Report. As of October 2026, pool calls can also ring up to six team members on their own devices, and calls from Facebook, TikTok, LinkedIn, and Microsoft ads now get proper "Paid" labels.

What is a number pool in GoHighLevel?

A number pool is a group of phone numbers HighLevel rotates onto your website. When someone lands on a page, a tracking script checks how they arrived (a Google Ads click, a Facebook ad, organic search, a direct visit) and shows them one number from the pool in place of your normal business number. When they call that number, HighLevel matches the call to that visitor's session and records the source, the keyword where available, and the page they were on.

A pool is needed because one static number can't tell two visitors apart. Rotating numbers across active sessions is what ties a specific call to a specific click.

What do you need before creating a pool?

  • Phone Numbers access in the sub-account settings
  • An external forwarding number. That means your real office line or a cell phone, not a Twilio or LC Phone number from the same account. Pointing a pool at one of those creates a call loop.
  • Budget for at least four numbers. Each pool number is billed like any other phone number in the account.
  • Access to the funnel or website settings where you'll paste the tracking snippet
  • For Google Ads keyword data, the ability to edit your ad's final URL

US, Canada, and Puerto Rico numbers may also require identity verification for the sub-account before HighLevel lets you buy or replenish pool numbers.

How do you set up a number pool step by step?

  1. Go to Settings → Phone Numbers, open the Add Number dropdown, and choose Add Number Pool.
  2. Choose Visitor Activity tracking and pick which visitors should see a tracking number. All visitors gives the fullest picture. PPC search only swaps numbers for paid-ad clicks, so organic visitors keep seeing your default number.
  3. Name the pool clearly, for example "Client – Google Ads – Main Site", and set the pool size. Four is the minimum. Increase it if you get a lot of simultaneous traffic.
  4. Enter the forwarding number (where calls should go) and the swap number (the number currently printed on the site that the script will replace). These can be the same or different.
  5. Choose local, toll-free, or specific area code numbers.
  6. Optionally add a whisper message, a short announcement only your team hears when they pick up, such as "Google Ads call", and turn on call recording with a caller notice if you need it.
  7. Activate the pool.
  8. Open the pool's menu, select Number Pool Info, and copy the normal snippet.
  9. Paste it at the bottom of the Body Tracking Code in your funnel or website settings to cover the whole site, or into a single page's footer tracking if you only want it on one page.

For Google Ads keyword capture, append ?keyword={keyword} to the ad's final URL so the search term follows the visitor into the call record.

What changed in October 2026?

Two updates landed in the HighLevel changelog this month, and both remove long-standing complaints.

1. Pool calls can now ring your team, not just one forwarding number. Until now, pool calls could only go to the forwarding number, which made them awkward for teams working from the web app or mobile app. There's now a Ring Incoming Call to selected Users option in the pool settings. You can pick up to six team members, and they all ring at the same time on whichever device each person chose. Each user sets that device under Settings → My Staff → Edit → Call & Voicemail → Default channel for ring all: web app, mobile app, desk phone, or their own number.

2. Ad platform attribution got a lot more accurate. Calls from Facebook ads used to show up as "Facebook" or even "Direct", so you couldn't separate them from organic social. They now show as Facebook Paid. TikTok, LinkedIn, and Microsoft (Bing) ads are recognised too. Any link tagged utm_medium=cpc gets the platform name plus "Paid", and visits referred by AI assistants such as ChatGPT appear as their own source. There's nothing to set up because the tracking script updates itself. The new labels only apply to new calls, though, so older calls keep their original source.

How do the routing options compare?

Setup Who answers Best for
Forwarding number only One external line Solo operators, single office phone
Ring selected users (up to 6) Team members at once, on their preferred device Small sales or front-desk teams
Forwarding to an IVR or call center line Whatever system sits behind that number Larger call operations with their own routing

If you need routing more complex than "ring these six people," keep the pool for attribution and send calls to a line that handles queueing. We built that pattern in a custom call center platform for a life insurance agency.

How do you see and act on the results?

Go to Reporting → Call Report and check the source and Keyword columns. Scroll right to see the page the caller visited, and click a contact to see their full activity timeline.

To turn tracked calls into automation, use the Call Details workflow trigger with the In Number Pool filter. Combine it with call status filters to, for example, tag every Google Ads caller, create a callback task when a pool call goes unanswered, or move a contact into a pipeline stage. If you need these calls in a warehouse or BI tool, send the same events through a webhook action into middleware that uses HighLevel's API v2 with OAuth 2.0 for any enrichment. Our GoHighLevel to PostgreSQL guide covers that pipeline.

What are the common pitfalls?

  • Number format mismatch. The number displayed on the page, the tel: link, and the swap number you entered must use exactly the same format. (555) 010-2030 and +15550102030 are treated as different numbers, so nothing swaps.
  • Snippet in the wrong place. It belongs in the body tracking code (site-wide) or page footer tracking, not in a random HTML element.
  • Testing with a direct visit. If the pool excludes direct traffic, typing the URL yourself won't trigger a swap. Test in an incognito window by arriving from another page or a real ad click.
  • Faking Google Ads parameters. HighLevel only treats a visit as Google Ads if the click identifier comes from a real ad, so a hand-built test URL won't count.
  • Forwarding to a number in the same account. This causes call loops. Use an external line or the new ring-users option.
  • Pool too small. If more people are on the site at once than you have numbers, attribution gets less reliable. Size the pool to your peak traffic, not your average.
  • Deleting a pool to "clean up." Deleting a pool deletes its numbers. Move or remove numbers first if you want to keep them.

FAQ

How many numbers does a GoHighLevel number pool need?
At least four. HighLevel's own guidance puts visitor-tracking pools at about four to eight numbers, more for high-traffic sites.

Can number pool calls go to the HighLevel mobile app?
Yes, as of October 2026. Turn on "Ring Incoming Call to selected Users" in the pool settings and each selected user can answer on the mobile app, web app, desk phone, or their own number.

Why do some calls still show as "Direct"?
When the visitor's browser hides the referrer and the link has no ad tracking parameters, there's nothing left to attribute the call to. Tagging your ad URLs with UTMs reduces how often this happens.

Do the new ad platform labels apply to old calls?
No. Only calls made after the update get the new labels.

Need help wiring GHL call tracking into your reporting?

DRGHL builds call tracking setups, call-center routing, and reporting pipelines on top of HighLevel for agencies and SaaS teams. That includes webhook and API v2 integrations that send tracked calls into your own dashboards. Book a discovery call and we'll scope it with you.

Sources: How to Set Up Call Tracking (Number Pool) · Enhanced Number Pool Management · Workflow Trigger – Call Details · Changelog: ring number pool calls to multiple users · Changelog: ad platform on number pool calls

Share

Comments

Loading comments…

Leave a comment

Moderated before publish. Email stays private — never shown publicly.

Topics

gohighlevel call trackingnumber poolphone systemcall attributiongoogle ads