A trustworthy marketing attribution report starts with a business decision and a clearly defined conversion. It then shows how much credit a chosen model assigns to recorded interactions. That can help you compare observed customer journeys, but it cannot prove that a channel caused a sale or generated incremental demand.
For example, a deal may be preceded by an organic search visit, an email click, a pricing-page visit and a sales meeting. A last-touch report and a linear report may assign credit differently. Both are views of the recorded journey, not evidence that one interaction made the deal happen.
This guide explains how to choose a report, check its data, preserve its grain and govern any resulting CRM or budget decision. It treats vendor-specific workflows as documented capabilities and technical data structures as illustrative internal designs.
What does a marketing attribution report answer?
Marketing attribution is a method for assigning credit to recorded interactions associated with a defined conversion. Conversion tracking records that an event happened, such as a contact being created or a deal closing. Attribution applies rules to interactions associated with that event. Incrementality testing uses an experiment, such as a holdout group, to estimate whether an activity produced outcomes that would not otherwise have occurred.
Attribution credit depends on which interactions were collected, how identities were matched, which time window was used and how the model distributes credit. Missing or misidentified interactions can change the result. Treat the report as an account of measured activity under stated rules, not as a causal verdict.
Before choosing a model or tool, answer four questions: What decision could this report change? What event counts as a conversion? Which entity converts, such as a contact, deal, order or key event? What observation window fits the buying cycle? If the decision depends on causal impact, plan an experiment alongside attribution.
Attribution distributes credit across observed interactions. A causal test is needed to estimate what would not have happened otherwise.
Choose the report and model for the decision
Model names describe allocation approaches, but availability and implementation differ by platform. Choose a model because it answers a defined question, not because its output looks more precise.
| Question | Model concept | What it shows | What it does not prove |
|---|---|---|---|
| Which recorded interaction came first? | First touch | The first eligible interaction in the measured path | That the interaction created demand |
| What was the final eligible interaction? | Last touch | The interaction nearest the conversion under the model rules | That the final interaction caused the conversion |
| How was credit distributed across the path? | Multi-touch, such as linear or time decay | How selected rules allocate credit among recorded interactions | That each interaction had an equal or causal effect |
| Did a channel generate additional outcomes? | Holdout or another suitable experiment | An estimate of incremental impact under the experiment design | That results automatically generalize to every audience or period |
Linear allocation gives interactions equal shares. Time decay gives more weight to recent interactions. These are model concepts, not a promise that every platform offers the same configuration or calculates them the same way.
For B2B reporting, treat contact creation, deal creation and deal revenue as separate conversions with separate denominators. A contact-create report and a closed-won revenue report answer different questions and should not be combined without an explicit method.
Current HubSpot attribution report documentation names Contact Create Attribution, Deal Create Attribution and Deal Revenue Attribution. HubSpot lists Deal Create Attribution and Deal Revenue Attribution as available only with Marketing Hub Enterprise. Current documentation lists First Touch, Last Touch, Linear, Time Decay and Empirical models. Do not assume older U-shaped, W-shaped, J-shaped or inverse-J-shaped options are current.
Current Google Analytics Attribution reports list Data-driven attribution, Paid and organic last click and Google paid channels last click. Google documents first-click, linear, time-decay and position-based models as no longer available in these reports. Confirm the report and account configuration before comparing outputs.
For teams reviewing HubSpot systems, confirm the report type, subscription and intended conversion before configuration begins. When comparing platforms, record the conversion event, model, lookback window, date range, filters and source system for each result. Differences can follow from identity coverage, event definitions, reporting periods and platform rules. Align settings where possible and explain what remains different rather than expecting matching totals.
Check data readiness before interpreting credit
Ask the data or marketing operations owner to verify the conversion definition, stable identifiers, timestamps and timezone, and the links between interactions and contacts, deals, orders or key events. Confirm that source, medium, campaign and UTM values follow a usable taxonomy.
Agree how to handle late-arriving interactions, cancellations, refunds, renewals, expansion revenue, multiple contacts associated with one deal and conversions with no identifiable source. Also decide whether revenue is measured at booking, close, collection or another business event.
Investigate direct and unattributed traffic instead of treating every row as a literal channel. Google identifies missing UTM parameters, redirects, URL shorteners, offline documents and ad blockers as possible causes of direct or none traffic. Cross-domain setup, consent-related collection behavior and inconsistent campaign naming can also leave source information incomplete. Google’s direct traffic guidance provides diagnostic context.
Choose a reporting window that fits the sales cycle and relevant seasonality. Check the configured lookback window, data availability and reporting time before drawing conclusions. Keep event records, conversion-level allocations and daily or monthly aggregates at separate grains. Combining them into one daily channel row makes results difficult to reproduce and trace.
Build a repeatable reporting workflow
Use the same sequence for recurring analysis. The marketing or revenue owner defines the decision and KPI. The data owner verifies source records. An analyst configures and documents the report. The decision owner reviews the finding before changing spend or process.
In HubSpot, the documented workflow is to select a contact, deal or revenue data source, start from a template or the custom report builder, choose a model, dimensions and filters, then save or export. Account permissions and subscription affect availability.
In Google Analytics, use the Attribution model comparison report to select key events, compare supported models, review channel or source dimensions and share, download or export the displayed report. Google documents these options in its Attribution model comparison guidance and Attribution report model overview.
Before sharing results, confirm the conversion definition and denominator, inspect direct, not set, unattributed or other rows, and note material filters and time settings. A report record might include report_type, model_name, model_version, lookback_window, date_range, filters, source_system and extraction_timestamp. Treat a budget change as a decision to test and review, not as an automatic consequence of a ranking.
Preserve the right data grain
For analysis or later CRM updates, keep conversion-level attribution separate from touchpoint-level observations. The following is a proposed internal design, not a HubSpot or Google schema. One conversion row represents one conversion under a particular model context. One touchpoint row represents one recorded interaction associated with that conversion under that model.
ATTRIBUTION_CONVERSION: one row per conversion and model context
conversion_id, conversion_type, conversion_timestamp
model_id, model_version, lookback_window
revenue_amount, currency, source_system, extraction_timestamp
run_id
ATTRIBUTION_TOUCHPOINT: one row per attributed interaction
conversion_id, touchpoint_id, touchpoint_timestamp
channel, source, medium, campaign, interaction_type
assigned_credit, assigned_revenue, source_record_id
model_id, model_version, run_id
The proposed uniqueness key for a touchpoint allocation is conversion_id + touchpoint_id + model_id + model_version + run_id when each extraction run must be retained separately. If the business treats repeated runs with the same model context as revisions rather than separate records, use a separate run or revision table and enforce uniqueness on conversion_id + touchpoint_id + model_id + model_version. Choose one policy and document it.
Preserve the source record and extraction time so an analyst can trace a result. Late events or changed model definitions may revise allocations, so do not overwrite history without retaining provenance.
When concurrent jobs can process the same record, enforce uniqueness in the database or use a transactional upsert. A lookup followed by create is not race-safe because two workers can both find no record and insert duplicates. This grain and ownership discipline is useful when aligning CRM systems with an analytical record, but the proposed schema does not imply that a particular vendor supports a specific export or write-back.
Use server-side collection carefully and keep AI bounded
Google Analytics Measurement Protocol can send server-to-server and offline events, but Google describes it as a supplement to automatic collection, not a universal replacement. A request uses HTTPS POST and requires a measurement ID, API secret and appropriate client or app instance identifier. Keep the secret on the server.
Validate the event name, parameters, identifier and consent state in your application before sending. The Measurement Protocol overview and request reference document supported behavior and payload constraints.
A 2xx response indicates that the request was received. It does not prove that the event was valid, processed or visible in reports. Avoid blind retries and check for duplicate collection when a browser tag or SDK already sends the same event.
Server-side delivery changes the collection path. It does not automatically solve consent, identity gaps, duplicate events or reportability. Use it for a defined missing business event only when the team can supply the appropriate identifier, validate the payload and monitor downstream reporting.
A proposed internal deduplication key is source_system + source_event_id + event_name. Maintain it in your own event store because it is an implementation choice, not a Google-prescribed universal key. If the same business event can arrive through a browser tag, SDK and server process, retain the channel of ingestion and resolve duplicates before aggregation.
AI may help normalize messy campaign descriptions into an approved taxonomy, but exact UTM mappings and allowed-value checks should remain deterministic. Preserve the original label and store a proposed classification separately. A low-confidence or ambiguous result should go to a marketing operations reviewer. Do not use AI to invent attribution credit or silently replace a platform’s documented model.
Protect privacy and govern CRM write-back
GDPR does not require explicit consent for every processing activity. Personal data processing needs an applicable legal basis, and consent is one option with specific conditions. If consent is the chosen basis, the European Data Protection Board says it must be freely given, informed, specific, unambiguous, withdrawable and demonstrable.
Attribution may also involve cookie or electronic-marketing rules, national requirements, profiling, international transfers and vendor processing terms. Review the EDPB guidance on lawful processing and obtain jurisdiction-specific legal advice where needed.
Document the purpose, data categories, geographic scope, legal basis, vendor roles, access, retention and deletion rules. Keep consent records where relevant and minimize the data collected. Server-side collection does not remove these responsibilities.
- Conversion ID maps to the intended contact, deal or order.
- Model name, version, lookback window and source record are retained.
- Processing status permits the intended use and write.
- Revenue value and currency pass validation.
- Duplicate state is checked using an enforced unique key or atomic upsert.
- The destination field is approved for derived data and will not overwrite a manually approved value.
Route any failed check to a named data, CRM or privacy owner through an exception queue. Do not silently write or discard it.
Turn attribution into a decision, not a verdict
Consider the hypothetical deal journey from the opening: organic search, an email click, a pricing-page visit and a sales meeting precede a closed-won deal. Last-touch may emphasize the final eligible interaction. Linear allocation may divide credit across the recorded path. Neither view establishes which touch caused the deal.
Use attribution alongside experiments, cost, customer quality, sales feedback and business outcomes. For each proposed action, record the observed signal, a competing explanation, the decision owner, the expected outcome, the follow-up metric and the review date.
Explain the report’s scope, model, time window and known data gaps in stakeholder summaries. When the question is whether a channel creates additional demand, design a suitable experiment rather than presenting allocated credit as causal evidence.
