Campaign import validation

캠페인 가져오기 검증

Find missing or unmatched imported cost, click, and impression data.

···
html
<div class="civ"><div class="civ-head">IMPORT CHECK <b id="civ-status">1 MISSING FIELD</b></div><div class="civ-table"><div class="civ-label"><span>CAMPAIGN</span><span>CLICKS</span><span>COST</span></div><div><span>SEARCH / paid</span><span>1,240</span><span>$2,400</span></div><div class="civ-alert" id="civ-row"><span>SOCIAL / paid</span><span>860</span><span id="civ-cost">MISSING</span></div></div><button id="civ-fix">FILL COST FIELD</button><small>CHECK AGAINST SOURCE TOTALS</small></div>
css
.civ{width:min(87%,590px);font:850 clamp(10px,max(2vmin,1vw),14px)/1.2 sans-serif}.civ-head{display:flex;justify-content:space-between;gap:6px;border-bottom:2px solid var(--fg);padding-bottom:8px}.civ-head b{color:var(--accent)}.civ-table{margin:clamp(9px,2.4vmin,18px) 0}.civ-table>div{display:grid;grid-template-columns:1.4fr .6fr .7fr;gap:4px;padding:clamp(5px,1.4vmin,10px) 4px;border-bottom:1px solid var(--line)}.civ-table span:not(:first-child){text-align:right}.civ-label{color:var(--muted)}.civ-alert{background:color-mix(in srgb,var(--accent) 14%,var(--surface))}.civ-alert span:last-child{color:var(--accent)}.civ button{border:1px solid var(--fg);background:var(--fg);color:var(--bg);font:inherit;padding:6px 9px;cursor:pointer}.civ small{display:block;color:var(--muted);padding-top:6px;font-size:clamp(10px,max(1.5vmin,1vw),12px)}
js
let fixed=false;function draw(){document.querySelector('#civ-status').textContent=fixed?'FIELDS COMPLETE':'1 MISSING FIELD';document.querySelector('#civ-cost').textContent=fixed?'$1,100':'MISSING';document.querySelector('#civ-row').classList.toggle('civ-alert',!fixed);document.querySelector('#civ-fix').textContent=fixed?'RESET EXAMPLE':'FILL COST FIELD'}draw();const timer=setInterval(()=>{fixed=!fixed;draw()},1600);document.querySelector('#civ-fix').onclick=()=>{clearInterval(timer);fixed=!fixed;draw()};

Campaign import validation checks whether cost, click, and impression data from external ad platforms match campaigns in an analytics property. GA4 introduced a dedicated validation report in August 2026.

The demo fills a missing social campaign cost value and changes the validation state. In practice, also check that imported source, medium, and campaign identifiers match the UTMs recorded on visits.

A passed check does not prove total spend is correct. Align currency and dates, then compare totals against the original ad platform.

When to use

Use it after importing non-Google ad costs to investigate missing or unmatched campaigns.

Open as page ↗