dental-marketing.org
20 new patient inquiries in 90 days.Free 30 minute call. I tell you the number for your market.
Book a Call
Part one · Measurement

How to Actually Measure Your Dental Marketing

A step by step setup for Google Analytics 4, Search Console, Bing Webmaster Tools and Google Tag Manager, written for practice owners who do not write code. Plus the event logic that turns phone taps and form submissions into numbers you can act on.

21 min read No technical background needed Free tools only Updated September 2026

The problem: you are paying for marketing you cannot see

Here is a conversation that happens in dental practices every month.

The practice owner asks the marketing company how things are going. The marketing company sends a report. The report has traffic on it, and impressions, and a line about rankings improving. The owner looks at it, cannot connect any of it to the patients who actually walked through the door, and files it. Next month the same thing happens.

Nobody is lying in that exchange. The problem is that the report is measuring the wrong thing, and the reason it is measuring the wrong thing is that the right thing was never set up.

The right thing is simple to state. When someone finds your practice online and tries to reach you, that moment should be recorded. Not the visit. Not the pageview. The moment they tap your phone number, or submit your booking form, or click your email address. That is the only event in the entire funnel that has a direct relationship with revenue, and in most practices it is completely invisible.

Why most dental practices cannot tell you what their marketing did
54%
of local business websites have no conversion goals configured at all
BrightLocal, 11,016 local business sites
89%
of those that do have goals assigned them a value of zero
Same study
44%
of healthcare consumers prefer to call rather than fill in a form
Invoca Healthcare Consumer Experience Report, 2026
If the phone is the main way patients reach you, and the phone is not measured, then the majority of your marketing result is invisible.
SourceBrightLocal, Google Analytics for Local Businesses Study, 11,016 local business websites analysed · www.brightlocal.com/research/google-analytics-for-local-busine…

That first number is the one worth sitting with. More than half of local business websites have no conversion tracking at all. Not badly configured tracking. None. Which means those businesses have been making marketing decisions for years based on a traffic number that tells them nothing about whether the phone rang.

For a dental practice this is worse than average, because the dominant way patients reach a dental practice is the telephone. Invoca surveyed healthcare consumers in May 2026 and found that 44 percent prefer to call when they need help, the highest of any channel they tested, and 85 percent will switch to a faster competitor if reaching you is slow.

SourceInvoca, Healthcare Consumer Experience Report 2026 · www.invoca.com/reports/healthcare-consumer-experience-report-2…

So the single most important patient action is a phone tap, and Google Analytics does not record phone taps unless you build that yourself. This guide is how you build it.

What you are building

Four pieces, in order. Each one depends on the one before it.

The tracking chain, end to end
Four links, in this order
It happens
A patient acts
Taps your number, submits a form, clicks your email
It is named
Tag Manager catches it
Fires a named event like call_click
It is counted
GA4 records it
Stored and marked as a key event
It is read
Looker reports it
One page you actually look at each month
Break any one link and the chain reports nothing. Most practices have link one and link four, and nothing in between.

Most practices have the first link and the last link and nothing in between. Something happens, and eventually somebody makes a report, and the report is built out of whatever Google happened to record for free. The middle two links are the work, and the middle two links are where all the value is.

Here is what each piece actually does, in plain terms.

Google Analytics 4

The database. It stores every recorded action on your website and lets you ask questions about them later. It is free, it is the industry default, and it will happily run for years collecting data you never configured properly.

Google Tag Manager

The control panel. Instead of asking your web developer to add code every time you want to measure something new, you install Tag Manager once and then configure everything through a web interface. This is the piece most practices skip, and skipping it is why their tracking never improves after month one.

Google Search Console

The other half of the picture. Analytics tells you what people did once they arrived. Search Console tells you what they searched for before they arrived, what position you appeared in, and how often anyone clicked. These are two completely different datasets and you need both.

Bing Webmaster Tools

Smaller, but it takes fifteen minutes and it feeds Microsoft Copilot and several AI answer tools. There is no argument for not doing it.

Looker Studio

The report. Free, made by Google, connects to all of the above, and produces a single page that a practice owner will actually read. This is covered as a bonus section at the end.

