These days, most marketing conversations revolve around AI. Like many teams, we’re experimenting with improving AI visibility, AI SEO, and expanding our acquisition channels.
At the same time, we still rely on the classics — organic traffic, referrals, and community-based growth.
We don’t use Google Ads because, for our products, the cost per acquisition is too high compared to other channels. Instead, we’ve been testing platforms outside Google’s ecosystem — LinkedIn, Reddit, and others.
When it came to analyzing campaign performance, I naturally turned to Google Analytics. But data from these platforms doesn’t show up as completely as it does for Google Ads. I found myself back in spreadsheets, manually merging metrics just to see the full picture — something that felt both outdated and inefficient.
Then I discovered that GA4 actually lets you import external cost data directly — yep, even with all my FOMO, I still managed to miss this feature 😅.
If you’ve ever faced the same challenge, this might be helpful for you too.
If you haven’t tried it yet, the setup process is easier than it sounds.
Step 1: Prepare Your Cost Data
Start with a spreadsheet or export from your ad platform (LinkedIn, Meta, TikTok, etc.).
Your file should include these columns:
Column | Example | Description |
---|---|---|
Date | 2025-10-15 | Date of spend (YYYY-MM-DD) |
Source | Ad platform or source | |
Medium | cpc | Traffic type (CPC, social, email, etc.) |
Campaign | autumn_promo | Campaign name — must match GA4 |
Cost | 250 | Amount spent (in GA4 property currency) |
💡 Optional: Add Clicks and Impressions if available.
Step 2: Create a Cost Data Source in GA4
Go to: Admin → Data Import → Create Data Source → Cost data.
Name your import (e.g., “LinkedIn Ads”). You’ll see a list of source options — choose what fits your workflow.
Step 3: Map and Upload
Once your data source is selected:
Upload or connect your file.
Map your file columns to GA4 fields (e.g., Source → Campaign Source, Cost → Cost).
Review and click Done. GA4 will process the data.
Step 4: See the Results
Go to Reports → Acquisition → Non Google cost.
Add Source/Medium as a secondary dimension.
Double-check capitalization — “Meta” ≠ “meta” in GA4’s eyes.
Avoid duplicate rows (same source, medium, and date).
Keep naming consistent — even small UTM changes can break matches.
There’s one thing: seeing how much you spend is only half the story.
The other half is everything that happens behind the scenes — the hours, teamwork, and creative effort that make each campaign possible.
How much time did your team spend setting up that LinkedIn campaign?
How many Jira tasks, design iterations, or approvals did it take before the ad finally went live?
In our team, we use Marketing Campaign Analyzer, an app for Jira developed by my team that connects Google Analytics metrics with our work in Jira. It helps us see not only campaign results but also the effort behind them — who worked on what, how long it took, and what impact it created.
That’s when we decided to connect our marketing performance data with the way we already work in Jira. It helps answer questions like:
Are our high-performing campaigns also high-effort?
Which channels deliver the best ROI per hour of work?
How can we balance creativity, time, and impact better next time?
You start building campaigns that are not just successful, but sustainable.
For me, this setup changed how we think about success.
Now, we don’t just ask “What performed best?” — we ask “What was worth the effort?”
It’s helped us plan better, collaborate more transparently, and make every campaign a learning experience rather than just another report.
In the end, data only matters when it helps people work better together.
That’s the kind of insight I believe every marketing team — no matter the size or toolset — should aim for.