Smileline
Lead capture

Call tracking

Phone numbers that attribute every call — rotating numbers for your website, and static numbers for the adverts you print.

Most patients still pick up the phone. Call tracking closes the gap web forms leave: a visitor who arrived from an ad sees a dedicated tracking number on your site, and when they call it, Smileline knows exactly which campaign, keyword and click brought them — the same attribution a form submission gets.

Call tracking is part of the core plan, for UK and US practices. There is no add-on to enable: you pay only for the numbers you hold and the minutes you use, listed on the billing page.

How it works

  1. You create a tracking pool and buy a few numbers into it.
  2. The website tracking script you already installed swaps your published phone number for one from the pool, per visitor. Each visitor keeps their number for a few hours after their last visit, so a same-day callback still matches.
  3. When the number is called, Smileline answers and records the call, then puts it through as the pool's call routing says: ringing your team, playing a keypad menu or forwarding it to the practice's phone. The caller's web session — UTM parameters, click IDs, landing page — is attached to the call.
  4. The call becomes a lead the moment it is put through — while your phones are still ringing: a known caller is matched by their mobile number, or by their Other phone when no other patient has that number; an unknown caller becomes a patient with a journey and a Today task, exactly like a form submission. Whoever answers gets that lead opened on Today, so you can work it during the call. Missed calls become leads too — a missed call is someone to ring back. Only a caller who picks a keypad option that isn't a New-patient line, or whose number you have blocked, is just logged.

An unknown caller is listed as Unknown caller with their number beside it until somebody learns their name: the outcome wizard asks for it once you have spoken to them (see when nobody knows their name), and a form, online booking or lead ad they fill in later with the same number or email adds it. Messages sent to them greet them without a name — never as "Unknown caller". If the caller turns out to be someone already in Smileline who rang from another number, merge the two records.

Every tracked call is logged and recorded, and transcribed when the transcription switch is on.

That is the rotating pool your website uses. Anything printed — a leaflet, a newspaper advert, a radio slot, your Google Business Profile — has no website visit to read, so it gets a static tracking number instead: one number, one lead source, no rotation. See Track printed and offline ads.

Set up a pool

Go to Settings → Call tracking (you need a role that manages phone settings) and click New pool.

Name it after the audience — for example “Website — Google Ads”. One pool per website is a fine start; add more when different pages' calls should go to different places. Up to ten pools can be live at once — archive one to make room. Archiving stops the pool's numbers being swapped into the page; calls to the numbers it still holds keep following its routing, and those numbers keep billing until you release them.

Choose its location. Every pool needs one. New callers become leads at this location, and until you set where the pool's calls go they follow it: with Smileline Voice the location's staff ring, without it calls are forwarded to the location's phone. The location's phone is also the pool's safety net: if Smileline itself is ever unavailable, calls to the pool's numbers are forwarded straight there, and each one is written to the review queue within the hour so you can ring the caller back. It updates by itself within about five minutes of a change to the pool's location or to the location's phone.

Choose where calls go — without Smileline Voice. Under Where calls go, Phone to forward to starts as the location's phone. Type another number to send the pool's calls there instead — a mobile or landline in your practice's country, outside Smileline — and pick what That phone sees: This practice number (the tracking number that was dialled) or The caller's number. Leave it as it is and calls keep going to the location's phone. If the pool already plays a keypad menu, an announcement or the AI agent, or takes a different route while closed, the dialog says This pool has its own call routing. with a link to change it on Call routing. With Smileline Voice this field isn't shown: set where the pool's calls go on Call routing.

Pick what new enquiries become. The treatment is required while the pool is live — it is what guarantees an unknown caller turns into a journey on the board and a task in Today.

Choose where the number appears. Under Where the tracking number appears on your website pick any mix of three ways — all optional:

  • Replace every phone number on the site (off by default) — the script finds every phone-shaped number on the page, in text and tel: links, and swaps them all for this pool's number. Only one live pool per practice can have this on; saving a second fails with “Another live pool already replaces every number on the site”.
  • Specific numbers to replace — list the numbers currently shown on your site in international form (+44…); only those are swapped.
  • Tag the elements yourself — mark any phone link or text element on the site and the script fills it, no number list needed. See Mark the elements on your site.

