Cardinal Path’s response to COVID-19 Cardinal Path is sharing all we know to help marketers during COVID-19.  Learn more.

Google Analytics has just released the newest weapon in their arsenal for online marketers.  This new feature allows users to import cost data from any advertising platform directly into Google Analytics reports.  With this data, users can quickly and easily determine ROI of marketing campaigns right in GA.  We have been lucky enough to work with this feature on one of our clients, and the new insight this data provided was quite impressive.

Using this feature is quite simple.  There are 3 steps you will need to take to get this feature working for you:

  1. Create the cost data import source(s)
  2. Import the data
  3. Create your reports

I’ll go through these steps in more detail, and point out some of the things to watch out for along the way.

Create the Cost Sources

The first step you need to do is create the data sources through the Google Analytics interface.  Note that to create data sources, you will need to be an admin on the account.  In the “Admin” console, you’ll now see a new tab for the web property called “Custom Definitions”.  This new tab is where you’ll be able to create new cost sources.

To add a cost source, click on the “New Custom Data Source” button.  This will bring up the wizard.  Simply fill in the name, a brief description, select the profiles you want to apply this cost source to, and click “Save”.  That’s it.  Very simple.

Each cost source you create is associated with one web property.  You then apply the cost data to any profiles that belongs to the web property ID.  This hierarchy is great because it means you control who sees the cost data.  Lets say you have one agency that handles your Bing ads and another that handles your Facebook ads.  You probably don’t want one to see how much the other is spending.  So, what you do is:

  • Create one source for Bing and one for Facebook
  • Create 3 profiles.  One for your Bing agency, one for your Facebook agency and one for you.
  • You then apply the cost sources accordingly.  Bing to the Bing profile, Facebook to the Facebook profile and both to your profile

Import the Data

The next thing you need to do is to get the cost data from the ad platform, and then import it into GA via the API.  I won’t go into detail as to how to import the data.  You can read the online documentation (which hasn’t been publicly released yet), or use a third-party tool.  We used NEXT Analytics for importing our data.  The one thing I will point out is that if you get the data wrong, you can overwrite the existing data using a “reset” flag during the upload process.

There are quite a few dimensions you can import.  Most of the dimensions are optional, but the two required dimensions are source and medium.  Of the optional dimensions, the following are most useful for analysis:

  • Campaign
  • Keyword
  • Content

On the metrics side, you are limited to:

  • Impressions
  • Clicks
  • Cost

Note that for your visit data to match up to your cost data, you will need to make sure that the campaign dimension values from your ad platform matches the URL-decoded utm parameter campaign values exactly (You are campaign tagging all of your ads right?).  If you don’t, you won’t be able to match the cost data to the visit data.

This is the problem that we encountered with one of our clients.  Some of their Bing ads were tagged in a way that the utm_term was being populated with the search query and not the keywords bid on.  For those ads, we were only able to tie cost data to visit data down to the ad group level but not down to the keyword level.  It still allowed us to analyze ROI for campaigns and ad groups, but we were losing a lot of insight at the keyword level!

There are some limitations when uploading data:

  • Each file uploaded cannot exceed 5 MB
  • You can perform a maximum of 20 appends per date.
  • All appends must be completed within 10 days of the first append
  • You should be uploading the daily aggregated cost data, not the intra-day data.  This really isn’t a problem since most ad platforms adjust their numbers at the end of the day and analyzing unfinalized data has minimal value.

The biggest restrictions are the first two.  It effectively limits you to 100 MB of imported data per day.  Users running large campaigns can easily exceed this limit.  You’ll need to be clever in how you upload your data to ensure you don’t hit these limits.


Now that the data is in GA, you’ll want to be able to see a report with this data.  Unfortunately, a built-in set of reports is the one thing missing.  Instead, you’ll need to create a custom report.  Below is a screenshot of one I created.  If you’d like to create this report in your own profiles, simply click this link:  Paid Search Performance.

Once you’ve created the report, you’ll be able to do some really great analysis of campaign performance with all the bells and whistles that standard GA reports provide like the comparison view and pivot tables.