Spend all your time working with Google Ads lead gen campaigns, it’s easy to forget there’s another half of a sales process that takes place with every form submission and phone call.
However, what makes the difference between hitting targets and missing quotas, is the ability to optimize for sales, not leads.
Strategically, it’s an easy win – let’s track, report and optimize for sales.
Tactically, there has to be some planning. Implementation will look different for everyone depending on your tech stack.
Let’s jump in to see how you can track the journey from a user’s click to the revenue (even if you or your client don’t have a CRM set up).
The easy method: CRMs
If you and your client are already set up with a standard CRM (the ones I work with most are Hubspot and Pipedrive) then you won’t have to fiddle around with a lot of the finicky tech that goes into tracking offline sales. They’ll do all of that with you out of the box.
You can easily figure out if your CRM has this functionality built-in with a quick Google:
‘how to set up Google Ads offline conversions {CRM name}’
There you will find a more detailed, in-depth explanation of exactly what buttons to push for that specific CRM.
For the rest of us and most clients (especially home services and legacy businesses), we’ll be building our own tracker.
End state: tracking flywheel
Let’s start at the end. Here is the data flow we will establish, in order to record the sales that come from leads.
TLDR: we collect the data a user gives us when they call or make a form submission, push that to a Google Sheet and then upload it back to Google Ads.
This will create a data flywheel: the more conversion data we feed it, the more efficient the campaigns will become and (you guessed it) the more data we’ll feed it!
Template
Everything we’re building is going to be working off this sheet. Make a copy, save it and duplicate it for every client you want to improve results for.
You will see x2 tabs: RAW and Upload.
The RAW tab is where we’ll dump our leads when they come in.
Upload is what we’ll use to upload to the account. This is a copy and paste of Google’s template, so if you need to reference the original material you can source it from here.
Landing page
There is no way to make a tutorial for every single landing page builder out there. If you need help on the tech side of things I recommend you consult your Friendly Neighborhood Spider-Man Developer.
In this case I’m going to use the widely used tool Unbounce (I have no connection – just a big fan!).
Here’s the header of the page I’m using in this example:
And on this page lives a form when you click ‘Get a Quote’
Collecting the data
We have to collect the information that a user provides from a phone call or form submission and put this into a spreadsheet.
This is the central hub where all leads from ads will live.
We need to collect the user’s ad ID (gclid or gbriad) as a hidden field in the form submission.
With Unbounce, it’s very straightforward – we just add a hidden field and make the field name and ID the same as the URL in the parameter.
(You can actually add anything in here so if you wanted to track other variables such as device or custom parameters, this is where you add them.)
This will then auto-populate the form data when a submission occurs. We will use this to send to our template.
I like to add most UTM parameters to help clients understand which campaigns and keywords are generating which leads.
This is a preference, rather than a requirement. Just make sure to add your UTMs to your final URLs.
Collecting data from phone calls takes a little more set up and will depend on your provider. You just need to make sure your phone tracking service is able to attribute and collect the ad data from the call.
I use CallTrackingMetrics (not affiliated.) They collect the gclid and gbraid from the URL the call has come from. We will shortly use these to send to our template.
When you have it set up you are going to be able to see the landing page URL the call was made from. That includes any parameters you have in your final URL (including Google’s click ID)!
The limitation of this method is that it won’t work too well if you’re not using a landing page. If using your main website, for example, the parameters will drop off on URL change.
If you did need the gclid to persist across the site then this is another thing to consult your developer on to set up for you (or ChatGPT).
Sending the data
Set up a zap in Zapier to create a new row in the ‘RAW’ tab of the spreadsheet you just duplicated and map the fields to the relevant columns.
It should look a little something like this:
(Pro tip: you can use Zapier’s AI to easily format the time field so that it will be compatible with Google Ad’s formatting requirement – ask it to format the time as MM/DD/YYYY HH:mm:ss)
We’ll then do the same for CallTrackingMetrics.
Some fields are hardcoded like the lead_type column. The Unbounce zap will have this as ‘form’ and the CallTrackingMetrics zap will have this as ‘phone call’.
Tracking revenue
In a perfect world, a client will work with you on this sheet, sharing sale values for each lead that has converted to a customer.
If you can do this then you’re going to have a lot more granular data on where ROI is coming from. It’ll also help improve tROAS bidding if that’s a route you want to take.
I’ve found, however, that it’s very difficult for a busy business owner to maintain ANOTHER spreadsheet. In the worst case scenario you can just ask them for a report of their weekly sales. This you can match up with the lead info in the sheet with a VLOOKUP. If you’re not sure how to do this, again ChatGPT is your friend!
If that is difficult to maintain you can just ask the client for names, phone numbers and emails of people who purchased over the past week, then take their average AOV and mark that as the conversion value.
That way you will know, at a minimum, where converted leads are coming from with approximate values.
Every client is different and I find it’s a case of hope for the best but plan for the worst.
Prep the data
Now we have our template filled out with all of our lead data we can import this into the Upload tab.
I do this manually with a copy and paste. You could automate it with formulas if you prefer.
Once filled out you will need to either download as a CSV, or copy and paste your sheet link to prepare for feeding it to Google.
Uploading to Google Ads
To upload conversions to Google Ads, we can’t use our regular conversion action. And you don’t want to. Make sure you segment and upload different sale types with different conversion actions, so you can have granularity in your reporting.
For example, if you have different levels of a plans – each plan should have its own conversion action.
Create a new conversion action > import > CRMs, files or other data sources > Track conversions from clicks > Skip this step and set up a data source later.
Once you make this you will have to wait around 6 hours before they will allow you to start using it. This is annoying.
After the 6 hours, make your way into the Google Ads dashboard and go to Goals > Uploads and then the + button.
You can either link it to the template file we just filled out (make sure to give the email address they note access to the sheet) or you can export a CSV and upload a file.
My preference is to upload a file, but it’s up to you.
Accept T&Cs and mark that the data is unhashed. Google will hash it for us.
This is where we hope our hard work has paid off.
You’ll either see a big success message or errors.
There are so many moving pieces in this process, if an error is thrown you will need to troubleshoot by retracing your steps/data. Alternatively you may need to turn to ChatGPT or Google with error names.
The end state will be a upload dashboard that looks something like the below:
Let me know how you go
Once you get the success messages you should see the converted leads showing in your conversions within 12 hours.
If you are having trouble or have questions feel free to email me mitch@adsthatconvert.co.
Mitch Cartwright is a performance marketing expert specializing in creating best-in-class campaigns for leading brands. He is the owner of Ads That Convert. Follow him on Twitter @PayPerMitch.