Buy numbers into the pool. Click Buy number on the pool. It searches straight away for numbers where the pool's site is, with the Town or area code filled in from that site; type another town or area code and press Enter to search elsewhere. Tick the numbers you want — or the box beside N selected to take every number listed — and click Buy. They are ordered one after another; if one can't be ordered, the rest stay ticked so Buy tries them again. Numbers you hold or have on order drop out of the results, so search again to buy more. Two or three numbers cover a typical site; busy campaigns need more. A visitor keeps their number for four hours after they were last seen (30 minutes if they never came back, so crawlers and one-page visits don't hold numbers all day), and a freed number waits ten minutes before it is handed to someone else. Sized against real traffic: at four new visitors an hour a pool of three numbers shows a tracking number to more than 85 % of them, and two numbers cover a quieter site with two an hour. When every number is held, new visitors simply see your real number, the pool shows All numbers held, and the card counts the page loads it could not serve — N unserved requests today / this week — so you can see whether it happens once a week or every afternoon. Pool size is the dial to turn if it does. Anyone who knows your public site key could hold numbers the same way; the page always keeps working, and the badge and the counter are how you'd notice.

Set where its calls go. Click Set where its calls go on the pool's card. It opens the pool on Settings → Call routing, where all its numbers share one routing: opening hours, a keypad menu, where calls forward and, with Smileline Voice, who rings. See Tracking numbers.

Every number the practice holds — pool members, static numbers and phone-system lines — is listed together on Settings → Phone numbers, with the role each one plays. Release a number, or move one between roles, from there; this page keeps the pools themselves.

UK numbers need approved business verification first (an Ofcom requirement). One verification covers Voice numbers and tracking numbers alike — start it from the banner on the Call tracking page, and click View review there to see the reviewer's verdict on each detail, their messages, and to fix anything declined. See Complete UK verification.

Use Replace every phone number on the site only when the site shows a single practice number. Every number it swaps forwards to this pool, and it also rewrites other phone-shaped numbers on the page — a partner practice's number, an NHS helpline — so those callers reach you instead.

Mark the elements on your site

Add class="sl-phone" (or the attribute data-sl-phone) to any phone link or text element. The script fills its text and its tel: link — the element itself when it is the link, otherwise the link around or inside it — with the visitor's tracking number:

<a href="tel:+442079460958" class="sl-phone">020 7946 0958</a>

With several pools, data-sl-phone="<pool id>" picks which pool the element shows — the id is displayed in the pool dialog.

Copy for AI beside the example puts a ready-made brief on your clipboard for ChatGPT, Claude, Cursor or your developer: the markup, this pool's id and swap rules, and the reasons a number is left alone.

The script processes roughly the first 2,000 text nodes that contain a digit on a page (indentation and prose cost nothing) and watches content added during the first 10 seconds after load, so keep phone numbers in the page's own markup rather than in late-loading widgets. It only ever rewrites a run that is exactly one of the numbers a pool lists — a number glued to other digits, like an opening-hours line, is left alone rather than damaged. A visitor who already holds a tracking number keeps the swap rules that came with it for up to 10 minutes, so a change to these settings reaches returning visitors after that.

Keypad menu with New-patient line

A tracking number needs no menu: without one, every caller is captured as a lead. If regulars keep calling it, give its routing a keypad menu on Settings → Call routing — for example “If you're a new patient, press 1. If you're an existing patient, press 2.” — and turn on New-patient line for the new-patient option. With Smileline Voice, New ring group → Patient menu sets exactly that up, with who answers each key; without it, choosing Keypad menu starts from it, with both options forwarding to the location's phone.

Every caller is still answered, recorded and logged, whatever they press. A caller who picks a New-patient line, or presses nothing, becomes a lead. A caller who picks any other option is only logged: one whose number matches a patient gets the call on their timeline instead of a fresh lead in Today.

Track printed and offline ads

A pool answers the question which campaign sent this visitor to my website. A leaflet, a press advert, a radio slot or your Google Business Profile listing has no visit to read, so a pool cannot attribute it — a caller with no web session is simply recorded as Phone call.

Give each of those its own static tracking number instead: one number, printed in one place, pinned to one lead source. Every call to it is attributed to that source, however the caller found it.

Website poolStatic tracking number
Who sees the numberone website visitor at a time, swapped in by the scriptwhoever reads the advert
Attributionthe visitor's campaign, keyword and clickthe one lead source pinned to the number
Where calls goone call routing shared by all the pool's numbersits own call routing
Treatment, locationtaken from the poolset on the number itself
Keypad menuoptionaloptional
Good forGoogle Ads, Meta, organic search, any web campaignleaflets, press, radio, vehicle livery, directory listings, your Google Business Profile

Set one up

Get the number. Click Buy number on any pool on this page to order one, or use a number you already hold.

Go to Settings → Phone numbers, click Change role on that number and choose Static tracking number. See Change a number's role.

Pick the lead source every call to it is attributed to. Make one per advert — “Autumn leaflet”, “Metro half-page” — so the reports separate them. Add them under Settings → Lead sources first if they don't exist yet.

Pick the treatment a new enquiry becomes and the location the call belongs to. Until you set where its calls go, they follow that location: its staff ring with Smileline Voice, its phone without.

Set where its calls go: on Settings → Call routing the number has its own card under Tracking numbers. See Tracking numbers.

Print the number on the advert.

Static numbers behave like pool numbers everywhere else: calls are answered, recorded, follow their routing and — with the transcription switch on — are transcribed, and they reach Today, the timeline and the review queue in the same way. They are not in a pool, so they don't use up your ten-pool allowance and the website script never shows them. Every caller who isn't already a patient becomes a new enquiry from that source, unless they pick a keypad option that isn't a New-patient line.

While a static number is live it holds on to what it points at: you can't archive that lead source, treatment or location. Change the number's settings first, or release it.

Read a static number's figures as new patients this advert brought, not everyone who rang it. A patient's Lead source is set once, when Smileline first creates their record, so a first-time caller is acquired under the advert's source and counts there in acquisition reports. Someone who already enquired months ago keeps the source they arrived with — their call still lands on their timeline, and the touch still records the advert, but the report doesn't move them.

What shows up in the CRM

  • Today — a new-lead task for every lead-eligible call, missed calls included, from the moment it rings. While the call lasts, the caller's card sits first in New · Call now; nobody's queue opens it or dials it on its own, and the person who answers gets it opened in their work panel. A caller who already has an open lead keeps it — the call is filed there and that card is the one that opens. Once the call ends, a caller Smileline could not tie to a web session shows as an Incoming call at the top of New · Call now; a caller it could tie to one keeps that web source and sorts by time with the other new leads.
  • The patient timeline — the call with its duration, outcome, recording and transcript.
  • Attribution — the visitor's UTMs and click IDs on the lead touch, so conversion feedback reports the call to Google or Meta like any other lead. A new caller's Lead source is worked out from that campaign data — see How the lead source is chosen; a caller with no web session (someone who typed the number from a leaflet) gets the practice's Phone call source. A call to a static tracking number skips all of that and is attributed to the source pinned on the number.
  • The review queue — the rare call that could not become a lead by itself, such as a withheld number; listen to the recording and follow up by hand.
  • The Calls report — answer rate, ring time, calls by hour, the UTM source / campaign / keyword behind each call and the missed calls nobody rang back. See Calls.
  • A caller-ID label in the call log — where the carrier reports the call's STIR/SHAKEN attestation, the Desk call log shows Caller ID verified, Caller ID attested, Caller ID via gateway or Caller ID unverified on the row. It is a hint for the person answering, nothing more: an unverified caller with a real number is still logged, recorded, captured as a lead and followed up like everyone else. Only a withheld or unusable number keeps a call out of the pipeline, and that call is parked in the review queue where you can see it.

Send tracked calls to GA4

Google Analytics only sees what happens in the browser, so a visitor who reads your number and picks up the phone is a conversion GA4 never records. Connecting your GA4 property sends each attributed tracked call to it as a phone_call event, stitched to the same visitor and session the tracking script saw — so the call lands in the same reports, funnels and audiences as your web form submissions.

In GA4 open Admin → Data streams, pick your web stream, and copy its Measurement ID (G-…). Under Measurement Protocol API secrets, create a secret and copy the value.

On Settings → Call tracking, under Google Analytics 4, paste both and click Connect. The secret is stored encrypted and never shown again; to rotate it, paste the new one and Save.

What is sent: the visitor's GA client and session ids (the same ones the tracking script reads from your GA cookies), the time of the call, whether it was answered, the talk and ring durations, and a stable event id per call so a retry can never count twice. Nothing about the caller — no phone number, no name — leaves Smileline. Personalised advertising is switched off on every event.

Only calls with a web session are sent: a caller with no session, or a visitor whose consent setting or browser kept the GA cookie from being stored, has nothing to stitch to and produces no event. Events are delivered within about five minutes and retried for up to three days, which is as far back as GA4 accepts them; a call that could not be delivered in that window is skipped and counted on the settings card, and saving the GA4 settings re-sends anything that is still deliverable.

Pricing

Call tracking bills three things, all usage-based and shown on the billing page: a monthly charge per held number, a per-minute rate for answered tracked calls (both call legs and the recording included), and a per-minute rate for transcription. Both pool members and static numbers cost the same per number. A tracked call the AI receptionist answers is billed as a tracked call, and its AI minutes are billed on top as usual. Releasing one from Settings → Phone numbers stops its monthly charge immediately; released numbers cannot be recovered.

When nobody answers a tracked call

What happens next is set by the number's call routing. Unless that routing says otherwise, while Smileline Voice is active a call nobody picks up reaches voicemail, like a call to the practice's own number: the message lands in the voicemail inbox, and the enquiry is still captured with its campaign attribution. Without Voice, or while it is switched off, there is no voicemail: the caller hears “Sorry, we couldn't connect your call. Please try again in a few minutes.” and the call ends. Either way the call is logged as missed, and the missed-call follow-ups (text-back, call-back) apply to tracked numbers too.

On this page