Sign in

Blog · Board and management reporting

Marketing performance measurement from spend to results

Reconcile campaign spending, CRM outcomes, and posted revenue into a repeatable marketing review. Follow a worked example with spreadsheet formulas, matching rules, and checks against the original exports.

The short answerMarketing performance measurement connects campaign spending to defined customer outcomes using consistent dates, identifiers, and attribution rules. Start with cost, CRM, and finance exports; deduplicate the records, match outcomes to campaigns, and reconcile the totals before comparing performance. Keep unmatched revenue visible and distinguish credited results from evidence of incremental sales.

Marketing performance measurement connects campaign spending to matched leads, sales outcomes, and posted revenue using the same rules every period. Start with the exports behind those figures, reconcile their totals, and only then compare campaigns. A convincing report explains both the results it includes and the records it cannot match.

Set the question and the observation window

Choose an acquisition cohort, an outcome cutoff, and a cost scope before calculating anything. A US distributor might compare leads created in January 2026, observe their outcomes through June 30, 2026, and include all costs assigned to those January campaigns. That is different from dividing June revenue by June advertising spending.

Write down what counts as an accepted lead, a won sale, and revenue. Use posted net revenue after credits for this example; an opportunity marked won is a sales milestone, not a substitute for that finance figure. Keep the scorecard small. The marketing KPI guide covers metric selection and definitions; this workflow establishes whether the chosen figures tie to their source records.

Pick a credit rule too. Here, every lead has one originating campaign, and every included sale is assigned once to that lead. This is a reporting convention. Google's attribution documentation describes attribution as assigning credit across interactions, which explains why a change of rule can change campaign results without changing company revenue.

Prepare the exports at the right level

Bring a campaign cost export, a CRM lead export with stage dates, and finance sales and credit records with customer or order identifiers. Retain original identifiers and add a campaign mapping table for spelling differences. A renamed campaign should not appear as a new source.

Reduce each dataset before matching it. Include only orders dated on or after lead creation and through the outcome cutoff; earlier customer purchases belong outside this cohort result. Sum finance lines to the order, then assign each order once. Aggregate eligible orders to the lead before combining them with the lead register. Otherwise a lead with several invoice lines becomes several leads, and its campaign cost can repeat on every line.

For the spreadsheet below, prepare an Outcomes tab with one row per unique lead:

Column Field Treatment
A Lead ID Unique, nonblank identifier
B Originating campaign Agreed mapping, or Unassigned
C Lead creation date Actual spreadsheet date
D Accepted flag 1 if accepted by cutoff; otherwise 0
E Won flag 1 if won by cutoff; otherwise 0
F Posted net revenue (USD) Eligible orders through cutoff, after credits
G Variable delivery cost (USD) Same included orders

Resolve unknown stage status separately; the flags above assume status is known. A confirmed absence of sales is zero revenue. An unreviewed finance match is an exception, not a confirmed zero.

Reconcile spending before comparing results

The distributor's cost register contains these campaign charges. All amounts are USD, and the agreed scope excludes no other campaign charges.

Campaign Cost component Amount (USD)
Search Advertising 10,000
Search Agency work 2,000
Webinar Event platform 5,000
Webinar Production 3,000
Total 20,000

Search costs $12,000 and Webinar costs $8,000. Tie the $20,000 to the approved campaign cost register, including accruals and credits. Do not add agency invoices twice when they already appear in that register. Keep the account and invoice reference beside each adjustment.

Put the cost rows on a Spend tab with campaign in A and amount in B, headers on row 1. In a Summary tab, put Search and Webinar in A2:A3. Calculate campaign cost in B2:

=SUMIFS(Spend!$B$2:$B$5,Spend!$A$2:$A$5,$A2)

Microsoft documents SUMIFS as summing values that satisfy the stated criteria. Keep its amount and criteria ranges the same size.

Calculate the matched campaign results

In Summary C2, count January leads for the campaign. Extend the ranges to cover the complete cleaned export:

=COUNTIFS(Outcomes!$B$2:$B$999,$A2,Outcomes!$C$2:$C$999,">="&DATE(2026,1,1),Outcomes!$C$2:$C$999,"<"&DATE(2026,2,1))

Microsoft's COUNTIFS guidance confirms that a row is counted when all specified criteria are met. Covirage is not affiliated with Microsoft or Google.

For accepted leads in D2, sum the accepted flag using the same campaign and cohort filters:

