A Definitive Guide to Using Offline Data to Optimise Your PPC Campaigns

Written by Wes Parker

Posted on: August 20, 2020

One of the most difficult and overlooked areas of PPC management is utilising offline data to optimise your paid search campaigns.

I’ve audited hundreds of paid search campaigns, and I’ve probably only seen this done effectively once or twice.

For most accounts, this really is an untapped goldmine that can be exploited to generate significantly better-paid search performance.

There are several ways in which integrating your offline systems with PPC can be useful: 

  • You can determine which leads convert into an MQL (marketing qualified lead), an SQL (sales qualified lead) and a closed sale, and their respective values.
  • For fashion brands where as much as 50% of orders are returned, you can import this data into Google Ads to work out your true ROI.
  • Using real-time data for measuring ‘inventory’ (available members of staff in a call centre, vacant rooms in a hotel) and utilising this to inform bidding decisions.

Determining which leads have converted offline & which items have been returned

Determining which leads have converted into sales offline can be a very powerful tool, becauses not all leads are generated equally.

In most accounts where we have integrated a client’s CRM system into their Google Ads account, we tend to see the ’80/20′ rule – where 20% of the keywords generate 80% of the leads, and 20% of these leads generate 80% of the sales.

So, if you were only tracking leads, you’d only get half the picture. You would see that you’ve generated 39 leads, three sales and £104,000 in revenue, but you wouldn’t know which keywords actually generated the leads.

Worse still, you would make conclusions and decisions based on limited information. For example, you’d see that the keyword generating the most leads is “PPC Management”, and may decide to distribute a greater proportion of the budget towards this keyword, whilst it’s actually the keyword “Enterprise PPC Agency” that’s generating the most revenue, by far.

By using offline tracking and linking your CRM with Google Ads, you can start seeing the full customer journey. 

So, you’d be able to see that even though the keyword “PPC Management” is generating the highest number of leads, the revenue-per-lead is just £500, compared to the keyword “Enterprise PPC Agency”, where the revenue-per-lead is £13,140.

You’d see that the leads being generated from the keyword “PPC Services” are not generating any revenue or profit, so you should stop bidding on this keyword.

Finally, you’d see that the keyword “Enterprise PPC Agency” is generating the highest converting leads and the largest amount of revenue, so you should distribute more budget to this keyword.

Depending on the length of your average sales cycle, there are two main ways that you can use offline tracking to integrate data. 

If the length of your sales cycle is less than 90 days, use the Google Click ID (GCID) method. This is preferable, as it allows you to actually integrate the data into Google Ads and add a conversion column for offline sales.

If your sales cycle is over 90 days, however, you can’t import the data back into Google Ads because the cookie will have expired, but you can get a keyword-level data spreadsheet that you can use to optimise your ads.

The GCID Method (for sales cycles shorter than 90 days)

The GCID method of offline tracking uses something called a Google Click ID, a piece of code that is tagged on to the end of your URL by Google when you have auto-tagging enabled.

It usually looks something like this:

Each time someone clicks on your ad, a new one of these is generated that is unique to that specific session, and Google retains the data for which ad was clicked on as well as which keyword triggered the advert.

These GCID codes are stored alongside the user’s information. Then, for the leads that have converted (offline), you can upload this code, and Google matches the code to the keyword and ads associated with the conversion, and logs this information alongside the conversion within Google Ads.

This means that you end up with a complete set of data for your ads: you know which keywords and ads are associated with conversions, as well as having a complete record of clicks, cost and cost/conversion. 

This means you can now track which online searches and ads result in offline sales.

Here’s a diagram from Google that explains how the whole process works:

To store the Google Click ID within your CRM, you need to add a piece of code that adds what is known as a hidden form field into your contact form.

At this moment in time, your website might have a contact form consisting of fields to collect the name, email address and phone number of each visitor. The hidden form field code adds an additional field called Google Click ID to your contact form, which isn’t visible to users browsing your website.

A piece of code on your website then enters the unique Google Click ID into this hidden field automatically, and when a user submits their contact details, the user’s unique GCID is submitted with the rest of their contact information.

So, in your CRM system, you should see something like this:

Name: John Smith


Telephone: 0800 907 8275

Google Click ID: CIqb48_N084CFcGdGwodh-oC9w

Once your sales team has followed up the lead and closed the sale, you then upload this GCID code back into Google Ads (for the closed leads only), along with the value of the deal.

Google then matches the code to the adverts and keywords that triggered the click, and attributes a conversion along with the conversion value.

Setting up offline tracking

I’ve already covered how you can set up offline tracking in this article here, so I won’t cover that in this post. 

