Here's the problem... Conversion tracking or analytics can tell you how many leads you got, but not who they are. And unless you know who came from your ads, you can't tell if you're making money from those ads.
If you knew exactly which leads came from Google Ads ...
You'd be able to work out how many turned into sales.
You'd be able to calculate how much those sales were worth.
You'd be confident enough to scale up your campaigns, or, you'd know to dial them back if they were losing money.
Google does this seamlessly for online sales, but not for leads. You have to set this up yourself unless you're using a CRM with search-to-sale analytics built in.
I've set up search-to-sale analytics for a few clients. We know the exact keyword and ad the lead first clicked, even if the sale happens months later.
This level of detail might seem obsessive, but it lets us optimise in a way that would be impossible with only the built in data from Google.
We can bid on keywords that include the word "free". As a rule someone looking for something free isn't a good prospect. The data shows that, in this particular market, people searching for a free initial consultation turn into clients. We pay very little for those clicks because the competition doesn’t think it’s worth bidding.
We target people in far away cities. The client in question client closes sales at his office, so we'd typically not show ads to people living far away. Testing plus search-to-sale data shows people living far away hire my client to help their relatives in his city.
We've stoped advertising in the market where we were getting the lowest CPA. Common wisdom says spend as much of your budget as possible on locations, demographics or keywords with a low CPA. The data showed that even though were were paying much less per lead in one market, the leads weren't turning into sales. The more we spent there, the less we made.
We've turned off our call extensions. Calls from extensions cost us much less than a call after someone had visited the site. But, even though the calls were cheap, again, they weren't turning into sales. It seems like the people who had actually read the landing page were more likely to contract than those who had only read the ad.
Finding out if a lead came from Google Ads is a two step process.
Getting information from Google to your website.
Getting that information from your website to your inbox or CRM.
Google uses URL parameters to pass information to your website. If that made as much sense as if I’d said Google uses talking frogs to pass information to your website then you’re in the right place.
[Aside: This is the non-techy explanation. If you know what an URL parameter is you might want to skip the rest of this article.]
An URL is geek speak for a link to a webpage.
It might look something like...
It could be more complicated...
Or it could be a monster...
The URL parameters are the interesting bits. They come after the question mark in the URL.
It’s easier to read if we split them at the & character...
...and stack them on top of each other.
Each parameter has 2 parts, separated by an = sign.
The part on the left is the key which describes the information.
The part on the right is the actual information, called value in geek speak.
So for the first parameter
keyword=immigration%20attorney the key is keyword, and the value - the information - is immigration%20attorney.
immigration%20attorney is still a bit gobbledegook. You can’t put spaces in URLs so a space is represented by the code %20. Turning that back into human we have immigration attorney, which was the keyword that triggered the ad.
You can get a full list of URL encodings here.
The numbers for the campaign and loation parameters are Google's internal id numbers. I use them to get the actual campaign name and location when I pass the information to my client.
The last parameter is the gclid - Google Click Id. Google ads this to all clicks from Google Ads. It’s used to track conversions.
The glcid is the only parameter that's sent automatically. You have to tell Google to send the other parameters. You do this with a tracking template.
You can set up a tracking template at account level, campaign level or ad group level. I’m using an account level tracking template in this case. All clicks from this account have the same parameters. (But obviously not the same values for those parameters.)
This is what the tracking template looks like for the url I used as an example earlier
It looks a bit garbled but once you pull it apart it makes a bit more sense. We’ll split it at the question mark again as we did before
{lpurl} is the placeholder for landing page URL. https://example.com/index.php from my example.
The parameters are after the question mark
We split these using the & character like we did before
Anything in curly brackets is a placeholder. The actual value will be set by Google when your ad is clicked.
You can use 2 kinds of parameters.
1. Google’s value track parameters.
You supply the name of the parameter eg keyword and choose one of the available placeholders eg {keyword}. Google swaps the placeholder for the real keyword when the ad gets clicked.
You’ll find a full list of value track parameters here.
2. Custom parameters.
You supply the name and the value. For example source=google-ads or campaign=brand.
You don’t have to come up with a naming convention for your parameters. UTM parameters are almost standard in online marketing. Some analytic and CRM software is able to recognise and understand UTM parameters without any configuration.
The UTM parameters are
More detail about what each of these parameters is for here.
Warning: this is the non-technical version. If you decide to implement this, find a web developer because there are some security implications.
The process for getting information from URL parameters to you is:
1. Extract the keys and values from the URL parameters.
If you were going to brief a web developer you’d say something like "I’d like to parse the parameters out of the GET request". More detail is beyond the scope of this article.
2. Save them somewhere.
You can save the data as
a cookie on the visitor's web browser,
a session variable on your server
a hidden form field when the page is rendered.
Saving as a hidden form field isn't great because the data would probably be lost if the visitor left the landing page.
Cookies and session variables survive while the visitor wanders around your site. If your visitor arrives at your landing page, checks your privacy policy and then fills in the form on your contact page you've still got the data.
And, depending on several technical things, that data may survive after the visitor has left your website. That means that if they come back to your site some time later, you may still be able to get the original URL parameters.
3. Send them to you.
This starts when the visitor hits the button to submit the form. The information they’ve given you, and any hidden form fields, is sent to a computer program. We'll call that the form handler.
At it’s simplest the form handler would take the information it received and email it to you.
It can also be a lot more complicated. For instance, the form handler for my lead generation sites:
checks if the form submission is spam
checks if all the required information has been given
checks if the form submission is duplicate - a surprising number of people hit the button over and over.
If the checks pass, the form handler sends the information it received and the URL parameters to my client by one or more of email, SMS and webhook. My clients use webhooks for inserting leads directly into their CRMs or a lead tracking spreadsheet.
This is a little more tricky than tracking enquiry forms because it needs a third-party service. I use CallRail for this.
Two things happen when someone calls the number shown on the landing page.
CallRail sends a notification to our server. The notification includes the URL - with the URL parameters - the visitor clicked to get to the landing page. We save this in the CRM as a new lead with a phone number (which CallRail gives us) but no name.
CallRail routes the call to the client’s incoming call centre. Someone answers the call and types the number into the CRM. That finds the lead we just created. The operator fills in the lead's name and other information. So now we have the person linked to the URL they used to find us.
Calls from call extensions don't give much detail. The visitor hasn't clicked to your site so there is no URL with URL parameters.
I use a unique phone number (again from CallRail) for call extensions. Any calls arriving via this number are from the call extension. Depending on how much granularity I need, I might set up account, campaign or ad group level call extensions, each with their own number.
When someone calls one of the call extension numbers the same two things happen. We create a record in the CRM, and call is routed to an operator. Again we can link the person to the account, campaign or ad group.
The end.