How to Set Up Conversion Tracking for Your Website
- Difficulty
- Moderate to advanced
- You need
- GA4 set up, site editing access
- Optional
- Google Ads admin access
On this page
Conversion tracking records the actions that matter to your business, such as enquiries, calls and bookings, so you can see which pages, channels and ads produce them. On a lead-generation site, you record each successful form submission and phone click as an event, mark those events as key events in GA4, import them into Google Ads if you advertise, and test the whole path. This guide is part of our website design best practices guide.
Before you start
You'll need a working GA4 property with the Google tag on every page; if you don't have one yet, start with how to set up GA4 for your website. You'll also need access to the site's code or Tag Manager, and admin access to Google Ads if you run ads.
Agree who owns each account before you start. The Analytics property, Tag Manager container and ad accounts should belong to the business, with agencies and freelancers added as users. Then write down where each tag lives, so the next person to edit the site doesn't install a second copy.
What counts as a conversion
A conversion is any action that moves a visitor closer to becoming a customer and that you can count reliably. For most service businesses, these are the ones worth tracking, and where each one can be recorded:
| Lead action | How to record it | Where it can be reported |
|---|---|---|
| Form enquiry | generate_lead event after a successful send | GA4 key event, Google Ads |
| Click on a phone link | Custom event on tel: link clicks | GA4 key event, Google Ads |
| Call from an ad | Google Ads call reporting | Google Ads |
| Booking | Event on booking confirmation | GA4 key event, Google Ads |
| Lead that becomes a sale | qualify_lead event or offline import | GA4, Google Ads |
Keep the list short. Tracking every click as a conversion buries the actions that pay the bills, and it can mislead automated bidding in ad platforms.
Steps
- List the lead actions and choose the main one.
Write down every way a visitor can become a lead: forms, phone, email links, booking tools and chat. Pick the main conversion, usually the enquiry form, and mark the rest as secondary. Decide what counts as success for each one, such as a form the server accepted, not a button click.
- Record form leads only when the submission succeeds.
Send the recommended generate_lead event after the server confirms it received the message, not when someone clicks the button. Clicks include failed and duplicate attempts. If your form sends without changing page, fire the event in the success handler:
jsform.addEventListener("submit", async (event) => { event.preventDefault(); const res = await fetch(form.action, { method: "POST", body: new FormData(form), }); if (res.ok) { gtag("event", "generate_lead", { form_id: form.id }); showSuccessMessage(); } }); - Record phone clicks and calls.
Make every phone number a tel: link, then send an event when one is clicked. This measures intent, not connected calls. For calls from Google Ads, turn on call reporting, which can count calls that last longer than a minimum duration you choose. Use a plain custom event for link clicks:
jsdocument.querySelectorAll('a[href^="tel:"]').forEach((link) => { link.addEventListener("click", () => { gtag("event", "click_to_call", { link_url: link.href }); }); }); - Mark them as key events in GA4.
In Admin, open the events list and mark generate_lead, click_to_call and any booking event as key events. You can mark an event before it has first arrived. GA4 then reports these as success across its reports, which is what lets you compare channels and landing pages by leads, not just visits.
- Bring key events into Google Ads.
Link your GA4 property and Google Ads account, and make sure auto-tagging is on. Then create Google Ads conversions from your key events. Only key events can be imported, and Google says new links and key events can take 24 to 48 hours to appear as import options, so don't panic if they're missing at first.
- Add other ad platforms with care.
Each ad platform, such as Meta, has its own pixel and usually a server-side option for sending conversions. Send the same success event to each one, from the same point in the code, so all platforms count the same thing. Expect their numbers to differ anyway, because each credits conversions to its own ads.
- Respect consent in every tag.
Conversion tags must follow the visitor's consent choices. With Google's tags, set consent mode defaults before any tag sends data and update them when the visitor chooses. Other platforms' tags should wait for the same decision. What you need to ask for depends on where you operate; this is general information, not legal advice.
- Test the whole path before you rely on it.
Turn on debug mode with Tag Assistant, then submit a real test enquiry and click a phone link. Check each event appears once in GA4's DebugView with the right parameters. A day later, confirm the key events show in reports and, if linked, in Google Ads conversion status. Repeat after every site change that touches forms.
- Check the numbers against real leads.
Each month, compare tracked enquiries with the messages and calls you actually received. Small gaps are normal; large ones mean something is broken. When leads become customers, record that too, with the qualify_lead event or Google Ads' enhanced conversions for leads, so you can judge channels by sales, not just enquiries.
If you'd rather have tracking planned, built and tested for you, our in-house web team designs and develops sites with SEO foundations built in.
For the Meta side in detail, see Meta Pixel and Conversions API setup.
Tracking that doesn't break the form
Tracking code runs on the most important part of the site, so it has to stay out of the visitor's way.
Never delay or block the submission. If a tracking script fails to load, because of a blocker, a slow network or declined consent, the form must still send. Fire the event after success and never make the submit depend on it. Test the form with tracking blocked.
Keep the success message on the page. Some setups redirect to a thank-you page after a pause. A timed redirect can interrupt people part way through reading, and W3C lists it as an accessibility failure. Either redirect instantly or show the confirmation in place, in a status message that screen readers announce. Our guide on how to design a contact form people finish shows the markup.
Keep personal details out of events. Google requires that no personally identifiable information is sent to Analytics. Send the form's ID, not the visitor's name or email. If you use Google Ads' enhanced conversions, customer data is hashed before it's sent, under Google's own data policies, which is different from putting it in event parameters.
Watch the consent banner. A banner that covers the form, or traps keyboard focus, stops enquiries before tracking ever matters. It needs real buttons, keyboard access and enough contrast, and must not hide the focused field.
Troubleshooting
Conversions are counted twice
Cause: the same action is recorded in two ways. Common examples are a generate_lead event plus a thank-you page view both marked as key events, a GA4 import plus a separate Google Ads conversion tag for the same form, or the Google tag installed twice. Event handlers attached twice, for example by a theme and a plugin, also send duplicate events for one submission.
Fix: list every key event and Google Ads conversion, and make sure each lead action is counted by exactly one of them. If you import GA4 key events into Google Ads, remove the duplicate Ads tag or set one of them as secondary. Submit one test enquiry with debug mode on and confirm one event arrives. Then check the Google tag appears only once in the page source and Tag Manager.
Google Ads shows no imported conversions
Cause: the import can't see the events, or no ad clicks have converted yet. Typical reasons are an event that isn't marked as a key event, accounts that aren't linked, auto-tagging switched off, or not enough time since the link was made. Consent choices also affect what can be measured, and conversions are only reported against clicks on your ads.
Fix: confirm in GA4 that the event is a key event and has arrived in the last few days. Check the GA4 and Google Ads link in both accounts and turn on auto-tagging. Allow 24 to 48 hours after linking or marking key events before expecting import options. Then click one of your own ads in a test, submit a test lead, and check the conversion status in Google Ads over the following days.
Tracked leads don't match the inbox
Cause: some leads aren't tracked, or tracked events don't represent real leads. Visitors who decline consent or block scripts may not be measured, people who dial a number by hand never trigger a click event, and spam submissions can fire the success event too. If the event fires on click rather than on a successful send, failed attempts are counted as leads.
Fix: move the event to the success handler if it isn't there already, and add spam checks before success is confirmed. Track phone clicks and use call reporting for ads, but accept that some calls will only appear in your call log. Record each lead's source in your CRM or inbox if you can. Then compare monthly totals and investigate when the gap suddenly widens.
Common questions
What's the difference between a key event and a conversion?
In GA4, a key event is an event you've marked as important to the business, such as an enquiry. A conversion, in Google Ads terms, is an action Google Ads counts for your campaigns and bidding. You can create Google Ads conversions from GA4 key events, so the same enquiry is reported in both places. Only key events can be imported.
Should I count thank-you page views or form submissions?
Count the successful submission where you can. A thank-you page view works if the page can only be reached by sending the form, but people reload it, bookmark it or land on it from search, which inflates the count. An event sent when the server confirms the message was received is more reliable, and it works for forms that don't change page.
How do I track phone calls as conversions?
Use two methods together. On the site, record clicks on phone number links as an event, which shows intent but not whether the call connected. For calls from ads, Google Ads call reporting can count calls that last longer than a minimum duration you choose. Compare both with your own call log, because neither captures people who dial the number by hand.