How to Set Up Google Ads Conversion Tracking on WordPress (The Right Way)

Setting up Google Ads conversion tracking on WordPress sounds straightforward until you realize that “conversion tracking” actually refers to two different things — and most WordPress businesses are only doing one of them. This guide covers both: the website conversion tracking that most people set up, and the offline conversion tracking that actually tells Google which clicks turned into paying clients. The second one is harder to implement, but it is where most of the optimization value lives.

Two ways to track Google Ads conversions on WordPress

The distinction matters because Google uses conversion data to optimize your campaigns. What you feed it determines what it optimizes toward.

  • Website conversions track actions that happen on your site: form submissions, thank-you page visits, button clicks, phone call clicks. These are easy to set up and give Google a signal for every lead that comes in. The problem is that leads are not revenue. If 100 people fill out your form and 8 become paying clients, Google’s “maximize conversions” bidding does not know which 8 — it just tries to get you more form fills, regardless of quality.
  • Offline conversions close the loop. You capture the Google click ID (gclid) when the lead arrives, match it to the customer after they close, and send that won outcome back to Google as a conversion. Now Google knows: these specific clicks, these specific keywords, this specific audience segment produced paying clients. Its bidding algorithm can optimize toward that signal instead of toward raw lead volume.

Most WordPress businesses do the first. The ones that do the second get meaningfully better results from the same ad spend.

Step 1: Set up website conversion tracking

Start here if you have not already. You need Google Tag Manager installed on your WordPress site and a Google Ads account linked to it.

The most reliable method for form submission tracking on WordPress is the thank-you page approach:

  1. Create a dedicated thank-you page (e.g., /thank-you/) that contact form submitters are redirected to after submitting.
  2. In Google Tag Manager, create a trigger: Page View firing on URL contains /thank-you/.
  3. Create a tag: Google Ads Conversion Tracking, using your conversion action ID and label from Google Ads. Set it to fire on the thank-you page trigger.
  4. Publish the GTM container and verify in GTM’s Preview mode by submitting a test form and confirming the tag fires.

The alternative — using form submission events directly — requires custom dataLayer pushes that vary by form plugin (Contact Form 7, WPForms, Gravity Forms each work differently). The thank-you page redirect is more reliable and plugin-agnostic.

For phone calls, use Google’s forwarding number in your Google Ads call extension. This gives you call tracking without any tag setup, though it only captures clicks from your ads, not organic or direct calls.

Step 2: Capture the gclid at form submission

This is the step that makes offline conversion tracking possible. When someone clicks a Google ad and lands on your site, Google appends a gclid parameter to the URL. You need to capture that parameter and store it alongside the lead’s form submission data.

The implementation has three parts:

  • Read the gclid from the URL on page load. A small JavaScript snippet reads gclid from the URL query string and stores it in a first-party cookie with a 90-day expiration. This handles the case where someone clicks your ad, bounces, and returns days later — the cookie persists across sessions.
  • Add a hidden field to your contact form. A hidden form field named gclid reads from the cookie on page load and populates automatically. When the form submits, the gclid travels with the lead data to wherever your form stores submissions.
  • Store the gclid with the lead record. Your form plugin or CRM needs to save the gclid value alongside the lead’s name, email, phone, and other contact fields. If you are not storing it, you cannot match it to a sale later.

The same approach applies to UTM parameters (utm_source, utm_campaign, utm_term): capture them from the URL on landing, store in cookies, pass via hidden fields, save with the lead. This gives you full source attribution even when Google Ads is not involved.

Step 3: Match leads to clients and upload offline conversions

When a lead becomes a paying client, you match the gclid stored on their lead record to a Google Ads offline conversion upload. Google matches that gclid to the original click and counts it as a conversion — a won customer, not just a form fill.

There are two ways to send offline conversions to Google:

  • Manual CSV upload — in Google Ads, go to Tools > Conversions > Upload. Prepare a CSV with three columns: Google Click ID, Conversion Name, Conversion Time (and optionally Conversion Value). Upload it. Google processes the file and attributes the conversions to the original clicks. This works for businesses that close a manageable number of deals per month and are willing to run the upload on a regular schedule (weekly is common).
  • API upload (automated) — using Google’s Ads API or a platform that integrates with it, you can send offline conversions automatically as soon as a deal is marked won in your system. This eliminates the manual step and keeps Google’s data current without a weekly reminder. It requires either custom development or a tool that handles the API connection for you.

Either way, the conversion data feeds Google’s smart bidding algorithms: Target CPA and Target ROAS bidding can now optimize toward clients, not leads. The improvement in campaign efficiency is typically significant — you are giving the algorithm a fundamentally better signal to work with.

The WordPress-specific challenge

WordPress does not have native lead-to-sale tracking. It accepts form submissions, but it does not natively store UTM parameters or gclid values, does not have a built-in CRM to mark deals won, and does not connect to Google Ads for offline conversion uploads. Each of those steps requires either custom development, a plugin, or a third-party integration.

The most common failure mode is partial implementation: a business sets up form tracking in GTM, captures some UTM parameters, but never builds the gclid capture-and-store step or the offline conversion upload. The result is website conversion data flowing to Google, but no closed-loop signal. Google optimizes toward form fills and the business wonders why lead quality is inconsistent.

The full stack — gclid capture, UTM storage, lead records with source data, closed-deal matching, offline conversion upload — requires deliberate implementation. Once it is in place, it runs automatically and compounds over time as Google’s algorithm accumulates more closed-customer signal.

How Sales Provenance handles this on WordPress

Sales Provenance is built to implement this entire workflow natively on WordPress, without custom development. It installs as a WordPress plugin, captures gclid and UTM parameters automatically on every landing page visit, stores them with every form submission, provides a lead management interface where you mark deals won, and handles the offline conversion upload to Google Ads automatically.

The result is the full closed-loop attribution stack — from ad click through to closed client and back to Google — running inside your WordPress site without a separate CRM, a data warehouse, or a developer on retainer. For a more detailed look at how the offline conversion piece works, see offline conversion tracking on WordPress. For the broader picture of what closed-loop attribution looks like in practice, closed-loop reporting walks through the full workflow.

Summary: the implementation checklist

  • Install Google Tag Manager on WordPress
  • Create thank-you page + GTM trigger for website conversion tracking
  • Add gclid capture script (reads URL, stores in first-party cookie)
  • Add hidden gclid field to all contact forms
  • Confirm gclid is stored with every lead record
  • Do the same for UTM parameters (source, campaign, term, content)
  • Establish process for marking leads as won clients
  • Upload offline conversions to Google Ads (manually weekly or via API)

Each step builds on the previous one. You can stop at website conversions and have better-than-nothing tracking. But the full stack — with offline conversion upload — is where the optimization value actually lives.