Why are campaign costs missing in GA4?
A Google Ads link does not supply non-Google campaign costs. Import those separately. An accepted file can also have unmatched rows: Google distinguishes upload success from match rate. Source, medium and date are required keys; their values must agree with collected data. Currency is required when cost is included. Google's campaign import specification.
Diagnose the smallest broken handoff. Is the platform export incomplete? Did the file upload? Are costs visible under the imported source, but disconnected from the campaign sessions? Those are different problems, and each needs a different repair.
Run a one-week reconciliation
Freeze the comparison
Pick a completed week and one ad account. Record reporting currency, time zone, campaign IDs and the export time. Keep a copy of the original file so you can distinguish a source correction from a mapping change.
Read the values that actually arrived
List the source and medium pairs in GA4. Then inspect a tagged landing URL from each campaign. Compare the resolved values, rather than the macro expression configured in the ad platform. Use the UTM Link Builder to document future naming.
Map the export explicitly
Maintain a small ledger from platform campaign ID to UTM campaign ID, name, source and medium. A campaign rename deserves a dated note. Avoid silently rewriting old names to match a new convention.
Inspect both import health signals
Record upload success and match rate separately. Compare cost totals with the original platform export, then inspect the campaigns with the largest unexplained gaps. Repair one cause at a time.
Reconcile the result
Compare the same week and account again. Explain remaining differences in a short note with an owner and a next check. A green upload status is an ingestion result, not a finance sign-off.
A sample field mapping
This is an illustrative mapping for your import configuration, not a production-ready export. Replace every example value with the values actually used in your campaigns.
| Import field | Example | Validation question |
|---|---|---|
| utm_source | meta | Is this the source in collected sessions? |
| utm_medium | paid_social | Does the spelling and case agree? |
| date | 2026-10-01 | Does the date boundary agree with the comparison? |
| utm_id / utm_campaign | demo_123 / autumn_leads | Can a rename or ID mismatch explain the gap? |
| currency / cost | CAD / 125.00 | Are the units documented and the total reconciled? |
What if the upload is successful but match rate is low?
Costs can still be reported without matching Analytics activity. Check exact UTM spelling and case, the imported dates, and missing sessions. Google provides a Campaign data import validation report for reviewing UTMs and comparing cost, clicks and impressions. Import health and validation guidance.
Keep a mismatch ledger
Use four columns: campaign ID, observed mismatch, proposed repair, and reconciliation result. For example, if an export uses facebook but collected traffic uses meta, investigate the mapping before changing live URLs. A rushed global rename can introduce another break while leaving historical reporting unresolved.
Why Scenario Planner still may not work
The DDA budgeting model needs at least one year of conversion history and campaign data across Google and non-Google channels. Missing costs or major gaps can prevent model checks from passing. Eligibility updates can take a day after uploads, with model evaluation taking up to two days. DDA budgeting requirements.
Keep two separate sign-offs: the import reconciles, and the model is usable. Do not interpret an absent channel as a recommendation to cut its budget. Compare the scenario with your planning ledger, sales capacity and the outcome you actually want to improve. Read the Scenario Planner eligibility guide for the broader readiness checks.
Before you trust the next budget plan
- The comparison has a named account, period, currency and owner.
- Source-platform spend and imported spend reconcile, or the gap is explained.
- Campaign identity is documented across exports and collected traffic.
- Overlapping data sources and duplicate keys have been reviewed.
- The planning outcome reflects business value, with known tracking changes documented.
Make the next import easier to review
Standardize tags with the UTM Builder, then return to the cross-channel budgeting guide. Keep the reconciliation alongside the plan so someone else can reproduce the decision.
Frequently asked questions
Does linking Google Ads import Meta costs?
No. Non-Google campaign costs need a separate import source.
Does a successful upload mean the campaigns matched?
No. Review import success, match rate and reconciled totals as separate checks.
Should I cut a channel that is missing from Scenario Planner?
Do not treat missing model coverage as evidence that a channel has no value. Repair and validate its inputs first.