Anata Intelligence
How to Import Non-Google Campaign Cost Data to GA4
By Anata Inc. ·

The short answer.
Import non-Google campaign data into GA4 only after campaign URL parameters and source data use the same controlled identifiers. Google requires campaign source, campaign medium, and date, with campaign ID and campaign name strongly recommended; cost imports also require currency. Build one daily record per unique key set, remove duplicates, normalize case without changing the collected UTM values, and preserve the source-platform export. Load a small canary through a supported import source, then verify upload success, match rate, reporting availability, currency, cost, clicks, and impressions against the source. Google describes campaign data import as a reporting-time join and allows later uploads to overwrite the same keys, so version mappings and keep a rollback-ready file before automation.
Section 01
Inventory the collected campaign keys
Start in GA4 with the actual source, medium, campaign ID, and campaign name values collected from non-Google traffic. Google says imported values must match the UTM values logged with user sessions, including case. Export a representative period and list every distinct value, blank, alias, and unexpected spelling. Do not normalize the import file to a preferred taxonomy unless the collected destination URLs use the same exact values. A clean-looking file that cannot join is worse than an honest inventory of fragmented identifiers.
Map each paid platform account and campaign to one controlled UTM contract. Keep source and medium stable, use campaign ID where the platform can provide it, and resolve dynamic template values before import. Google notes that the import interface does not evaluate unresolved dynamic placeholders. Version the mapping with an effective date and owner. If historical clicks used inconsistent UTMs, document the limited join coverage rather than rewriting the source export or claiming that the import repairs previously collected sessions.
Section 02
Prepare one daily record per key set
Build daily aggregated rows with the required campaign source, campaign medium, and ISO date. Add campaign ID and campaign name where maintained. Include at least one supported metric such as cost, clicks, or impressions, and include an ISO currency code when cost is present. Preserve the raw source-platform export, timezone, account currency, extraction timestamp, and transformation version. Do not combine accounts with different currencies or date boundaries without an explicit conversion and alignment policy.
Remove duplicate keys before upload. Google warns against duplicate key sets, and later imports with the same keys can overwrite prior values. Define whether the source platform reports preliminary or settled daily cost and when a day is eligible for reload. Keep cost, credits, taxes, and platform adjustments consistent with the approved financial definition. If the source changes a historical value, create a new versioned file and record the reason instead of silently replacing the prior evidence.
Section 03
Choose a supported source and canary the join
Google supports several campaign data import sources, including CSV and connected systems. Choose the smallest operational surface that the team can secure, monitor, and reproduce. Start with a short completed period and one platform account. Map the source fields to the Analytics schema, confirm property and timezone, and inspect the preview before starting the import. Do not grant broader database or storage access merely for convenience when a bounded file can prove the mapping.
Record the import source ID, property, file checksum or source query, row count, key range, mapping version, actor, and start time. The canary should include campaigns that have verified sessions in GA4 so match behavior can be evaluated. It should also include a known no-traffic row only if the test plan explains the expected outcome. Avoid using future dates or partial current-day data. A controlled import needs a stable reporting period, not a moving target.
Section 04
Validate upload success and match rate separately
Check whether rows imported successfully before evaluating whether they joined to collected data. Google distinguishes imported percentage from match rate. A syntactically valid file can upload while its source, medium, or date keys fail to match sessions. Review the campaign import validation report, rejected rows, required dimensions, currency, and duplicates. Then compare match rate and the common collected UTM combinations for the same period. Fix the mapping cause, not the report display.
Google notes that imported data can take time to appear and that match-rate calculations focus on a defined recent history. Wait for the documented processing window and use completed dates. In GA4, compare imported cost, clicks, and impressions to the source-platform totals at the same account, timezone, currency, and campaign scope. Differences may come from key coverage, source revisions, or report definitions. Record each reconciliation rather than forcing totals to agree through untraceable edits.
Section 05
Use imported cost without overstating attribution
Campaign data import lets GA4 report non-Google cost, click, and impression data alongside collected revenue and events. That creates a shared analysis surface, but it does not prove that every reported outcome was caused by the campaign. Confirm ecommerce and key-event instrumentation, attribution settings, channel definitions, refunds, and revenue currency before calculating return measures. Keep platform-reported results and GA4 joined analysis as separate evidence when their attribution rules differ.
Build monitoring for file arrival, row count, duplicate keys, rejected rows, match rate, stale data, currency, and source-total reconciliation. Review sudden zeros or jumps before they enter executive reporting. When a source mapping changes, canary it with a parallel validation file and mark the effective date. Do not automate a daily import until the manual canary is reproducible and the team can restore the prior source or delete the reporting-time import when a material defect appears.
Section 06
Govern campaign cost imports as a controlled operating change
Approve the UTM contract, daily key set, currency treatment, source access, and overwrite policy before the first import. Write the approved purpose, accountable owner, input evidence, exclusions, and review date before changing production. Keep the prior configuration or report export with the decision record so the team can distinguish a deliberate change from an unexplained drift. A reversible canary is more useful than a broad rollout because it exposes mismatched data, eligibility, status, or workflow assumptions while the affected set is still small.
Monitor file completeness, row validity, match rate, source reconciliation, processing delay, and joined-report consistency. Review the first complete operating period against the documented baseline, not against a desired outcome. Record exceptions separately from normal cases, and do not assign causal impact when the available evidence only shows association. Delete or replace the reporting-time import source and restore the prior versioned data when a mapping or currency defect is confirmed. The durable deliverable is a traceable decision with a named owner, comparable evidence, and a clear next review, whether the team keeps, revises, or removes the change.


