Short answer: law firm website conversion tracking means counting leads, not visits: form submissions, calls, emails and booked consultations, each recorded as a GA4 key event, usually through Google Tag Manager. Add call tracking for phone leads, connect your scheduling tool, and test every event in GA4 DebugView before trusting the numbers. Traffic without this data is a guess.
Ask most firms how the website is doing and you get a traffic number. Ask how many consultations it produced last month and the room goes quiet. That gap is the whole problem. Traffic tells you people arrived. It says nothing about whether anyone called, and for a law firm, a single signed case can matter more than months of visits.
This guide covers what to track, how to track it, and the mistakes that make most law firm analytics quietly wrong. It assumes GA4 and Google Tag Manager, because that is what most firm sites run, but the principles apply to any setup.
Decide what counts as a conversion
Start with a short list of actions that represent a real person trying to hire you. For almost every firm that means a completed contact or intake form, a phone call, a click on an email link, a booked consultation, and sometimes a live chat conversation that collects contact details. Everything else (scrolling, video plays, time on page) is engagement data. It can be useful, but it should never be marked as a conversion, because inflating the number with soft actions hides whether leads are actually going up.
In GA4 these are called key events. Google renamed “conversions” to “key events” in GA4 in 2024, so older guides and some agency reports still use the old term. Mark only your real lead actions as key events.
| Conversion | How to track | Common mistake |
|---|---|---|
| Contact or intake form submission | GTM trigger on the form’s success event or thank-you page, sending a GA4 event marked as a key event | Trigger fires on the submit button click, so failed and invalid submissions count as leads |
| Click to call | GTM click trigger on links starting with tel:, sending a GA4 event | Treating the click as a completed call; it is an intent signal, not a conversation |
| Actual phone calls | Call tracking platform with dynamic number insertion, integrated with GA4 or your ads account | Swapping the number in the footer and schema, breaking NAP consistency |
| Email link click | GTM click trigger on mailto: links | Counting it as equal to a form lead when many clicks never become a sent email |
| Booked consultation | Scheduling tool’s confirmation page, embed event or native GA4 integration | Embedded scheduler runs in an iframe, so nothing reaches GA4 at all |
| Signed client | Offline conversion import from your CRM or intake system | Never closing the loop, so ad platforms optimize for inquiries rather than cases |
Form submissions
Forms are the easiest conversion to track and the easiest to track wrong. The reliable signal is a successful submission, not a click. Depending on your form plugin, that means one of three things: a redirect to a dedicated thank-you page (track the page view of that URL), a success message that the plugin announces with a JavaScript event (listen for it in GTM), or a data layer push the plugin makes on success. Most major WordPress form plugins support at least one of these.
GA4’s enhanced measurement includes an automatic form interaction option. It is convenient, and on many law firm sites it is unreliable: it can fire on forms that were never completed and miss forms built with certain plugins. Use a dedicated trigger for your lead forms instead.
If you use a thank-you page, make sure it is not indexed and not linked from anywhere else on the site, or the page view count will include people who wandered onto it. Improving how many visitors complete those forms is a separate job, covered in our guide to law firm website conversion rate.
Phone calls: click-to-call and call tracking
For many practice areas the phone is the main lead source, especially on mobile. There are two layers here.
Click-to-call events
Every phone number on the site should be a tel: link. In GTM, create a click trigger for links whose URL starts with “tel:” and send a GA4 event. This tells you which pages drive people to tap the number. It does not tell you whether the call connected, how long it lasted, or whether it was a prospective client, a vendor or a wrong number. Treat it as intent.
Call tracking with dynamic number insertion
Call tracking platforms such as CallRail assign tracking numbers and use dynamic number insertion (DNI): a script swaps the phone number shown on the page depending on how the visitor arrived, so a call from a paid search visitor rings a different tracking number than a call from an organic visitor. Calls still forward to your real line. The platform records the source, duration and, if you enable it and comply with consent laws, the recording. Many platforms integrate with GA4 and Google Ads so qualified calls can count as conversions.
The trap is local SEO. Your firm’s name, address and phone number should be consistent across your website, your Google Business Profile and directories. If DNI swaps every instance of the number, including the footer and your structured data, you create inconsistency in exactly the places that matter. The standard approach is to keep your real, published number in the footer, the contact page’s address block and the schema markup, and to allow swapping only in visible body areas such as header buttons and calls to action. Most platforms let you target specific elements for swapping. For your Google Business Profile, keep the real number as the primary number; a tracking number can go in as an additional number if you want to measure profile calls.
If you record calls, check the consent rules that apply. Some states require every party’s consent to record, and a recorded-line disclosure at the start of the call is the usual safeguard.
Booked consultations from scheduling tools
Online scheduling is common now, whether through a standalone scheduler, a CRM’s meetings tool or a practice management system like Clio. The problem is that most schedulers are embedded in an iframe from another domain, so GTM on your site cannot see what happens inside it. The booking happens, the client shows up, and GA4 records nothing.
There are three workable routes. Some tools offer a native GA4 or GTM integration where you enter your measurement ID. Some send a browser message from the iframe when a booking completes, which a GTM listener on your page can catch. Others let you redirect to a URL on your own site after booking, which you then track like a thank-you page. Check your tool’s documentation for which it supports, and test it with a real booking.
Closing the loop: offline conversion import
A form submission is a lead, not a client. Many inquiries are the wrong practice area, outside your jurisdiction, or not a case at all. If you run Google Ads and optimize for form fills, the platform will learn to find more form fills, including bad ones.
Offline conversion import fixes that. When a visitor arrives from an ad, a click identifier travels with them. If your form captures that identifier in a hidden field and stores it with the lead in your CRM or intake system, you can later upload the leads that became consultations or signed cases back to Google Ads. The ad platform then optimizes toward the inquiries that actually turn into clients. It takes some setup and discipline in intake, but for firms spending meaningful money on ads it is often the single most valuable tracking improvement. Our post on how to get more clients as a lawyer covers where paid search fits in the wider mix.
Consent and cookies
Tracking has to respect the privacy laws that apply to your visitors. Several US states have comprehensive privacy laws, and if you market to people in the EU or UK, stricter consent rules apply. A consent banner and a consent management platform that integrates with Google’s Consent Mode lets tags adjust their behavior based on what the visitor allowed. Your privacy policy should accurately describe the tracking you use, including call recording.
Two practical points. First, consent choices reduce the data you collect, so expect GA4 to undercount compared with your call tracking platform or CRM; the CRM is the source of truth for leads. Second, never send personal information such as names, emails or phone numbers into GA4 event parameters. It violates Google’s terms and it is a confidentiality problem for a law firm. This is not legal advice; check the privacy rules and your state bar’s rules that apply to your firm.
The classic failure: events that lie
The most common problem we find is not missing tracking. It is tracking that exists and reports the wrong thing. A key event that fires on every page load, because the trigger was set to “All Pages” instead of the thank-you page, produces a lead count suspiciously close to your session count. A trigger on the submit button counts every click, including failed validation. And the opposite failure is just as common: an event configured in GTM that never reaches GA4 because the container was never published, the tag uses the wrong measurement ID, or a site migration dropped the GTM snippet. Our law firm website launch checklist includes a tracking check for exactly that reason.
Test before you trust. Use GTM’s Preview mode to confirm each tag fires once, on the right action and nowhere else. Then open GA4 DebugView and repeat the action to see the event arrive with the right name and parameters. Check the Realtime report as a second confirmation. Finally, submit a real test lead through each form and each scheduler, then match what GA4 recorded against what actually arrived in your inbox. If the two do not reconcile over a normal week, something is wrong.
What to look at each month
Once tracking is trustworthy, the monthly review gets short. How many leads came in by type, from which channels, landing on which pages. How many became consultations and how many became clients, from your CRM. Which pages attract traffic but produce no leads, which is where the next round of improvements should go. That is the report that justifies or kills marketing spend, and it is what we build into every site we launch; see our services for how that works.
Frequently asked questions
What conversions should a law firm track?
Completed contact or intake forms, phone calls, email link clicks and booked consultations, plus signed clients through your CRM where possible. Engagement actions such as scrolling or video plays should not be marked as key events.
Will call tracking numbers hurt my local SEO?
They can if they replace your real number everywhere. Keep your published number in the footer, contact details and schema markup, and let dynamic number insertion swap only visible body elements such as header buttons and calls to action.
Why does GA4 show more conversions than leads we actually received?
Usually because a trigger fires on page load or on a button click rather than a successful submission. Test each event in GTM Preview and GA4 DebugView, then reconcile against real inquiries.
How do I track consultations booked through an embedded scheduler?
Use the tool’s native GA4 integration if it has one, listen for the booking message it sends from its iframe, or redirect to a confirmation page on your own site after booking and track that page.
What is offline conversion import?
It means uploading leads that became consultations or clients back into an ad platform, matched by a click identifier captured with the form. The platform then optimizes for real cases instead of any form fill.
The short version
Track the actions that mean someone wants to hire you, and nothing else, as key events. Use GTM triggers on successful submissions, tel: and mailto: clicks, and scheduler confirmations. Add call tracking without touching your footer or schema number. Close the loop with offline conversion import if you run ads. Respect consent, keep personal data out of GA4, and test every event before believing it.
Not sure your current numbers are real? A free law firm SEO audit includes a check of your tracking setup.