Step one: Google Analytics 4

If a previous agency already set up a GA4 property for your site, use theirs. Do not create a second one. Two properties measuring the same website is the fastest route to two sets of numbers that disagree, and there is no way to merge them later. Ask for access instead.

If there is nothing there, here is the sequence.

  1. Go to analytics.google.com and sign in with the account you want to own this long term. Not a staff member who might leave. Ideally a practice email address that more than one person can access.
  2. Choose Admin, then Create, then Property. Name it something obvious like the practice name. Set the reporting timezone and currency correctly, because these cannot be changed later without consequences.
  3. Work through the business details screens. Industry category, business size, intended use. None of these affect measurement. Answer them and move on.
  4. Under Data collection and modification, choose Data Streams, then Add stream, then Web. Enter the site URL and a stream name.
  5. Leave Enhanced measurement turned on. It gives you scroll depth, outbound clicks, file downloads and site search for free.
  6. Open the stream you just made. Under Stream details there is a Measurement ID beginning with G dash. Copy it. This is the only value you carry forward.
Step 1. Create the GA4 property and web data stream
analytics.google.com
Google Analytics
Admin › Data collection › Data streams
Property name
Practice website
Website URL
https://www.yourpractice.com
Stream name
Main site
Measurement ID
G‑XXXXXXXXXX
This is the only value you carry to the next step. Copy it somewhere safe.
View tag instructions   Enhanced measurement: On
Do this once. If a previous agency already made a property, use theirs rather than starting a second one. Two properties measuring the same site is the fastest way to end up with two sets of numbers that disagree.
SourceGoogle Analytics Help, Set up Analytics for a website and/or app · support.google.com/analytics/answer/9304153

Google says data collection begins within about thirty minutes of the tag going live. If you look at Realtime and see nothing after an hour, the tag is not on the page, which we will come back to.

What Enhanced measurement does and does not cover

This matters more than anything else in this guide, so it gets its own table.

What Enhanced Measurement covers automatically, and what it misses
Patient actionTracked automatically?What you have to do
Page viewsYesNothing
Scrolling to 90% of a pageYesNothing
Clicking a link to another websiteYesNothing
File downloads (new patient forms)YesNothing
Tapping the phone numberNoBuild a Just Links trigger in Tag Manager
Clicking the email addressNoBuild a Just Links trigger in Tag Manager
Submitting the booking formNot reliablyPush a custom event on form success
A call that actually connectsNoCall tracking software, not analytics
Scroll the table sideways to see every column.
The pattern. Everything Google gives you for free measures browsing. Everything that measures a patient trying to reach you has to be built. That is the whole job.

Read the bolded rows again. Every free automatic measurement Google gives you is about browsing behaviour. Every action that represents a patient trying to reach you has to be built by hand.

There is a technical reason for the phone number gap that is worth understanding, because it explains why so many practices assume they are covered when they are not. Google defines an outbound click as a click on a link that leads away from your domain to another website. A tel: link does not lead to another website. It hands off to the phone application. So it does not qualify, and enhanced measurement ignores it entirely.

SourceGoogle Analytics Help, Enhanced measurement events · support.google.com/analytics/answer/9216061

Step two: Google Tag Manager

Tag Manager is a container you install once. After that, every new thing you want to measure is configured in a web interface instead of in your website code. If you only take one structural decision from this guide, take this one.

The alternative, which is what most practices end up with, is a website with four or five tracking snippets pasted in by different people over several years, none of whom documented what they did. Nobody knows what is firing. Nobody wants to remove anything in case it breaks something. That is the state Tag Manager exists to prevent.

Step 2. Install Google Tag Manager
Two code blocks, two places
1
Create the account and container
At tagmanager.google.com, create an account for the practice and a Web container for the site. Google gives you a container ID that starts with GTM‑.
2
Paste block one as high in the <head> as possible
This is the JavaScript block. Google's wording is literal: as high in the head tag as possible. On Webflow this goes in Site settings, Custom code, Head code.
3
Paste block two immediately after the opening <body> tag
This is the noscript iframe block. On Webflow it goes in the Body code field. It is a fallback for visitors with JavaScript disabled.
4
Publish, then verify
Publish the site, then use Preview mode in Tag Manager. A debug panel should connect to your live site. If it will not connect, the snippet is not on the page.
Both blocks go on every page of the site, not just the homepage.
SourceGoogle Tag Manager Help, Install the Tag Manager container · support.google.com/tagmanager/answer/14847097

