Compare campaign responses with customer revenue using prepared first-party exports. Follow a worked account table, spreadsheet formulas, and reconciliation checks that keep missing records visible.
First party marketing data analysis connects campaign responses with customer revenue using records from your own business. Start with prepared exports that share an account identifier, keep the eligible audience fixed, and compare outcomes over the same observation window. The result shows where response and sales coincide; it does not, by itself, measure sales caused by the campaign.
First-party information comes from direct customer interactions. Google's customer data policy uses that definition and gives purchases, marketing registrations, and quote requests as examples. The practical question here is how to analyze records your business has already prepared, rather than how to deploy tracking or resolve identities.
Consider a US equipment supplier reviewing a September campaign. Marketing wants to know whether responding accounts generated more contribution during September than eligible accounts that did not respond. Finance wants the revenue to reconcile before anyone changes the campaign budget.
Write down the response definition before counting. Here, a response means a recorded quote request following the campaign, and the sales window is September 1 through September 30, 2026. All eligible accounts have a complete sales extract through the same closing date. Broader definitions belong in the guide to marketing data; keep this review tied to a specific question.
Use the campaign audience file as the starting list. Attach the prepared response flag and the account's net sales for the window. Aggregate invoice lines to account level before combining them with the audience; otherwise an account with several invoices can inflate the response count.
The customer master supplies segment labels as they stood when the campaign began. Net revenue includes credits and returns assigned to the period under the company's stated reporting rule. Direct cost covers the supplied sales rows. Contribution here means net revenue less those direct costs, before campaign costs and overhead.
For this illustrative export, columns A through E are source fields; F is calculated. Identifiers are business account codes.
| Account | Segment | Responded: 1=yes | Net revenue (USD) | Direct cost (USD) | Contribution (USD) |
|---|---|---|---|---|---|
| A | SMB | 1 | 12,000 | 7,200 | 4,800 |
| B | SMB | 0 | 4,000 | 2,600 | 1,400 |
| C | SMB | 1 | 0 | 0 | 0 |
| D | Midmarket | 1 | 24,000 | 13,200 | 10,800 |
| E | Midmarket | 0 | 10,000 | 6,000 | 4,000 |
| F | Midmarket | 1 | 16,000 | 9,600 | 6,400 |
| Total | 4 | 66,000 | 38,600 | 27,400 |
Account C stays in the table. Its sales history is complete and shows no purchases; it is not an unmatched account whose revenue is unknown. In this review, a buyer means an account with positive net revenue. If you need purchase-event conversion even after a full refund, bring an explicit purchase flag instead.
In Excel, put the table headers in row 1 and accounts in rows 2 through 7. Contribution in F2 and a buyer flag in G2 are:
=D2-E2
=IF(D2>0,1,0)
Fill both down. Put response codes 1 and 0 in J2 and J3. Count accounts in K2 with the following formula, then copy down. COUNTIFS counts records meeting the supplied criteria.
=COUNTIFS($C$2:$C$7,J2)
Use L for buyers, M for revenue, and N for contribution. SUMIFS adds values meeting criteria, so these formulas preserve the same response grouping:
=COUNTIFS($C$2:$C$7,J2,$G$2:$G$7,1)
=SUMIFS($D$2:$D$7,$C$2:$C$7,J2)
=SUMIFS($F$2:$F$7,$C$2:$C$7,J2)
Revenue per eligible account is =M2/K2; buyer rate is =L2/K2. Format rates as percentages and round displayed rates to one decimal place. Dollar totals and per-account averages below are exact.
| Response group | Eligible accounts | Buyers | Buyer rate | Net revenue (USD) | Revenue per account (USD) | Contribution (USD) |
|---|---|---|---|---|---|---|
| Responded | 4 | 3 | 75.0% | 52,000 | 13,000 | 22,000 |
| Did not respond | 2 | 2 | 100.0% | 14,000 | 7,000 | 5,400 |
| Total | 6 | 5 | 83.3% | 66,000 | 11,000 | 27,400 |
The response rate is 4 / 6 = 66.7%. Responders have higher revenue per account but a lower buyer rate. Those are different observations, and both matter: a response count alone would miss the size of the purchases.
The group counts must return the audience total: 4 + 2 = 6. Group revenue must return included sales: $52,000 + $14,000 = $66,000. Contribution must also reconcile: $66,000 minus $38,600 = $27,400.
Suppose the full sales export contains one invoice whose account identifier could not be matched. Keep that amount visible:
| Sales reconciliation | Net revenue (USD) |
|---|---|
| Included eligible accounts | 66,000 |
| Unmatched invoice | 3,000 |
| Full sales export | 69,000 |
The unmatched $3,000 remains outside the group comparison until its membership is resolved. It is neither a nonresponse nor zero revenue. The principle in reading a coverage table applies here: establish data quality before ranking the commercial result.
Ask sales to review the larger responding accounts and the responding nonbuyer separately. Compare within segment before concluding that response behavior explains revenue; account size can drive both. Freeze customer membership when repeating the review, as in adoption by purchase cohort.
Marketing owns the audience and response definition. Sales owns account context. Finance owns the revenue reconciliation and cost scope. Campaign cost and causal attribution need separate treatment before calling this return on investment; marketing ROI versus ROAS covers that distinction.
Covirage is not affiliated with Microsoft or Google.
Bring a prepared campaign audience and customer sales export, or a Google Sheet containing the same fields. Covirage maps the columns, its tools compute and check the group counts, revenue, and contribution, and the external AI model explains the result with every figure traced to its rows. Create a free Covirage account, which takes about a minute, then set up your business and bring a sample of your own data.
See sales insights for the supporting business context.
Use a prepared campaign export with customer identifiers, eligibility and response flags, plus a sales export with the same identifiers, transaction dates, net revenue, and direct costs if available. A customer master supplies the segment and cohort labels. Keep unmatched records in a separate reconciliation.
No. Responders may already be more interested, larger, or more likely to buy. Their revenue describes an association within the observed group. A causal claim needs an appropriate comparison design, such as a properly assigned holdout, rather than a responder versus nonresponder comparison alone.
Yes, if they were eligible and their sales history is complete for the observation window. Keeping nonbuyers preserves the response and purchase denominators. Distinguish a confirmed zero purchase from a missing sales record; the latter needs investigation before it becomes zero.
Refresh after the agreed observation window closes and relevant returns or credits have been included. Keep the original eligible membership fixed. A later update should extend or revise outcomes for that same cohort rather than quietly replacing it with the customers still active today.