AdWords Reports: An Awfully Partial View

AdWords Reports: An Awfully Partial View

Which AdWords campaign has the best return on ad spend (ROAS)?

Every digital marketer has been asked this question at least once, if not every week. You would think such a simple question could be answered with an AdWords report. But as you dig deeper into your data and product, you realize that on many occasions AdWords can only provide partial data.

Consider the following:

  1. You have set up a conversion event for each sign-up on AdWords. Upon speaking to your product team, you learn most sign-ups are tire-kickers. Now, any subsequent in-app behavior data must be analyzed to determine if a sign-up is a “true” conversion. In order to calculate the true conversion rate, AdWords data must be combined with product usage data.
  2. Your product has a long sales cycle and requires careful consideration before making a purchase. This means that in addition to the ultimate conversion, view-through conversions must be accurately attributed to calculate ROAS properly. Hence, AdWords data must be combined with other advertising channels like Twitter, Facebook, Instagram and Bing.

In all cases, it helps to have access to AdWords data outside of its reporting interface. While AdWords integrates nicely with Google Spreadsheets, spreadsheets aren’t meant to be a business data warehouse. Using them as a single source of truth leads to bad analytic practices.

Server-less Data Import from Adwords into Treasure Data

With Google Spreadsheets leaving much to be desired, what are the alternatives?

Although not widely advertised, AdWords can be programmed via AdWords Script, a JavaScript variant that runs natively inside the AdWords console. (For those interested in AWS Lambda and Server-less Computing, you can say AdWords Script is Digital Marketer’s Lambda.) In particular, by using the AdWords Query Language (AWQL) inside AdWords Script, almost any metric data can be accessed programmatically. With Treasure Data’s support for RESTful data ingestion and a bit of glue code in AdWords Script, all kinds of AdWord performance metrics can be collected in Treasure Data.

Here is an example script that fetches yesterday’s account-level clicks/conversions/cost/CTR and imports them into Treasure Data.

Get Treasure Data blogs, news, use cases, and platform capabilities.

Thank you for subscribing to our blog!


To run this script, log into your AdWords account and navigate to Bulk Operations -> Scripts in the left-hand navigation bar and create a new script.

Then, copy and paste and/or write your script. You will need your Treasure Data API key and will replace “YOUR_API_KEY” with it in the example script. Also, depending on what data you wish to export from AdWords, you need to modify the AWQL query accordingly.

Once you have tested the script, hit “Save” and “Preview”. You should see the “success” API response in your logs as follows:

After about a minute, you should see a corresponding table in Treasure Data. (If you used the example script as-is, the database should be called adwords_report and the table is sample_report).

You want the script to run daily? Weekly? Monthly? No problem. All of this is supported in Google AdWords:

Next Step: Combine AdWords data with other data sources

Now that you have your AdWords data in Treasure Data, you have much more freedom with your analytics. You can run any SQL query against your AdWords data beyond what’s supported in AdWords Reporting and you can join your data with any of the 300+ Treasure Data supported integrations.

If you are new to Treasure Data, check out our product or request a demo today.

Kiyoto Tamura
Kiyoto Tamura
Kiyoto began his career in quantitative finance before making a transition into the startup world. A math nerd turned software engineer turned developer marketer, he enjoys postmodern literature, statistics, and a good cup of coffee.