On Webflow specifically

Site settings, then Custom code. The first block goes in Head code, the second in Body code. Note that custom code fields require a paid site plan or a paid Workspace plan. If those fields are greyed out, that is why.

On WordPress specifically

Either a header and footer scripts plugin, or your theme settings if it has a custom code area. Avoid pasting directly into theme files, because a theme update will wipe it out.

Step three: connect Analytics through Tag Manager

You now have two things installed. The next step is to have Tag Manager fire Analytics, rather than having Analytics installed separately.

Step 3. Fire GA4 from inside Tag Manager
tagmanager.google.com
Google Tag Manager
Tags › New
Tag name
GA4 – Base
Tag type
Google Tag
Tag ID
G‑XXXXXXXXXX
The Measurement ID you copied in step 1.
Trigger
Initialization – All Initialization Events
Submit   Publish and create version
Nothing in Tag Manager is live until you press Publish. Saving a tag does not deploy it. This catches everyone once.
SourceGoogle Tag Manager Help, Set up the Google tag in Tag Manager · support.google.com/tagmanager/answer/9442095

Then go and remove the other one

This is the part people skip, and it is the single most common cause of wrong numbers in small business analytics.

The single most common tagging mistake
Double tagged. Every number is wrong.
  • GA4 snippet hardcoded in the head
  • and Tag Manager also firing GA4
  • Sessions inflated
  • Bounce rate halved
  • Every conversion counted twice
One installation method. Numbers are real.
  • Tag Manager snippet only
  • GA4 fired as a tag inside Tag Manager
  • One pageview per pageview
  • Reports you can act on
  • Room to add new tracking later
Google is unambiguous about this: "You should only use either the Google tag or Tag Manager, not both… Using both methods will have unintended consequences, such as overcounting data from your website." On Webflow this happens constantly, because the Integrations field and the Custom code box are two different places to paste the same ID.
SourceGoogle Analytics Help, Google tag and Google Tag Manager · support.google.com/analytics/answer/9311124

Webflow makes this particularly easy to get wrong, because there are two entirely separate places to put the same Measurement ID. There is a dedicated Google Analytics field under Integrations, and there is the Head code custom code box. If the ID is in both, or if it is in the Integrations field while Tag Manager is also firing GA4, you are double tagged.

Webflow warns about this directly in their own documentation: add the tag in one place only.

SourceWebflow Help, How do I connect my Webflow site to Google Analytics · help.webflow.com/hc/en-us/articles/33961293143059-How-do-I-con…

How to check whether you are double tagged

  1. Open your website. Right click and choose View page source.
  2. Press Ctrl+F or Cmd+F and search for your Measurement ID, the value beginning with G dash.
  3. If it appears in the page source at all while Tag Manager is also firing it, you have a duplicate. Remove the hardcoded one.
  4. One exception: if your site uses the Google Site Kit plugin for WordPress, the ID will not appear as a G dash value. Site Kit deploys a unified tag with a GT prefix instead. Check in Analytics Realtime rather than in the page source.

Step four: Search Console and Bing Webmaster Tools

Analytics tells you what happened after someone arrived. Search Console tells you what happened before. Which queries you appeared for, what position you held, how many people saw you, and how many clicked. It is the only free source of that data and there is no substitute for it.

Choose the property type before you do anything else

Search Console offers two kinds of property and the choice has consequences you cannot undo easily.

Search Console: pick the right property type before you start
URL prefix property
  • Covers exactly one prefix
  • https:// and http:// are separate
  • www and non‑www are separate
  • Half your data silently goes missing
  • Verified by file upload or meta tag
Domain property (use this one)
  • Covers every subdomain and protocol
  • Survives a www redirect change
  • Survives an https migration
  • One property, complete data
  • Verified by a DNS record only
