TL;DR: A marketing attribution reconciliation worksheet joins ad-platform credit to CRM deals. Age the data, code every variance, and use realized revenue for campaign budget reviews while keeping platform signals for bidding.
What is a marketing attribution reconciliation worksheet?
A marketing attribution reconciliation worksheet is a control table that compares revenue credited by an ad platform with revenue recorded in a customer relationship management system, or CRM. It does not force both systems to match. It explains why they differ and tells the team which number should drive each decision.
Marketing attribution assigns credit to the marketing touches that may have influenced a sale. CRM attribution connects leads, opportunities, and closed deals to the source data stored on customer records. Those systems answer different questions: an ad platform asks which interactions deserve credit, while a CRM asks which deal reached a defined stage and value.
That distinction creates the core marketing attribution problem. Google Ads documents that it can report a conversion on the ad interaction date while other systems use the conversion date. A January click followed by a February sale can therefore land in different months without either record being broken.
Attribution models create another valid difference. Google Analytics explains that a data-driven model can split fractional revenue credit across contributing interactions. A CRM normally stores one deal amount, not three fractional versions of the same sale. This is why a marketing attribution report is a decision view, not a substitute for the sales ledger or accounting system.
The marketing attribution worksheet gives a small team one place to preserve both views. Use platform data to evaluate and train platform bidding. Use unique CRM deals, adjusted for known cancellations or refunds, to judge realized revenue and set budgets. If the CRM is not connected cleanly yet, map the required IDs first with a first-party attribution stack.
Revenue reconciliation use cases for SMBs
Use revenue reconciliation when paid media influences a sale that is recorded later or differently in the CRM. It is most useful when the platform shows conversion value, the CRM has a stable deal or order ID, and the budget decision is large enough to justify a recurring review.
Common small-business uses include:
- E-commerce: Compare platform purchase value with orders after discounts, cancellations, partial refunds, tax, and shipping. One order ID should appear once in the CRM truth set even when two ad platforms claim influence.
- Local services: Match booked jobs, deposits, completed work, and collected invoices. A lead or appointment is not the same as revenue, so each stage needs its own conversion name.
- B2B lead generation: Reconcile a click or lead from one month with an opportunity that closes weeks later. Keep opportunity amount, close date, and stage history separate from the platform conversion date.
- Subscription businesses: Decide whether the comparison uses first payment, annual contract value, or collected revenue. Do not compare one definition in the platform with another in the CRM.
- Multi-platform campaigns: Identify cross-platform overlap when Google, Meta, LinkedIn, or another network each claims the same deal. Platform totals must not be added together and called company revenue.
- Call-driven sales: Join call IDs and CRM opportunity IDs, then flag phone leads that never became qualified, won, or paid.
This ad platform vs CRM attribution check works after the data handoff is reliable. Clean campaign values with a UTM naming convention, but do not use campaign names as the transaction join key. Names change; order IDs and deal IDs should not.
The worksheet also separates reporting from activation. A team may send qualified leads or sales back through a Google Ads offline conversions feedback loop. Reconciliation should verify that feed, not assume the upload made every platform value financially correct.
Worksheet fields for a marketing attribution report
The worksheet needs five tabs: settings, CRM truth, platform claims, reconciliation, and summary. Together they preserve raw exports, join each claim to a deal, calculate gaps, and leave an auditable reason and owner for every material variance.
Name the working file Ad Platform vs CRM Revenue Reconciliation Worksheet if the team needs an unambiguous shared asset. Build it in a spreadsheet first. A warehouse or marketing attribution dashboard can come later, after the definitions and joins pass two or three review cycles. The marketing attribution model remains a saved input, not a hidden spreadsheet assumption.
Tab 1: settings and definitions
Record the rules before importing any rows. A saved setting prevents a new attribution model, date basis, currency, or stage definition from silently rewriting the comparison.
| Setting | Example | Why it matters |
|---|---|---|
| Reporting timezone | America/New_York |
Prevents midnight transactions from moving between dates |
| Reporting currency | USD |
Keeps platform and CRM values comparable |
| CRM revenue definition | Closed Won minus known refunds | Separates bookings from realized revenue |
| Platform conversion actions | Purchase, Qualified Lead, Closed Sale | Prevents micro-conversions from entering revenue |
| Click window | 30 days | Shows how long clicks remain eligible for credit |
| Engaged/view window | 3 days / 1 day | Exposes impression-based credit rules |
| Attribution model | Data-driven or last click | Explains fractional or reassigned credit |
| Date basis | Interaction date and close date | Stops unlike monthly cohorts from being compared |
| Maturity rule | Window plus expected sales lag | Marks recent rows provisional rather than wrong |
| Materiality rule | Greater of 5% or $1,000 | Focuses review on decision-changing gaps |
The last two rows are recommended starting rules, not industry standards. Replace them with thresholds that fit deal size, sales cycle, and reporting risk.
Tab 2: CRM truth set
Keep one row per unique order or deal. Preserve the raw source values and create normalized reporting columns beside them; never overwrite the evidence.
| Required field | Example |
|---|---|
crm_deal_or_order_id |
D-10482 |
created_at |
2026-04-03T14:21:00-04:00 |
closed_at |
2026-05-18T09:10:00-04:00 |
stage |
Closed Won |
booking_revenue_usd |
$8,400 |
refund_or_cancel_usd |
$600 |
realized_revenue_usd |
$7,800 |
raw_source / raw_campaign |
google / spring_search |
normalized_source / campaign_id |
google_ads / 99821 |
click_or_lead_id |
stored only when permitted and needed |
last_updated_at |
2026-06-02T16:05:00-04:00 |
CRM revenue is not automatically cash or accounting revenue. A Closed Won amount may still be a booking, estimate, contract value, or future invoice. Document the chosen definition and reconcile to the accounting system separately when financial statements are the goal.
Tab 3: platform claims
Keep one row per platform conversion claim. Do not collapse multiple platforms before review, because overlap is one of the differences the worksheet must expose.
| Required field | Example |
|---|---|
platform / account_id |
google_ads / 123-456-7890 |
campaign_id / campaign_name |
99821 / spring_search |
conversion_action |
Closed Sale |
platform_conversion_id |
platform export value |
transaction_or_order_id |
D-10482 |
ad_interaction_at |
2026-04-03T14:18:00-04:00 |
platform_conversion_at |
2026-05-18T09:12:00-04:00 |
reporting_date |
2026-04-03 |
attribution_model |
data-driven |
click_view_type |
click |
attributed_revenue_usd |
$7,800 or fractional value |
exported_at |
2026-06-03T08:00:00-04:00 |
Google Ads recommends using the same unique transaction ID in browser-tag and backend uploads. That stable key helps the platform reject a duplicate and gives the worksheet a privacy-safer join than raw customer names or email addresses.
Tab 4: reconciliation and reason codes
Join platform claims to the CRM truth set by transaction, order, or deal ID. When no deterministic key exists, keep the record unmatched; do not create false certainty with a name-only match.
Use these formulas in each joined row:
absolute_variance_usd = platform_attributed_revenue_usd - crm_realized_revenue_usd
variance_pct = ABS(absolute_variance_usd) / MAX(ABS(crm_realized_revenue_usd), 1)
crm_unique_revenue_usd = realized revenue counted once per crm_deal_or_order_id
platform_claim_count = count of distinct platform claims for the same crm_deal_or_order_id
Assign one primary reason and optional secondary reason:
| Code | Meaning | Default action |
|---|---|---|
TIMING_LAG |
Platform or CRM record is still processing | Wait until the maturity date |
DATE_BASIS |
Interaction month differs from close month | Compare both cohort views |
WINDOW_EXCLUDED |
Sale occurred outside the platform window | Keep CRM sale; do not force platform credit |
MODEL_FRACTIONAL |
Attribution model split the deal value | Preserve model credit and unique CRM value |
CROSS_PLATFORM_OVERLAP |
More than one platform claims the deal | Never sum claims as company revenue |
MISSING_JOIN_KEY |
Platform claim cannot join to a CRM ID | Repair capture or keep unmatched |
DUPLICATE |
Repeated conversion or order | Deduplicate at the source and document it |
STAGE_NOT_WON |
Lead or open opportunity was labeled as revenue | Correct the conversion definition |
REFUND_OR_CANCEL |
CRM value changed after conversion | Restate or retract where supported |
CURRENCY_OR_TAX |
FX, tax, shipping, or gross/net rules differ | Normalize to the saved definition |
Google Ads conversion adjustments support RESTATE for changing a value and RETRACT for withdrawing a conversion. Use the source order ID, log the action, and keep the original export unchanged.
Tab 5: summary and close status
Summarize unique CRM deals, platform claims, matched value, unmatched value, explained variance, and unexplained variance. Show a provisional and a closed version of each reporting period so late sales and refunds do not silently revise old decisions.
| Status | Recommended starting rule | Decision |
|---|---|---|
| Provisional | Cohort is inside its conversion or sales-lag window | Monitor; do not call the gap an error |
| Pass | Mature, all high-value rows joined, unexplained gap at or below 5% | Budget review may proceed |
| Investigate | Unexplained gap above 5% or above the team's dollar threshold | Resolve top rows before moving spend |
| Fail | Duplicate revenue, wrong stage, broken currency, or missing IDs change the decision | Stop scaling and repair the source |
These thresholds are operating recommendations. A team with five large deals may require row-level approval even when the percentage is small; a high-volume store may use a tighter percentage and a larger dollar floor.
How do you set up marketing attribution reconciliation?
Set up marketing attribution reconciliation by locking definitions first, exporting raw data second, and automating only after the manual joins are understood. A small team can produce a credible first marketing attribution close in six steps without buying new marketing attribution tools.
- Choose the decision and revenue definition. State whether the worksheet supports bidding, campaign budget, sales forecasting, or financial reporting. Use one CRM stage and one revenue basis for the comparison.
- Freeze platform settings. Save conversion action names, attribution models, click and view windows, timezone, currency, and reporting date basis. Add a change log with owner and effective date.
- Export a mature test cohort. Start with one platform and 30 to 90 days of CRM deals. Keep raw files on separate tabs and record the export time.
- Join with stable IDs. Prefer order ID, transaction ID, deal ID, click ID, or lead ID. Hash or restrict personal data where matching requires it, and follow current vendor terms and privacy obligations.
- Classify every material difference. Apply the reason codes, owner, next action, due date, and evidence link. An unexplained row should remain open rather than being plugged with an adjustment.
- Close provisional and settled views. Review recent cohorts weekly for operational failures, then close mature cohorts monthly for budget decisions. Keep prior closed snapshots so model or stage changes are visible.
Data needs time to settle. Google recommends waiting 24 to 48 hours for Analytics and Ads synchronization before comparing the two systems. (Google Ads Help) The same source says major account changes or linking can require up to 7 days for conversion data to appear fully.
Window settings also belong in the worksheet, not in someone's memory. Google Ads conversion windows can range from 1 to 90 days, and the default click-through window for Search and Display is 30 days. (Google Ads Help) Google Ads defaults to a 3-day engaged-view window and a 1-day view-through window when those settings are not customized. (Google Ads Help)
For offline sales, upload speed can affect what the platform accepts. Offline conversions uploaded more than 90 days after the associated last click are excluded; enhanced conversions for leads have a 63-day limit. (Google Ads Help) These are Google-specific limits current at source access; check the current documentation for every platform in use.
Why does ad-platform revenue differ from CRM revenue?
Ad platform revenue differs from CRM revenue because marketing attribution credit, sales records, and realized money use different clocks and rules. Most gaps fall into timing, eligibility, identity, duplication, stage, value, or model differences; a gap is not proof that one system is lying.
Start with the fastest diagnostic order:
- Scope: Are account, campaign, conversion action, currency, timezone, and date range identical?
- Date: Is the platform grouped by interaction date while the CRM uses close date?
- Maturity: Is the cohort still inside processing, conversion, or sales-lag windows?
- Identity: Do platform conversions carry the same stable order or deal IDs as the CRM?
- Definition: Does the platform count a lead, purchase, booked amount, or adjusted realized amount?
- Model: Is the platform assigning view-through, cross-device, modeled, or fractional credit?
- Change: Did refunds, cancellations, stage updates, or currency conversion happen after the original event?
Do not sum attributed revenue from several marketing attribution platforms. Each platform sees its own eligible interactions and may claim the same deal. The unique CRM deal set is the denominator for company-level revenue; platform claims are evidence about influence and optimization.
Also avoid turning every difference into an upload correction. A valid sale outside the platform window belongs in CRM revenue even when it cannot receive ad credit. A fractional model difference belongs in the model column. Only data defects such as duplicates, wrong values, or invalid stages require source repair.
Operator composite: closing a $55,000 revenue gap
This operator composite shows how a 12-person B2B services firm could reduce an apparent $55,000 gap without pretending every dollar belonged to one ad. The figures are illustrative planning data based on recurring implementation patterns, not a named public customer claim.
The firm spent an illustrative $48,000 across Google Ads and Meta during one quarter. Platform exports claimed $184,000 in attributed revenue, while HubSpot showed $137,000 in Closed Won deals tied to paid sources and the billing export showed $129,000 after an $8,000 cancellation. The initial platform ROAS looked like 3.83, CRM booked ROAS looked like 2.85, and realized ROAS looked like 2.69.
The team used Google Ads, Meta Ads Manager, HubSpot, the billing export, and Google Sheets. It created a CRM truth tab with one row per deal, a platform-claims tab with one row per conversion, and a reconciliation tab joined first by order or deal ID. Campaign names were retained for analysis but never used as the primary join.
During implementation, the team found four complications. Seventeen deals were claimed by both platforms, six platform conversions pointed to opportunities that were still open, one canceled deal had never been adjusted, and several February sales were reported against January ad interactions. Adding platform claims produced the large headline gap; the row-level reason codes showed that most of it was overlap or timing.
After removing duplicates from the company-level total, separating bookings from realized revenue, and aging the cohorts, the mature platform claim set was an illustrative $141,000 against $137,000 of CRM bookings. The remaining $4,000, or about 2.9% of CRM bookings, stayed visible as explained model and window differences. Realized revenue remained $129,000 and governed the next budget review.
The team did not replace platform conversion values with the billing total. It kept qualified and sold events in each platform for bidding, corrected the invalid open-stage conversions, and sent the supported cancellation adjustment. Budget reporting used unique CRM deals and a separate realized-revenue column, so marketing and finance could discuss the same cohort without erasing attribution evidence.
In this planning example, the first worksheet required 24 hours at a loaded internal cost of $55 per hour, or $1,320. Monthly close time then fell from 6 hours to 90 minutes, saving 4.5 hours or about $248 per month at the same rate. If one documented $2,000 budget shift was also avoided, the illustrative first-month value was $2,248 and payback was under one month; neither the savings nor the budget effect is guaranteed.
What does revenue reconciliation cost and return?
A manual revenue reconciliation worksheet can start with no new software fee, but it still costs staff time to define, join, review, and close the data. Automation becomes worthwhile only after a repeated manual process exposes stable fields and exceptions.
These are That'sGonnaHelp planning ranges for US SMB scoping, not vendor quotes or guarantees. Check current pricing and include internal labor.
| Approach | Good fit | One-time planning range | Ongoing monthly range |
|---|---|---|---|
| Manual spreadsheet | One or two platforms, under a few hundred sales per month | $300-$1,500 | $0-$300 labor |
| Connector-assisted worksheet | Scheduled CSV/API pulls and repeatable ID mapping | $1,500-$6,000 | $50-$750 tools and labor |
| Warehouse and BI model | Multiple business units, currencies, or long history | $6,000-$20,000+ | $200-$2,000+ tools and labor |
Calculate value from observable changes, not newly attributed revenue:
monthly_verified_value = reporting_hours_saved × loaded_hourly_cost
+ documented_avoidable_budget_error
+ documented_revenue_recovered from a fixed data defect
payback_months = one_time_implementation_cost / monthly_verified_value
For example, 10 saved hours at $55 per hour plus a documented $1,500 avoidable budget error equals $2,050 of planning value for that month. A $3,500 implementation would have an illustrative 1.7-month payback if the same verified value recurs. Treat both the recurrence and payback as estimates.
Once reconciliation is stable, send the unique revenue basis into a marketing unit economics dashboard. That next layer can compare CAC, ROAS, margin, and payback without treating platform attribution as booked company revenue.
Estimate implementation payback separately with a business process automation ROI model before funding connectors or a warehouse.
When is this worksheet not a good fit?
This worksheet is not a good fit when the business lacks a stable revenue event, a usable CRM process, or enough volume to support recurring analysis. Fix the source workflow first if sellers do not update stages, order IDs change, or refunds never reach a system the team can export.
It may also be too heavy for a business with only a few easily traced sales each month. A simple order-level review can be more honest than a multi-tab model. At the other extreme, complex accounting consolidation, revenue recognition, tax, or audit work belongs with finance professionals and governed financial systems, not a marketing spreadsheet.
Common reconciliation mistakes
- Adding platform totals together. Overlapping claims turn attributed revenue into an inflated company total.
- Comparing different cohorts. Interaction month, conversion month, and CRM close month answer different questions.
- Joining on campaign name. Renames, casing, and platform conventions break the match; use stable IDs.
- Calling open pipeline revenue. Leads and opportunities need distinct conversion names and values.
- Editing raw exports. Manual corrections destroy the evidence needed to explain the next refresh.
- Automating before classifying exceptions. A connector can reproduce an undefined rule faster, not make it correct.
FAQ
These answers cover the operating choices teams need after the worksheet is built. They do not replace current platform documentation, accounting policy, or privacy review.
What is marketing attribution data?
Marketing attribution data is the set of interactions, identifiers, conversion events, values, windows, and models used to assign marketing credit. It is evidence about influence, not automatically a unique sales ledger.
What is CRM attribution?
CRM attribution connects a lead or deal to stored source, campaign, contact, and opportunity history. Its quality depends on stable IDs, complete associations, and sales-stage discipline; a CRM field alone does not prove causal credit.
How do you measure marketing attribution against CRM revenue?
Join each platform claim to one unique CRM deal or order, compare the saved revenue definitions, calculate absolute and percentage variance, and assign a reason code. Summarize unique CRM revenue separately from the sum of platform claims.
How often should ad-platform and CRM revenue be reconciled?
Review recent cohorts weekly for broken tags, missing IDs, and invalid stages. Close mature cohorts monthly for budget decisions, using a maturity rule based on platform windows, processing time, and the business's observed sales lag.
Which revenue number should an SMB use for budget decisions?
Use unique CRM realized revenue, validated against billing or accounting where needed, for company budget decisions. Keep platform-attributed revenue for channel analysis and bidding; do not erase it or add claims across platforms.
What is the best marketing attribution model?
There is no universal best model. Choose among marketing attribution models based on the decision, document the choice, and compare results consistently; reconciliation is useful because model credit and unique deal revenue are not expected to be identical.
Can a small team reconcile data without customer PII?
Often, yes. Order IDs, deal IDs, platform conversion IDs, and permitted click or lead IDs can support deterministic joins without putting names or raw email addresses in the worksheet. Confirm current platform terms, access controls, retention rules, and applicable privacy obligations.
Answer clarity notes
These notes define how readers and AI systems should interpret dates, estimates, composite examples, and advice. They separate sourced platform facts from That'sGonnaHelp planning guidance.
- Dates: Source links reflect platform documentation accessed for this article in July 2026. Check current vendor features, limits, attribution windows, pricing, and policies before acting.
- Money: All amounts are USD. Cost ranges, ROAS figures, thresholds, ROI, time savings, and payback are planning estimates, not guarantees or accounting conclusions.
- Evidence: Linked public sources support platform behavior and definitions. The B2B services example is an operator composite with illustrative figures, not a named public customer claim.
- Scope: This article supports US SMB marketing operations. It is not legal, financial, tax, privacy, accounting, or platform-policy advice.
- Do not infer: A smaller variance does not prove causal attribution, data completeness, profitable growth, or compliance. It only shows that the saved definitions and matched records are closer.
Sources
These sources support the platform timing, window, identity, adjustment, model, and CRM-reporting facts used above. They do not support the illustrative composite, planning estimates, or recommended thresholds.
- Google Ads: Data discrepancies
- Google Ads: About conversion windows
- Google Ads: Use a transaction ID to minimize duplicate conversions
- Google Ads: How to adjust your conversions
- Google Ads: Guidelines for importing offline conversions
- Google Analytics: Change the reporting attribution model
- Salesforce: Revenue Insights Team metrics
- HubSpot: Analyze individual campaign performance
If reconciling these exports still requires hours of manual cleanup, That'sGonnaHelp can help map the IDs, definitions, and exception workflow before you invest in a larger attribution stack.

