Cost-data import lets you analyze return-on-investment (ROI) and compare campaign performance for all your online-advertising and marketing investments.
How cost-data import works
Google Analytics uses cost-data import to join your imported data generated from campaigns outside of Google, like email and social media advertising, with revenue and key events data from Analytics. This allows you to calculate metrics, such as non-Google cost per click/conversion and return on non-Google ad spend, from these campaigns in Analytics for each campaign, source, and medium.
Cost-data import lets you compare performance data across all your ad initiatives. You can see this data in the Acquisition > Non Google cost report and on the Planning > All channels report in the Advertising workspace.
Because the true costs for ads change as campaigns run, you can upload data periodically for the same campaign IDs and Analytics will use the most recent values for reporting and exploration.
The role of custom campaign URLs
The key to performing ROI analysis on paid campaigns is adding custom campaign parameters to all destination URLs in the non-Google ad system you're using. This lets you join cost data from those external sources with session data in Analytics.
Example of custom campaign parametersA pet store is running a summer sale. They tag the destination URL contained in their advertisement with campaign tracking parameters (utm_id, utm_campaign, utm_source, utm_medium
). The resulting URL would look something like this:
http://examplepetstore.com?utm_id=123_1a2b3c_abc&utm_campaign=Summer%2BSale&utm_source=ad%2Bnetwork&utm_medium=cpc&utm_term=cpc_keyword&utm_content=hero
When the user clicks an ad with this URL, their visit to the examplestore website can be associated with the Summer Sale campaign. Analytics will set the following values for the session:
Dimension name in Analytics | Custom campaign parameter | Value set in Analytics |
---|---|---|
Campaign ID | utm_id | 123_1a2b3c_abc |
Campaign | utm_campaign | Summer Sale |
Source | utm_source | ad network |
Medium | utm_medium | cpc |
For Google Analytics 4 properties, Campaign ID (utm_id), Campaign (utm_campaign), Source (utm_source), and Medium (utm_medium) are required.
You can include additional parameters in your URLs that are traditionally used in Universal Analytics properties like Campaign Term (utm_term) and Campaign Content (utm_content) if you like, but they are not required and cannot be included in the import file.
This ensures that Analytics has the campaign-tracking parameters associated with the session and that there is a way to join Analytics data with the external cost-data source for reporting purposes.
Create a CSV file
Create a CSV file of cost dimensions and metrics (see the template below).
Upload the data
The general upload procedure is outlined in About Data Import.
When you create the data source, select Cost data.
When you map Analytics fields to your imported fields, you'll see something like the following:
In the first column you'll see:
- The Analytics fields (in this case, Campaign ID, Campaign source, Campaign medium, Campaign name, Date) on which you're joining your data. Also called the schema keys.
- Campaign dimensions and metrics that match the fields in your CSV. (e.g., Daily cost, Daily clicks, etc.)
Campaign ID, Campaign source, Campaign medium, and Campaign name match the custom campaign parameters utm_id, utm_source, utm_medium, and utm_campaign that you used in your destination URL.
In the second column, you select the matching fields in your CSV:
After you upload your data, it can take up to 24 hours for Analytics to make that data available in reports, audiences, and explorations. Users have to engage with your campaign after you upload the data in order for those metrics and campaign properties to be associated with user activity.
You can overwrite metric and dimension values by uploading new ones.
Since cost-data import uses the reporting/query time join and does not alter data that has already been processed, you can simply delete a cost-data source from the data-upload service to remove cost data from Analytics reports.
Data-source details
Legend
- Scope: the scope determines which events will be associated with the import-dimension values. There are four levels of scope: hit, session, user and product. Learn more about scope
- Schema: lists the dimensions and metrics that make up the structure of your imported data. Your upload file headers must match the schema you define for that data source.
The dimensions and metrics listed for the schema are for reference only and may not be complete; the actual dimensions and metrics available will appear in the user interface when you create the data source.
Scope | This data has no scope because it is daily aggregated data and summarizes many events across sessions and users for each day. |
---|---|
Schema |
The following dimensions are required:
At least one of the following metrics is required:
|
Template
Here is an example CSV template for cost data. If you need to create your upload files by hand, use this example as a guide.
utm_id | utm_campaign | utm_source | utm_medium | date | impressions | clicks | cost |
---|---|---|---|---|---|---|---|
bing_123abc | Summer_fun | bing | cpc | 2020-12-01 | 12242371 | 367271 | 36727.10 |
facebook_456def | Fall_delight | cpc | 2020-12-01 | 3429267 | 34292 | 8573.00 | |
twitter_789ghi | Winter_wonderland | cpc | 2020-12-01 | 9732461 | 194649 | 29197.35 |
Importing cost data from other platforms
The following sections provide general guidelines for exporting campaign cost data from different platforms (e.g., Facebook, Twitter, Microsoft), and also provide available links to the native documentation for those platforms.
Given that those platforms don't necessarily supply data using the same format that is native to Analytics, it is up to you to ensure that the data you export from those platforms and import into Analytics is consistent with the format that Analytics expects (e.g., id, source, medium, date).
Make sure the data you export matches (but does not exceed) the following required, recommended, and optional dimensions and metrics:
- ID [required]
- Source [required]
- Medium [required]
- Date [required]
- Name [optional, but recommended]
- Cost (optional, but expected)
-
Note: We expect the currency of cost that is imported to match the GA4 property currency.
-
- Clicks (optional)
- Impressions (optional)
Collecting campaign IDs
Various vendors, including those below, provide different mechanisms to include campaign id, name, source, and medium within an ad's click target (the link to your site that end users click). We advise using vendor-provided auto-population features when they're available. When those features are not available, you may have to provide full URLs directly to the vendor.
Use Facebook Ads Manager to export your data.
- In Ads Manager, click the Export & Import icon.
- Select the option to customize your export to include the dimensions and metrics listed above.
Related resources
Differences Between Ads Manager Field Names and Import/Export Spreadsheet Column Names
Firebase Android apps
Use the campaign_details event to collect the equivalent information you collect with utm_id
for web campaigns.
Use FirebaseAnalytics.Param.CP1 (custom parameter) to collect the information.
Firebase iOS apps
Use the AnalyticsParameterCampaign constant to collect the equivalent information you collect with utm_id for web campaigns.
Use Campaign Manager to export campaign data.
- Select Campaign performance as the Report Type so you can choose which Column view to use for your CSV export.
- Select only the dimensions and metrics listed above (or the import will fail).
Related resources
Microsoft
You can use Microsoft Advertising reports to export a CSV file of your data.
- Configure a campaign report that includes the dimensions and metrics listed above.
- Use the Download option to export your data.
You can also use Microsoft Advertising Editor to export data for campaigns.
Use the Export option in the upper right section of your campaign dashboard to export a CSV file of your campaign data.
Twitter does not provide native support for Source and Medium. You can hard code the source as "twitter". The values you provide for Medium should reflect the individual mediums you use for each campaign ID.
Verizon
Use Native Ad Platform bulk files to download and edit the campaign data from your advertiser account.
The default download includes additional dimensions that you cannot import into Analytics. Prior to import, you need to remove those columns and consolidate rows as necessary so that your CSV file includes only the dimensions and metrics listed above (or the import will fail).
Limits of cost-data import
Cost-data import uses the reporting/query time join. This lets you associate your imported cost data with events already processed by Analytics.
You can have only one data source when you import cost data.