Plan the DNS access before you start. A Domain property can only be verified with a TXT or CNAME record at your registrar. HTML file upload and meta tag verification are not available for it. If your web developer holds the domain, ask them for this first.
SourceGoogle Search Console Help, Verify your site ownership · support.google.com/webmasters/answer/9008080

Use a Domain property. The reason is simple. A URL prefix property reports on exactly one address form. If your site is reachable at both the www and the non-www version, or if it ever moves from http to https, a URL prefix property will silently report on only part of your traffic and give you no warning that it is doing so.

The catch is that a Domain property can only be verified by adding a DNS record at your domain registrar. There is no file upload option and no meta tag option. So before you start, work out who controls the domain. If it is your web developer, ask them for the record to be added, and give them the exact value Google shows you.

Submit the sitemap

Once verified, find your sitemap. On most sites it is at yoursite.com/sitemap.xml. Webflow generates one automatically. Submit it under the Sitemaps report.

Also add a line to your robots.txt file pointing at it. Belt and braces, and it costs nothing.

Sitemap: https://www.yourpractice.com/sitemap.xml

Be realistic about what this achieves. Google is explicit that submitting a sitemap is a hint, not an instruction, and does not guarantee that anything gets crawled or indexed. It helps. It is not magic.

SourceGoogle Search Central, Build and submit a sitemap · developers.google.com/search/docs/crawling-indexing/sitemaps/b…

Bing takes fifteen minutes because you import it

Step 4. Search Console and Bing, in under fifteen minutes
1
Verify Search Console as a Domain property
Add the TXT record your registrar asks for. Propagation is usually minutes, occasionally hours.
2
Submit your sitemap
Usually yoursite.com/sitemap.xml. Submit it in the Sitemaps report, and add a Sitemap: line to robots.txt as well. Google treats it as a hint, not an instruction.
3
Open Bing Webmaster Tools and choose Import
Sign in, then on My Sites choose Import. Authenticate with your Google account and Bing pulls in verified sites and sitemaps automatically.
4
Wait up to 48 hours
Bing needs up to two days to populate traffic data. Nothing has gone wrong if the report is empty on day one.
Bing carries Microsoft Copilot and feeds several AI answer tools. It costs fifteen minutes and most practices skip it entirely.
SourceBing Webmaster Blog, Import sites from Search Console to Bing Webmaster Tools · blogs.bing.com/webmaster/september-2019/Import-sites-from-Sear…

Bing is roughly a tenth of Google by volume in most markets, so on its own it is a small prize. The reason to do it is that Bing powers Microsoft Copilot and feeds several AI answer tools, and that surface is growing. BrightLocal found in their 2026 consumer survey that the share of consumers using AI tools to find local businesses rose from 6 percent to 45 percent in a single year, while Google usage fell from 83 percent to 71 percent.

SourceBrightLocal, Local Consumer Review Survey 2026, n=1,002 US adults · www.brightlocal.com/research/local-consumer-review-survey/

That is one survey and one year, and it should be read as a direction rather than a forecast. But fifteen minutes to be present on that surface is a reasonable trade regardless.

Step five: the event logic, which is the actual work

Everything up to this point was installation. This section is the part that separates a practice that knows its cost per patient from a practice that does not.

The question to answer first is not technical. It is this: what does a patient do on your website that is worth money to you?

For a dental practice the honest answer is short.

The three events a dental practice actually needs
Everything else is decoration
call_click · the phone tap
A Just Links trigger where Click URL contains tel:. For a dental practice this is usually the single largest measured conversion. GA4 will never capture it on its own, because a tel: link is a protocol handler and not a link to another website.
email_click · the mailto tap
The same trigger type, with Click URL contains mailto:. Lower volume than calls, higher intent than a form. Worth two minutes of setup.
form_submit_success · the booking request
A Custom Event trigger listening for a dataLayer push you fire on the form's success state. Not the built‑in Form Submission trigger, for the reason on the next page.
Three events. Perhaps forty minutes of work. This is the difference between knowing your cost per patient and guessing at it.

Understanding the logic before the clicks

A GA4 event has a name and, optionally, some parameters. That is it. The skill is not in the configuration, it is in deciding what to name and what to ignore.

