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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Example campaign-cost mapping
Import fieldExampleValidation question
utm_sourcemetaIs this the source in collected sessions?
utm_mediumpaid_socialDoes the spelling and case agree?
date2026-10-01Does the date boundary agree with the comparison?
utm_id / utm_campaigndemo_123 / autumn_leadsCan a rename or ID mismatch explain the gap?
currency / costCAD / 125.00Are 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

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.

Official sources checked October 13, 2026