Run a marketing audit by defining the decision you need to make, agreeing on what each metric means, collecting comparable evidence, diagnosing likely causes, and assigning validated actions to named owners. If qualified enquiries from paid search have fallen, for example, the first question is whether the decline is real and sustained. Only then should the team decide whether to change budget, campaigns, landing pages, or measurement.
A marketing audit is a systematic review of marketing activity and results against a business question. It is more structured than a dashboard check and broader than a campaign postmortem, but it does not have to cover every channel. A focused review of one funnel stage or performance problem is often more useful than an unfocused review of the whole operation.
This guide treats the audit as an evidence and decision process. It shows how to define metric grain, preserve source provenance, reconcile attribution reports, assess AI-search observations without overstating them, and move approved findings into an owned action record.
How to run a marketing audit
Start with a decision statement such as, “Should we reallocate paid-search budget after qualified leads declined?” Name the decision-maker and the result the audit must produce. If the team cannot state a question or decision, narrow the scope before requesting data.
- Define the decision, stakeholders, channels, funnel stages, markets, and comparison period.
- Agree on each decision-critical metric’s source, calculation, data grain, and limitations.
- Collect source-labelled evidence and reconcile differences in timing, definitions, filters, and attribution.
- Diagnose the change, test alternative explanations, and record confidence.
- Approve actions with owners, success measures, due dates, and review dates.
A reliable audit is repeatable. Another reviewer should be able to trace a finding to its source, understand the calculation, and see why the recommendation was approved.
Set the scope and define metrics before collecting data
Write a short scope brief before opening channel dashboards. Record the business question, period under review, markets and funnel stages included, stakeholders, decision-maker, and expected output. Include only channels that can inform the decision. A qualified-lead decline might require paid search, landing pages, analytics, and CRM lifecycle data, rather than a review of every social account.
Then create a metric contract for every important measure. Record the business question, source system, data grain, numerator and denominator where relevant, attribution model, date and time-zone basis, inclusion rules, owner, refresh timing, and known limitations. Grain means what one record represents, such as a session, event, contact, deal, or period aggregate. A rate or period total must not be added as though it were an event count.
{
"metric_name": "organic_conversion_rate",
"row_grain": "one reporting period, source, and channel definition",
"business_question": "Did organic-search visits produce fewer qualified enquiries?",
"source_system": "Google Analytics",
"numerator_definition": "qualified enquiry events in the reporting period",
"denominator_definition": "sessions attributed to organic search in the same period",
"reporting_period": "defined start and end dates in the property time zone",
"metric_definition_version": "organic_conversion_rate_v1",
"owner": "analytics lead",
"limitations": ["document event and attribution rules"]
}
Use the same currency, lifecycle definitions, filters, and comparison periods throughout the review. When a KPI has multiple valid definitions, give each a distinct name rather than blending them.
A Google Search Console click and a Google Analytics session answer different questions. Use Analytics sessions as the denominator for an on-site organic conversion rate, and retain Search Console clicks as a separate search-performance measure. Google explains that the sources calculate these measures differently, so they should not be expected to match: Google’s Search Console and Analytics guidance.
Before interpreting a trend, record whether the data is complete. Note consent changes, tracking releases, delayed CRM updates, missing dates, API limits, and any filters that exclude records. A metric contract makes these limitations visible before they become arguments about whose dashboard is correct.
Collect channel evidence without confusing source metrics
For each channel in scope, collect evidence against the same business objective: investment, reach or visits, qualified actions, conversion, and downstream outcomes where those outcomes are reliably measured. Keep the source, extraction date, period, filters, and metric definition with every result.
Organic search
Use Search Console for Google Search performance such as clicks, impressions, queries, pages, devices, and search appearance. Use Analytics for on-site sessions, engagement, and qualified actions. If using the Search Analytics API, save the property, date range, search type, dimensions, filters, and extraction timestamp. Google documents row and quota limits, top-row behaviour, and the possibility that days without data are omitted. Treat an API extract as a potentially incomplete reporting result, not a guaranteed event-level export.
Paid campaigns
Record the platform, campaign, spend, date range, conversion definition, landing page, audience, and named attribution report. A platform conversion is not automatically a qualified lead or revenue event. Reconcile the platform total with the system that owns the business outcome, and explain any differences in conversion windows, deduplication, or attribution model.
Email, social, content, and competitors
Keep delivery, reach, engagement, referrals, and qualified outcomes separate. An open or engagement rate does not establish lead quality or revenue. Content evidence can cover funnel coverage, conversion contribution, declining pages, and competitor gaps. Competitor research and customer-journey evidence should interpret internal performance, not replace first-party measurement. Record what was observed, when it was observed, and which decision it can inform.
Attribution reports
Store the report type, objective, model, filters, date property, period, and subscription conditions beside every attribution value. HubSpot documents contact-creation, deal-creation, and revenue attribution reports, with deal-creation and revenue attribution subject to plan conditions. HubSpot also notes that campaign attribution results can differ from campaign Performance-tab data. Compare like report types before treating a difference as a data fault: HubSpot attribution report guidance and campaign attribution report guidance.
For example, 100 contact-created attributions, 20 deal-created attributions, and revenue credited under first-touch and last-touch models are separate observations. They should appear as separately labelled records, not be combined into one campaign-result field.
AI-search observations
AI-search visibility can be included when it answers a defined question about brand presence, citations, competitor presence, or source distribution. HubSpot describes its AI Search Grader as a one-time diagnostic and its AEO product as providing monitoring capabilities. These are vendor-described product functions, not a universal industry measurement standard. The reviewed product pages do not document a public AEO export or API schema, so confirm available data and access before planning automation.
Reconcile findings and diagnose causes
Compare the current period with a genuinely comparable one. Use year-over-year comparisons when seasonality matters and a longer trend where available. Google recommends checking similar prior periods when investigating search traffic changes, but it does not prescribe one universal comparison formula. A practical audit may compare the current period with the same period last year and a trailing trend, provided the periods and definitions are documented.
Segment meaningful changes by page, campaign, device, market, audience, or funnel stage when the data supports it. Before calling a decline a performance problem, check tracking, consent behaviour, landing-page URLs, filters, canonical mapping, attribution configuration, and reporting delays. Also consider changes in demand, offer, competition, or sales follow-up.
If Search Console clicks fall but Analytics sessions do not move similarly, inspect definitions, landing-page mapping, tracking coverage, consent effects, and timing before attributing a business decline to search. If attribution totals differ, compare the objective, model, date property, filters, and data source first. A contact-creation count, deal-creation count, and revenue attribution value are different measures, not competing readings of one universal total.
Write each finding as an observation followed by interpretation and alternatives. Store the source reference, period, metric-contract version, observed change, candidate explanations, confidence, and next diagnostic check. Keep the status explicit: observed, interpreted, approved, implemented, or superseded.
AI can group similar observations or draft a tentative summary after the data has been collected. It should not decide that clicks equal sessions, infer cause from correlation, or write an unreviewed interpretation into a consequential CRM field. Use deterministic checks for required fields, approved values, date formats, URL normalization, and duplicate keys. Send ambiguous explanations to a human reviewer.
Turn evidence into a prioritized action plan
Classify recommendations as immediate corrections, experiments, strategic changes, or measurement repairs. Prioritize by expected business impact, evidence confidence, effort, and dependencies. A visible channel metric should not outrank a less visible issue that is more closely tied to qualified demand.
For each approved action, record the finding, evidence reference, proposed change, accountable owner, due date, expected outcome, success measure, review date, and approval status. Keep implementation status separate from outcome status: a task marked complete does not prove that the recommendation worked.
- A source reference, reporting period, and metric-definition version.
- The main alternative explanation checked, or a named next diagnostic step.
- A named owner, due date, success measure, and review date.
- An approval status that distinguishes an interpretation from an approved action.
- An implementation status that is separate from the later outcome assessment.
Implementation patterns for common audit decisions
| Trigger | AI job | Validation and action | Fallback |
|---|---|---|---|
| Organic traffic or qualified conversions change | Summarize segmented changes and suggest diagnostic questions after source data is collected. | Compare like periods, preserve Search Console and Analytics as separate measures, check tracking, then assign the next diagnostic to SEO or analytics. | Hold the recommendation at observed status until missing data or tracking issues are resolved. |
| Campaign or revenue attribution totals conflict | Draft a plain-language comparison from labelled results. No AI is needed for the calculation. | Record contact, deal, or revenue objective, model, filters, period, and plan access. Present reports side by side rather than merging them. | Ask marketing operations or revenue operations to confirm the report configuration. |
| A defined AI-search visibility question is added | Group prompts, classify tentative source types, or summarize positioning themes. | Store one run observation, one row per citation, and period aggregates at separate grains. Human-approve any consequential interpretation. | Keep the result in a controlled evidence store if no supported export or API is available. |
| An approved finding must enter a CRM | Draft field mappings or group similar approved findings. | Validate the object, properties, enumeration values, source reference, audit ID, run ID, permissions, and unique key before an upsert. | Leave the record in staging and assign the integration owner to resolve the failure. |
The table describes proposed operating patterns, not a claim that every step is a native vendor module. Confirm the available source export, API, permissions, and destination object before implementation.
If the team automates action logging, define the record grain and unique key first. One finding row might represent one approved recommendation for one audit and one finding identifier. Store it in a controlled evidence ledger or staging table with a database-enforced uniqueness constraint on that compound key. Use a transactional upsert where the system supports it. A lookup-then-create sequence is not safe when two workers can run concurrently.
When writing to HubSpot, its CRM object APIs support records identified by supported unique properties and batch upsert. That does not provide a ready-made AEO integration. Validate the target object, property values, permissions, provenance fields, and human approval before writing. If the proposed record grain cannot be represented by one supported CRM unique property, keep the compound key in an external staging table and store the resulting CRM record ID there.
Use AI-search evidence carefully
Define an AI-search observation before collecting it: prompt set, engine, model variant if exposed, run time, brand-presence rule, citation definition, competitor set, and reporting period. Record response-level observations separately from individual citations and period-level summaries. One response can contain multiple citations, and one audit can contain multiple prompts and runs.
A practical illustrative data design uses one event row per audit run, one prompt-observation row per audit, prompt, engine, model variant, and run, one citation row per run and citation position or stable citation identifier, and one aggregate row per audit, reporting period, engine, model variant, and metric-definition version. These are proposed implementation fields, not HubSpot-published schema fields. Do not use brand plus date as a deduplication key.
For a one-time snapshot, HubSpot’s AI Search Grader is described as a diagnostic. HubSpot’s AEO product page describes monitoring capabilities such as prompt and citation analysis. Product access and packaging may vary. Compare consistent prompts and configurations over time, record known changes, and treat results as observations. A citation is not, by itself, evidence of referral traffic, sentiment, leads, revenue, or ranking.
If a team later wants to write reviewed findings into a CRM, first confirm that the source offers an export or API with the required record grain. Where no supported source feed is available, keep the audit record in a controlled evidence store or maintain it manually. Do not build a promised direct connection around an undocumented schema.
Choose an audit cadence and assign ownership
Choose a cadence that matches decision speed and team capacity. A broader periodic review can revisit strategy and investment; focused channel checks can respond to meaningful shifts; campaign reviews can support fast-moving spend decisions. These are operating choices, not universal industry rules.
Revisit scope after a sustained performance change, major launch, market shift, rebrand, repositioning, or leadership transition. An initial review during a new leader’s first 90 days may be useful, but it is a recommendation rather than a verified norm. Name an accountable audit lead, data owners, reviewers, decision-maker, and action owners. Schedule the review and define its deliverable in advance.
If the team cannot maintain a recurring full audit, preserve the metric contract and evidence ledger so focused reviews remain comparable. An internal team can lead when it has time and source access; external review may help when independent challenge or specialist capability is needed.
For broader ownership of the evidence record and CRM operating model, see CRM systems consulting. The central discipline remains simple: preserve where a finding came from, what it means, who approved it, and how the team will judge the resulting action.