The mistake practices make is measuring too much. They end up with forty events, thirty-five of which are noise, and the five that matter are buried. Three well built events beat forty badly built ones every time, because you will actually look at three.

Why a phone tap is the most valuable event you will build

BrightLocal analysed 45,264 business profiles across 36 industries and published per-industry benchmarks. For dentists specifically, the average listing generated 39 calls and 46 website clicks per month. Those two numbers are almost the same size.

SourceBrightLocal, Google My Business Insights Study, 45,264 businesses (2019 data) · www.brightlocal.com/research/google-my-business-insights-study…

That study is from 2019 and should be read with that in mind. But the structural point holds and has held since: for a dental practice, calls and website visits are comparable in volume, and only one of them is being measured in a default analytics install.

Building the phone tap trigger

Building the phone tap trigger
tagmanager.google.com
Google Tag Manager
Triggers › New
Trigger name
Click – Phone number
Trigger type
Click – Just Links
This trigger fires on
Some Link Clicks
Condition
Click URL   contains   tel:
Enable the Click URL built‑in variable first, under Variables › Configure, or the condition will never match.
Then attach a GA4 Event tag
Event name: call_click
Test it before you trust it. Open Preview mode, tap your own phone number on a phone, and watch the event appear. Five practices out of ten have a trigger that was never verified and has been firing nothing for a year.
SourceGoogle Tag Manager Help, Click triggers · support.google.com/tagmanager/answer/7679320

Step by step, so there is no ambiguity.

  1. In Tag Manager, go to Variables, then Configure under Built-In Variables. Tick Click URL. If you skip this the condition below will never match, and this is the most common reason a phone trigger does not work.
  2. Go to Triggers, then New. Choose trigger type Click, then Just Links.
  3. Select Some Link Clicks. Set the condition to Click URL contains tel:
  4. Name it something obvious like Click - Phone number. Save.
  5. Go to Tags, then New. Tag type Google Analytics: GA4 Event. Select your GA4 configuration. Event name: call_click
  6. Attach the trigger you just built. Save.
  7. Press Preview. On the debug panel, open your site on a phone, tap the number, and confirm the tag fires.
  8. Only once you have seen it fire, press Submit and Publish.

The email click trigger

Identical process. Just Links trigger, condition Click URL contains mailto:, event name email_click. Two minutes.

Lower volume than calls, but the intent behind an email to a dental practice is usually high. Somebody writing out a question about implants has already decided they want implants.

The form submission, which is where it gets interesting

Tag Manager has a built-in Form Submission trigger. On a plain HTML form it works perfectly. On a modern website it usually does not, and the reason is worth understanding.

Why the built-in Form Submission trigger usually fails on a modern site
What people try first
  • Built‑in Form Submission trigger
  • Relies on the browser's native submit event
  • Webflow, and most modern builders, intercept that event
  • The form succeeds, the trigger never fires
  • Or: track the /thank‑you page instead
What actually works
  • A dataLayer.push on the form success state
  • A Custom Event trigger listening for that name
  • Fires whether or not the page navigates
  • Works with AJAX forms, chat widgets, pop‑ups
  • No thank‑you page needed
Google's own documentation is the authority here: with a Custom Event trigger "the tag will fire even when the default submit event is overridden." That is precisely the situation a Webflow form creates.
SourceGoogle Tag Manager Help, Custom Event trigger · support.google.com/tagmanager/answer/7679219

Here is what happens. Webflow, and most modern site builders, do not actually submit the form in the traditional sense. They intercept the submit, send the data in the background, and swap the form for a success message without ever reloading the page. From the browser's point of view, no submission happened. So the built-in trigger never fires.

The fix is to announce the success yourself.

dataLayer.push({ 'event': 'form_submit_success' });

That one line, fired when the form shows its success state, gives Tag Manager something unambiguous to listen for. Then you build a Custom Event trigger with the event name form_submit_success, attach a GA4 Event tag to it, and you are done.

Your web developer will understand that line immediately. If you are on Webflow, it goes in the page or site custom code with a small listener on the form's success state. It is a five minute job for someone who has done it before.

The thank-you page shortcut, and why to avoid it