=SUMIFS(Outcomes!$D$2:$D$999,Outcomes!$B$2:$B$999,$A2,Outcomes!$C$2:$C$999,">="&DATE(2026,1,1),Outcomes!$C$2:$C$999,"<"&DATE(2026,2,1))

Use that formula with the sum range changed to column E for wins, F for net revenue, and G for variable cost. Fill the formulas down. The cleaned exports produce this summary, with columns A:G in the order shown:

Campaign Spend (USD) Leads Accepted Wins Net revenue (USD) Variable cost (USD)
Search 12,000 120 60 12 96,000 57,600
Webinar 8,000 80 40 8 80,000 44,000
Total 20,000 200 100 20 176,000 101,600

Calculate acceptance rate in H2, cost per accepted lead in I2, lead-to-win rate in J2, and contribution after campaign spending in K2:

=IF(C2=0,"",D2/C2)
=IF(D2=0,"",B2/D2)
=IF(C2=0,"",E2/C2)
=F2-G2-B2

These are separate cells, filled down. Ratios are shown to one decimal place; dollars are exact here.

Campaign Acceptance rate Cost per accepted lead (USD) Lead-to-win rate Contribution after spend (USD)
Search 50.0% 200 10.0% 26,400
Webinar 50.0% 200 10.0% 28,000
Total 50.0% 200 10.0% 54,400

The campaigns have equal conversion rates and equal cost per accepted lead. Webinar leaves more contribution after spending because its matched revenue and delivery costs produce a different margin. That supports a review of the offer and customer mix; it does not prove that shifting spending will reproduce the result. For full return definitions, use marketing ROI versus ROAS, and keep customer acquisition cost separate from this accepted-lead cost.

Prove the totals and make the review repeatable

Calculate total ratios from summed numerators and denominators. For example, total cost per accepted lead is 20,000 / 100 = $200. Contribution before campaign spending is 176,000 minus 101,600 = $74,400; subtracting $20,000 gives the same $54,400 as the sum of the campaign results.

The finance export needs its own bridge:

Revenue classification through cutoff Net revenue (USD)
Matched to January campaign leads 176,000
January cohort, campaign unknown 14,000
Outside the January lead cohort 30,000
Finance export total 220,000

The bridge proves 176,000 + 14,000 + 30,000 = $220,000. It does not silently allocate the unknown campaign revenue. Reconcile CRM lead counts in the same way, preserving exclusions and their reasons.

Save the cutoff, mapping version, source totals, and unresolved exceptions with each review. Marketing operations owns the workbook, sales operations confirms stage changes, and finance confirms the cost and revenue bridges. If the process is sound but selecting software is the next decision, use the matched-file test in marketing performance measurement tools.

Where it goes wrong

  • Mixed clocks. Comparing current spending with revenue from older leads hides the conversion delay. Use a defined cohort and outcome cutoff.
  • Repeated records. Invoice lines or campaign contacts can multiply leads and sales. Check unique identifiers before combining exports.
  • Missing costs. Platform spending alone can omit production, agency charges, and accruals. Reconcile the agreed cost scope.
  • Unmatched treated as zero. A failed match is not evidence of no sale. Preserve an exception bucket and resolve it.
  • Credit treated as causation. Attributed revenue answers a reporting question. A budget expansion still needs evidence about incremental contribution and capacity.

Do this on your own file in Covirage

Bring a workbook containing your campaign costs, cleaned CRM outcomes, and finance reconciliation. Covirage maps the columns, and its tools compute and check the figures; the external AI model explains the results 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 export.

See Covirage for sales insights for the supporting business context.

Questions people ask

How often should marketing performance be measured?

Review spending and data exceptions regularly, then compare outcomes on a cadence that fits the sales cycle. Keep an acquisition cohort open until its agreed observation date. A monthly spending review and a mature cohort review answer different questions and should be labeled separately.

Why do advertising reports and finance revenue disagree?

They can use different conversion events, attribution windows, currencies, and revenue definitions. Finance may also include refunds or sales with no campaign identifier. Build a reconciliation by reason instead of forcing the advertising total to equal posted revenue.

Can campaign attribution prove that marketing caused a sale?

Attribution assigns credit under a stated rule; it does not by itself establish what would have happened without the campaign. Use attributed outcomes for consistent reporting. A claim of incremental sales needs additional evidence, such as an appropriately designed comparison or holdout.

Who should own the marketing performance reconciliation?

Marketing operations should maintain campaign identifiers and the review workbook. Sales operations owns CRM stage definitions and matching exceptions. Finance confirms cost scope and posted revenue. Assign an owner and resolution date to each exception before the review closes.