If you’re interested in getting set up, simply run through steps 1-8 in the “How to set up offline tracking” section of that article.

Uploading conversions back into Google Ads

If you’re using Salesforce as your CRM system, you can directly integrate Google Ads into your software with just a few clicks by following the instructions here.

If you’re using any other CRM system, you need to manually upload conversions once per month using a spreadsheet. 

Once again, this is a topic that I’ve covered in quite a bit of detail in this post here, so I won’t cover that now. If you’re interested in learning how to set up offline tracking, follow steps 1-6 in the “Uploading offline conversions back into Google Ads” section of that article. 

This takes you through preparing a spreadsheet for import and the steps that you need to take to then upload it to Google Ads.

Automating uploading

If you’re not using Salesforce and have a large volume of offline conversions that need importing on a daily basis from several different campaigns, it might make sense to build your own integration.

Provided that your CRM system has an API, you can write a basic program to pass the relevant information (such as the GCID and the value of the deal) from your CRM to Google Ads through the API. If this sounds like something you’d like to do, a good developer with a basic knowledge of Google Ads should be able to help you out.

The Parameter Method (for sales cycles longer than 90 days)

When your sales cycles last longer than 90 days, the cookies provided by Google time out, meaning you need to use a different method to track data and align conversions with your CRM system.

The key here is to tag your URLs with parameters, so that the relevant campaign and keyword are passed through to your CRM system. 

You can then review which deals closed within your CRM system on a monthly basis, and use this data to optimise your campaigns.

We suggest that you use the following parameters:{keyword}

To use the above snippet, replace the phrase “campaign name goes here” with the campaign name that the ad is contained in. Google dynamically replaces {keyword} with the relevant keyword.

This then needs to be passed into your CRM system, alongside the clients’ information (which is provided when they submit a form on your website). Some of the better-known CRM systems have their own built-in partner integrations, so it’s worth searching for an add-on before speaking to a developer.

For example, you can use the CloudAmp plug-in from the Salesforce AppExchange to push this information directly into your Salesforce campaigns.

If you’re not able to find a plug-in, a web developer can help you pass URL parameters into your CRM system.

Using offline inventory data to inform optimisation decisions

One of the more interesting sides of integrating offline data is to use it to inform bidding decisions.

Here are a few examples of how you might want to use offline data to inform optimisation decisions: 

  • Increasing bids to generate more leads when a call centre has several operatives who are not busy, and decreasing bids when there are operatives who are off work (i.e. unavailable).
  • Pausing products that are out of stock on a website, or when a category only has a few remaining products in stock.
  • Increasing bids when you have vacant hotel rooms to fill, or pausing ads when you have no vacancies.
  • Inserting stock numbers into your Google Ads to create a sense of urgency and increase conversion rates.

Integrating this data into Google Ads is slightly more complicated than the first two points (for which there are direct prebuilt integrations from Google Ads).

To integrate offline data, such as stock inventory or hotel room inventory, you need to use either the Google Ads REST API or Google Ads Scripts to create your own custom solution.

To help you out, Google has open-sourced an inventory-based management script that you can build upon by working alongside a developer.

This can either be achieved using your own in-house developers or working with an agency such as DemandMore that offers bespoke Google Ads applications.

The diagram below explains how this process works:

The script starts by pulling out inventory details from the database, as well as stats from Google Ads reports.

It then uploads these values to the spreadsheet for the matching product codes on the spreadsheet. This causes the spreadsheet to re-evaluate the formulas, and product rules are updated.

The script then downloads the updated product rules from the spreadsheet, and updates the ads and bids based on those rules.

The ad customiser feed is revised with updated placeholder values from both the database and spreadsheet, so that the ads get displayed with new values.


Integrating your offline data with Google Ads is a great untapped opportunity for the vast majority of advertisers.

Every lead-generation business that runs ads can benefit massively from tracking the leads that convert into MQLs, SQLs and closed sales, and matching this data to their Google Ads data to allow them to focus their budget on the 20% of the leads that generate 80% of their business.

The same methodology can be applied to ecommerce businesses to track which orders are returned, allowing advertisers in markets where return rates are high (e.g. in retail markets) to accurately track the return-on-investment from their advertising spend.

Things really get exciting when you start looking at how you can integrate real-time business data into your ads to make bidding decisions and display stock levels.

This is particularly effective in industries where you have a fixed amount of inventory, such as retail (fixed amount of stock) and travel (fixed number of rooms in a hotel, or seats on a flight), and the finance/insurance industry, where advertisers use large call centres (in which case, available operators are the inventory), where you can use technology to weight bids to move stock, or decrease bids or pause ads when inventory is low.