There is an easier route that people reach for. Redirect the form to a /thank-you page, and count views of that page as conversions. It works, in the narrow sense that it produces a number.

Why the thank-you page shortcut costs you data
Thank-you page tracking
  • Misses every AJAX form success
  • Misses every phone tap
  • Misses every chat submission
  • Double counts a refresh or a bookmark
  • The page is indexable and can be landed on from search
Event-based tracking
  • Fires on the actual success state
  • Covers calls, emails and forms alike
  • Fires once, per real submission
  • Nothing to accidentally index
  • Works the same on every form on the site
If you keep a thank‑you page for the patient experience, keep it. Just add noindex to it, and do not make it your only measurement.

The problem is everything it misses and everything it double counts. If you keep a thank-you page because it is good for the patient experience, keep it. Just add a noindex tag so it does not show up in search results, and do not make it your only measurement.

Step six: mark them as key events

Events are recorded. Key events are the ones Google treats as your business outcomes, and they are what appear in the reports you will actually read.

Step 5. Mark the events as key events
analytics.google.com
Google Analytics
Admin › Data display › Events
Event nameCountMark as key event
call_click61On
form_submit_success24On
email_click9On
page_view4,180Off
scroll2,905Off
Google renamed conversions to key events. A key event is a business action you analyse in Analytics. A conversion is now specifically an action you feed to Google Ads for bidding. Marking the toggle here does not send anything to Ads. That is a separate import.
SourceGoogle Analytics Help, About key events · support.google.com/analytics/answer/9267568

The path is Admin, then Data display, then Events. Find your event in the list and turn on the Mark as key event toggle. Note that the event has to have fired at least once before it appears in this list, which is a small chicken and egg problem the first time. Fire it yourself from your phone, wait a few minutes, then come back.

Key events are not conversions any more

Google changed this terminology and it causes real confusion, so it is worth being precise.

  • A key event is an important business action you analyse inside Analytics.
  • A conversion is now specifically an action you send to Google Ads to optimise bidding.
  • Marking the toggle in Analytics does not send anything to Google Ads.
SourceGoogle Analytics Help, Conversions vs key events · support.google.com/analytics/answer/13965727

If you run Google Ads, importing these as conversions is a separate step. It lives in Analytics under Advertising, then Tools, then Conversion management. It requires the Analytics and Ads accounts to be linked and auto-tagging to be enabled in Ads first.

SourceGoogle Analytics Help, Import Analytics key events into Google Ads · support.google.com/analytics/answer/10632359

Step seven: the five settings that quietly ruin the data

Everything above is now installed and firing. This section is about the things that will silently corrupt your numbers over the following months if you do not fix them now.

The five settings that quietly ruin small practice data
Fix these once, on day one
1. Internal traffic is not excluded
A five person practice refreshing its own site can be a third of recorded traffic. Define internal traffic in the data stream settings, then create an Exclude data filter and set it to Active, not Testing. A filter left in Testing never removes anything.
2. The booking system is on another domain
Without cross domain configuration, GA4 counts one patient as two users and two sessions, and your booking vendor shows up as your top referral source, stealing credit from the search that actually produced the patient.
3. No unwanted referral exclusions
Where you cannot tag the other domain, add it under List unwanted referrals instead. Up to fifty per data stream.
4. Both GTM and a hardcoded tag
Covered above. It is worth checking twice, because it is invisible until you look at the page source.
5. A URL prefix Search Console property
Half your data goes missing without a single error message. Use a Domain property.

Excluding internal traffic, in detail

This one is underrated. A practice with five staff, a front desk that pulls up the site several times a day, and a practice owner who checks the blog, can easily generate twenty to forty percent of its own recorded traffic. On a site doing two thousand sessions a month, that is not a rounding error.

  1. Admin, Data streams, select your stream, Configure tag settings, Show more, Define internal traffic, Create.
  2. Leave the traffic_type value as internal. Add your practice IP address. Your IT provider or a quick search for what is my IP will give it to you.
  3. Admin, Data filters, Create Filter, Internal Traffic, Exclude.
  4. Set the filter state to Active. Not Testing.
