What is Non-Google Cost in Google Analytics 4?
If you're trying to measure your marketing performance, you've probably dreamed of having one central place to see everything. Google Analytics 4 is often positioned as that central hub, but by default, it has a massive blind spot: it doesn't know how much you're spending on anything other than Google Ads. This article will show you what non-Google cost data is, why it's so important for calculating your true ROI, and how you can get it into GA4.
What Exactly is Non-Google Cost Data in GA4?
Non-Google cost data is simply the advertising spend from any platform that isn't part of the Google ecosystem. Think about all the other places you run paid campaigns. This includes:
- Social media ads (Facebook, Instagram, LinkedIn, TikTok, X/Twitter, Pinterest)
- Other search engines (Microsoft Advertising/Bing Ads)
- Affiliate marketing platforms
- Email campaigns with a cost-per-send or cost-per-click model
- Display ad networks outside of Google's network
By default, GA4 can see the traffic coming from these sources if you use UTM parameters correctly. For instance, you'll see sessions and conversions attributed to a source/medium like facebook / cpc. However, when you look at cost-related metrics for that campaign in your GA4 reports, you'll just see a $0 or (not set) value. Google Analytics knows someone clicked your Facebook ad and later converted, but it has no idea you paid Facebook $5 for that click. This missing piece of the puzzle makes it impossible to calculate your actual return on investment inside of GA4.
Why Bother Importing Cost Data? The ROI Blind Spot
Taking the extra step to import your cost data might seem like a hassle, but it moves you from basic traffic analysis to genuine performance marketing analysis. It solves several major reporting headaches.
Get a Complete View of Your Marketing ROI
The single most important reason to import cost data is to calculate Return on Ad Spend (ROAS). The formula for ROAS is straightforward: (Revenue / Ad Cost). Without the "Ad Cost" element, the formula is useless.
Imagine this common scenario:
- Week 1: You spend $1,000 on a Facebook Ads campaign that generates $3,000 in revenue.
- Week 2: You spend $1,000 on a LinkedIn Ads campaign that generates $2,000 in revenue.
Inside GA4, you’d see the revenue from both sources, but you wouldn't see the cost. On the surface, the Facebook campaign might look more successful because it brought in more revenue. But you can't be sure without knowing if you spent the same amount. Once you import the cost, you can see the full picture right within your GA4 reports:
- Facebook Campaign ROAS: ($3,000 / $1,000) = 3x ROAS
- LinkedIn Campaign ROAS: ($2,000 / $1,000) = 2x ROAS
Now you can make an informed decision because you're comparing channels apples-to-apples in one place.
Free PDF · the crash course
AI Agents for Marketing Crash Course
Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.
Centralize Your Performance Reporting
Most marketers have experienced the dreaded "reporting week" scramble. You log into Facebook Ads Manager, export a CSV. You log into LinkedIn Campaign Manager, export another CSV. Then you log into GA4 and export your conversion data. Finally, you spend the next few hours in a spreadsheet, wrangling VLOOKUPs to stitch everything together into a single report.
Importing your cost data into GA4 eliminates most of that manual work. Instead of constantly jumping between platforms, you can build reports and dashboards in GA4 that automatically combine the spend (cost) with the outcome (sessions, engagement, conversions, revenue). This saves hours of busywork and reduces the chance of manual errors.
Unlock Deeper, Cross-Channel Insights
When all your performance data lives in one platform, you can start asking more strategic questions that go beyond single-channel performance. You can compare different channels, campaigns, and audiences using the same attribution model and metrics.
For example, you can create a GA4 report that shows Cost Per Conversion and ROAS for every paid channel, all in one table. This immediately highlights which channels are most efficient and which are underperforming, giving you clear signals on where to allocate your budget for the next month.
How to Import Cost Data into GA4: A Step-by-Step Guide
Google Analytics 4 offers a native feature for importing cost data via a CSV file upload. This process is entirely manual but effective for occasional or periodic updates. Here’s how you can do it.
Step 1: Prepare Your Cost Data CSV File
The first and most important step is creating a CSV file formatted in a way that GA4 can understand. There are specific required fields that you must include.
Required File Structure and Fields
Your CSV must include specific column headers that Google recognizes. Critically, you must include a date field and at least one cost-related metric (cost, clicks, impressions), plus at least one campaign dimension (ID, source, medium, campaign name).
Here are the common required fields:
date: The date of the cost data inYYYY-MM-DDformat. This is required.utm_source: The source parameter from your campaign URLs (e.g.,facebook).utm_medium: The medium parameter from your URLs (e.g.,cpc).utm_campaign: The campaign name parameter from your URLs.cost: The total amount spent on that day. Use a period as a decimal separator (e.g.,150.75).clicks: The number of clicks on your ads.impressions: The number of times your ads were shown.
**Heads up:** The values you use for `utm_source`, `utm_medium`, and `utm_campaign` in your CSV file MUST match the UTM parameters on your ad URLs *exactly*. GA4 uses these values as the key to join your cost data with the session data it already has. If there's a typo or a mismatch in capitalization (`Facebook` vs. `facebook`), the import will fail to match your data.
For example, if your ad click-through URL is:
https://www.yourwebsite.com/?utm_source=facebook&utm_medium=cpc&utm_campaign=summer-sale-2024
Your corresponding row in the CSV should look something like this:
date,utm_source,utm_medium,utm_campaign,cost,clicks,impressions
2024-07-15,facebook,cpc,summer-sale-2024,55.42,112,6580Step 2: Upload the File in the GA4 Interface
Once you have your CSV file ready and saved, you can upload it directly into the GA4 admin panel.
- Navigate to the Admin section of your GA4 property (the gear icon in the bottom-left).
- In the "Property" column, find the section for "Data Collection & modification" and click on Data Import.
- Click the blue Create data source button.
- Give your data source a descriptive name, like "Facebook Ads Cost - July 2024".
- For "Data source type," select Cost data.
- You'll get a prompt to upload your file. Drag and drop your CSV or click to browse for it.
- Once uploaded, you'll need to map your file’s columns to the corresponding GA4 fields. GA4 is usually pretty good at auto-detecting common headers like
costandclicks, but double-check that each field is mapped correctly. - Click the Import button in the top right to start the process.
Processing can take anywhere from a few minutes to several hours, depending on the size of your file. Once it’s complete, the imported data will be available in your GA4 reports.
Putting Your Imported Data to Work: Reporting and Analysis
After your import is processed, a whole new layer of analysis becomes available. Navigate to your advertising or acquisition reports to see it in action.
A great place to start is the Reports > Acquisition > Traffic acquisition report. By default, you might not see cost data. Click the "Customize report" pencil icon in the top right, go to "Metrics," and add the following:
- Cost per conversion
- Advertiser-specific cost (this is your imported cost)
- Return on ad spend
Now, your report can show data from Google Ads right alongside your newly imported Facebook Ads data. You can compare Return on ad spend for all your campaigns in one unified view, making it easy to spot top performers and areas for improvement.
Free PDF · the crash course
AI Agents for Marketing Crash Course
Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.
The Downside: Limitations of Manual Cost Data Imports
While the native import feature is powerful, it has some significant limitations you should be aware of. The biggest one is that it's an entirely manual and repetitive process. To keep your data fresh, you would have to download new spend data from Facebook, format the CSV, and upload it to GA4 every single day or week. This is time-consuming and opens the door for human error.
Furthermore, the data is never truly real-time. Your analysis is always at least one day behind, based on when you last did an upload. For fast-moving campaigns where you need to make quick decisions, this lag can be a real problem.
Final Thoughts
Importing your non-Google cost data into GA4 is a critical step for moving beyond surface-level metrics and truly understanding your marketing ROI. It consolidates your reporting, saves you from manual spreadsheet work, and provides a full picture of your performance. While GA4’s manual CSV upload process works, its repetitive nature makes it challenging to maintain consistently.
We built Graphed to eliminate this exact frustration. Instead of manually downloading CSVs and wrestling with uploads, we connect directly to your data sources like Facebook Ads, LinkedIn Ads, Shopify, and Google Analytics. Graphed automatically pulls in your cost, impression, revenue, and conversion data in real-time, blending it all into one unified view. So instead of spending hours building reports, you can simply ask questions in plain English like, "show me my ROAS for every channel last month" and get an interactive dashboard instantly. If you’re ready to stop juggling spreadsheets and start getting immediate, clear insights, give Graphed a try.
Related Articles
How to Create Facebook Ads API for Claude Code
Create a Meta Marketing API access token that never expires, using a system user, so Claude Code can pull Facebook ad reports and manage campaigns.
ClickHouse vs Postgres: When to Switch to Columnar
Comparing ClickHouse vs PostgreSQL means matching storage architecture to workload. Row storage wins for transactions. Columnar wins for scan-heavy analytics.
Google Ads for Orthodontists: Get More Booked Consults
Most orthodontic Google Ads campaigns waste money on low-intent searches. The problem is structure, not the platform.