SourceGoogle Analytics Help, Filter unwanted traffic · support.google.com/analytics/answer/10104470

Google notes that filters take twenty-four to thirty-six hours to take effect, and they are not retroactive. Data that arrived before the filter was active stays in your reports forever.

The booking system problem

This is the defining measurement failure for dental practices, and it is worth a paragraph of its own.

If your online booking, patient portal or payment page lives on a different domain than your website, and most do, then without configuration GA4 treats a patient who books as two separate people having two separate sessions. Worse, when they come back to your site afterwards, your booking vendor appears as a referral source and takes credit for the conversion that organic search actually produced.

There are two fixes, and which one you use depends on whether you can put your tag on the other domain.

If you can tag the other domain: cross-domain measurement

Admin, Data streams, Web, select the stream, Configure tag settings, Configure your domains. Add both domains. The requirement is that every page across both domains uses the same Measurement ID from the same web data stream.

SourceGoogle Analytics Help, Set up cross-domain measurement · support.google.com/analytics/answer/10071811

If you cannot: referral exclusion

Admin, Data streams, Web, select the stream, Configure tag settings, Show all, List unwanted referrals. Add the booking domain. GA4 will then stop treating it as a traffic source. Up to fifty domains per stream.

SourceGoogle Analytics Help, Identify unwanted referrals · support.google.com/analytics/answer/10327750

Google's own stated use case for this setting is almost exactly the dental scenario: a site that uses a third-party payment processor where users return after checking out on the other domain.

Step eight: what to actually look at

You now have clean data. The next mistake is drowning in it.

Your first ninety days of actually reading the data
Day 1
Everything installed and verified
GA4, Tag Manager, Search Console, Bing. Three key events firing and tested in Preview mode.
Day 7
First sanity check
Does the traffic number look like a real week? Are calls being recorded? Is the booking domain excluded? Fix what is wrong now, not in month three.
Day 30
First honest baseline
You now have a month of clean data. This is the number every future month gets compared against. Write it down.
Day 60
First trend
Two clean months. Search Console starts showing which queries you appear for and where. Look at positions eleven to twenty first.
Day 90
First decision you can defend
Enough data to say which channel produced patients and which produced traffic. These are not the same thing and the difference is where the money is.

The four numbers

For a dental practice, four numbers answer almost every question worth asking.

NumberWhere it livesWhat it tells you
Organic sessionsGA4, Traffic acquisitionIs search finding you at all
Key eventsGA4, Key events reportDid anyone try to reach you
Average positionSearch Console, PerformanceAre you moving up or standing still
Queries at position 11 to 20Search Console, Performance, filteredWhere the next wins are hiding
Scroll the table sideways to see every column.

The position eleven to twenty trick

This is the highest return ten minutes in Search Console and almost nobody does it.

Open the Performance report. Add a filter on average position, greater than 10 and less than 21. Sort by impressions. What you are looking at is every query where you are on page two, being seen but not clicked.

Those pages already rank. They already have some authority with Google for that topic. Moving one of them from position 14 to position 8 is a far smaller job than creating a new page from nothing, and the traffic difference is enormous.

Backlinko analysed twelve million search queries and found the top three organic results take 54.4 percent of all clicks, while page two results receive 0.63 percent. The cliff between page one and page two is not gradual.

SourceBacklinko, Google CTR study, 4 million results and 12.1 million queries · backlinko.com/google-ctr-stats

In practice this means the page two queries in your Search Console are the shortest path you have to more patients, and they are sitting there waiting for someone to look at them.

Bonus: building a dashboard your practice owner will actually read

Everything so far produces data. This section produces a report.

The distinction matters. Google Analytics is an excellent database and a poor report. Nobody who runs a dental practice wants to learn the GA4 interface, and they should not have to. What they want is one page, opened once a month, that answers whether the marketing worked.

Looker Studio is Google's free reporting tool and it does exactly this.

Bonus. What a finished reporting dashboard looks like
lookerstudio.google.com
Looker Studio
SEO performance · last 30 days
2,418
Organic sessions
▲ 34% vs prior period
61
Phone taps
▲ 22%
24
Booking requests
▲ 9%
11.4
Avg. position, tracked terms
▼ from 18.7
Organic search
2,418
Google Business Profile
987
Direct
631
Referral
188
One page. Four numbers at the top. A practice owner has about ninety seconds for a report. If the top of the page does not answer "did this work", the rest of the dashboard will never be read.

That is roughly what a finished one looks like. Four numbers across the top, each with a comparison to the previous period. Channel breakdown below. Everything else further down, for the months when somebody wants to dig.

How to build it

Building that dashboard yourself
Free, and about an hour the first time
1
Create the data sources first, not the report
In Looker Studio, choose Create, then Data Source. Add Google Analytics and pick your property. Then add Search Console separately.
2
Add Search Console twice
Search Console offers two tables, Site Impression and URL Impression, and one data source can only use one of them. If you want query data and page data, you need two data sources.
3
Put the four numbers at the top
Sessions, phone taps, form submissions, average position. Use scorecards with comparison to the previous period turned on. Everything else goes below the fold.
4
Set the date range control to last 30 days
Then add a comparison to the previous period. Absolute numbers mean nothing without a comparison.
5
Schedule it as a monthly email
Looker Studio can send the report as a PDF on a schedule. A report nobody opens is not a report.
SourceLooker Studio Help, Connect to Google Analytics · docs.cloud.google.com/looker/docs/studio/connect-to-google-ana…

The Search Console detail that trips people up

When you connect Search Console, it asks you to pick a table. There are two: Site Impression and URL Impression. Site Impression gives you query level data. URL Impression gives you page level data. A single data source can only use one of them.

So if you want both in one report, and you do, create two separate Search Console data sources and add both to the same report. This is not obvious and it is not explained well anywhere in the interface.

SourceLooker Studio Help, Connect to Search Console · docs.cloud.google.com/data-studio/connect-to-search-console

Design rules that make a dashboard get read

  • Four numbers at the top, no more. Sessions, calls, form submissions, average position.
  • Every number gets a comparison to the previous period. An absolute number on its own is meaningless.
  • One page. If it scrolls past two screens, split it into two reports rather than making one longer.
  • Label everything in plain language. Key events becomes Patient enquiries. Sessions becomes Website visits.
  • Put the date range control at the top where it is visible, so nobody misreads a fortnight as a month.

Schedule it

Looker Studio will email the report as a PDF on a schedule. Set it for the first of the month. A report that requires somebody to remember to log in is a report that gets looked at twice and then never again.

SourceLooker Studio Help, Ways to share your reports · docs.cloud.google.com/data-studio/ways-to-share-your-reports

The complete checklist

Everything in this guide, in one place. Work down it, and when every line is ticked you have a measurement setup better than the majority of dental practices in your market.

Your finished tracking stack, in one page
Print this and tick it off
Google Analytics 4
Property created, web data stream live, Measurement ID recorded
Google Tag Manager
Both snippets installed, container published, Preview mode connects
GA4 fired via GTM
One Google Tag on All Initialization Events. No hardcoded snippet anywhere
Search Console
Domain property verified by DNS, sitemap submitted
Bing Webmaster Tools
Imported from Search Console
call_click
Just Links trigger, Click URL contains tel:, tested on a real phone
email_click
Just Links trigger, Click URL contains mailto:
form_submit_success
dataLayer push on success, Custom Event trigger
Key events
All three toggled on in Admin, Data display, Events
Internal traffic
Defined in the data stream and excluded by an Active data filter
Cross domain
Booking or portal domain added, or listed as an unwanted referral
Looker Studio
One page, four numbers at the top, scheduled monthly

And the honest caveat

None of this tells you whether a tracked phone tap became a booked appointment. It tells you somebody tapped. The gap between those two things is real and it is where practices lose the thread.

Closing that gap means either call tracking software, which costs money, or a front desk habit of asking every new patient how they found you and writing it down, which costs discipline. Both work. Neither is free. Anyone who tells you analytics alone closes that loop is selling you something.

What this setup does give you is the truth about everything up to that point, which is more than most practices have ever had, and it is enough to make good decisions with.

Next in this series: how to build a keyword strategy that tells you exactly which pages to create, using SEMrush and the free alternatives that get you most of the way there.