Attribution: multi-touch, last-click, marketing attribution models
A comprehensive installation and audit reference for SEO attribution. Attribution is how an engagement proves its own value. A site can earn citations, rankings, and revenue, but if the measurement…
Measuring and Proving SEO Contribution in a Multi Channel Marketing Mix Under Privacy First Measurement
A comprehensive installation and audit reference for SEO attribution. Attribution is how an engagement proves its own value. A site can earn citations, rankings, and revenue, but if the measurement architecture credits the wrong channel the SEO budget is exposed at the next renewal conversation. This framework specifies UTM taxonomy, GA4 event architecture, multi touch attribution model selection, assisted conversion analysis, brand search attribution, AI Overview view through measurement, marketing mix modeling, and the privacy respecting measurement stack that holds in 2026. Dual purpose: installation manual and audit document.
Cross stack implementation note: the code samples in this framework are written in plain HTML for clarity. For React, Vue, Svelte, Next.js, Nuxt, SvelteKit, Astro, Hugo, 11ty, Remix, WordPress, Shopify, and Webflow equivalents of every pattern below, see framework-cross-stack-implementation.md. For pure client rendered SPAs (no SSR/SSG) see framework-react.md. For Tailwind specific concerns see framework-tailwind.md.
1. Document Purpose and How to Use This Document
1.1 What This Document Is
This is the canonical operational reference for attributing revenue, leads, and pipeline to SEO in a multi channel marketing mix. The default measurement state in 2026 systematically under credits SEO. Wolfgang Digital's e commerce benchmark showed 1.77 assisted conversions per direct conversion across 95 million sessions, meaning the typical conversion involves 2.77 touch points and last click records only one. Ascend2 2024 attribution survey (n=283 marketers) found only 28 percent rated their attribution as very successful and only 29 percent were extremely confident in accuracy. The combination of bad defaults and low confidence is the SEO budget defense problem.
This framework specifies the architecture that fixes it: the UTM taxonomy, the GA4 event configuration, the model selection rules, the brand and AI Overview measurement techniques, and the privacy compliant tracking stack that survives Consent Mode v2, iOS link tracking protection, and the cookie deprecation trajectory.
1.2 Three Operating Modes
Mode A, Install Mode. Build attribution infrastructure on a new or existing site. Follow Sections 2 through 14 in order.
Mode B, Audit Mode. Evaluate an existing attribution stack for completeness and credibility. Skip to Section 13.
Mode C, Hybrid Mode. Audit first, then install for failing items.
1.3 How Claude Code CLI Should Consume This Document
- Read Section 2, collect client variables.
- Run Section 13 audit to baseline current state.
- Apply Section 6 UTM taxonomy to every campaign URL.
- Install Section 7 GA4 event and key event configuration.
- Establish Section 8 assisted conversion reporting workflow.
- Apply Section 9 brand search separation discipline.
- Apply Section 10 AI Overview view through measurement.
- Layer Section 11 MMM at quarterly review cadence.
- Verify Section 12 privacy compliance.
- Generate the Section 14 report.
1.4 Conflict Resolution Rules
| Conflict | Rule |
|---|---|
| Client reports last click only, SEO looks weak | Switch primary view to data driven, surface assisted conversions. Last click is tactical only |
| UTM parameters on internal site links | Strip them. Internal UTMs overwrite real session source |
| Brand search treated as SEO win | Separate brand from non brand at query level. Brand is harvesting, not generation |
| GA4 lacks 400 monthly conversions for DDA | DDA silently falls back. Raise volume, switch to paid and organic, or BigQuery custom |
| Google Ads without Consent Mode v2 in EEA traffic | Critical. Implement or lose ad personalization and remarketing access |
| Attribution gives all credit to direct traffic | Direct is the unattributed bucket. Check referrer policy, ITP stripping, dark social, missing UTMs |
| Sales cycle exceeds 30 days, MTA only | MTA breaks at long cycles. Layer MMM quarterly |
| Client demands a single model that "tells the truth" | No single model is the truth. Three model comparison required |
1.5 Required Tools
- Google Analytics 4, see framework-ga4.md
- Google Tag Manager (client side at minimum, server side at scale)
- Google Search Console, see framework-gscanalysis.md
- Looker Studio for reporting visualization
- BigQuery for raw event export and custom modeling
- A Consent Management Platform (Cookiebot, Cookieyes, OneTrust, Termly, or self built)
- Optional MTA platform (Northbeam, Triple Whale, SegmentStream) for e commerce
- Optional MMM platform (Meta Robyn, Google Meridian, Recast, Cassandra) for budget allocation
1.6 Relationship to Neighboring Frameworks
framework-ga4.md covers GA4 install and event basics. framework-gscanalysis.md covers organic impression and click data. framework-reporting.md covers client deliverables. framework-cro.md covers what to do when attribution surfaces the conversion bottleneck. framework-aioverviews.md covers the upstream citation work this framework measures. Participates in all four pillars (SEO, AEO, AIO, GEO); only source identification differs.
2. Client Variables Intake
# ATTRIBUTION FRAMEWORK CLIENT VARIABLES
# --- Business and Site Identity ---
business_name: ""
primary_domain: ""
business_model: "" # ecommerce, lead_gen, publisher, saas, local_service, mixed
average_sales_cycle_days: 0 # 0 impulse to 365+ enterprise B2B
average_monthly_conversions: 0
attribution_dependency_severity: "" # critical_budget_defense, moderate, low
# --- Current Measurement State ---
ga4_property_id: ""
ga4_install_method: "" # gtag, gtm_clientside, gtm_serverside, none
current_attribution_model_in_reports: "" # last_click, data_driven, mixed, unknown
gsc_property_verified: false
gsc_ga4_linked: false
bigquery_export_enabled: false
# --- UTM Hygiene ---
utm_taxonomy_file_path: ""
utm_used_on_internal_links: false # if true, critical fix
utm_lowercase_hyphen_standard: false
utm_audit_cadence: "" # weekly, monthly, quarterly, never
# --- Event Architecture ---
custom_events_configured: false
key_events_marked: []
ecommerce_events_complete: false # view_item, add_to_cart, begin_checkout, purchase
form_tracked: false
phone_click_tracked: false
offline_conversion_imported: false # closed loop for lead gen
# --- Channel Mix Context ---
active_paid_channels: [] # google_ads, meta_ads, linkedin_ads, tiktok_ads
active_organic_surfaces: [] # google_organic, bing_organic, ai_overviews, ai_mode, chatgpt, perplexity
active_owned_channels: [] # email, sms, push, direct
estimated_organic_share_of_traffic: 0
estimated_organic_share_of_revenue: 0
# --- Brand vs Non Brand ---
brand_term_list: []
brand_vs_nonbrand_split_reported: false
brand_search_treated_as_seo_win: false # if true, measurement honesty fix
# --- AI Overview Citation Baseline ---
priority_queries_cited_in_aio: []
aio_view_through_measurement_active: false
ai_engine_referral_traffic_isolated: false
# --- Privacy ---
eea_traffic_share_percent: 0
consent_mode_v2_implemented: false
consent_management_platform: ""
google_signals_status: "" # enabled, disabled, evaluated_and_disabled
server_side_gtm_deployed: false
# --- MMM Posture ---
mmm_running: false
mmm_platform: "" # none, robyn, meridian, recast, commercial
incrementality_test_cadence: "" # never, annual, quarterly, ongoing
# --- Reporting Cadence ---
attribution_report_cadence: "" # monthly, quarterly, ad_hoc
three_model_comparison_in_reports: false
budget_decisions_use_attribution_data: false
Attribution work cannot start until ga4_property_id is set, gsc_property_verified is true, and utm_taxonomy_file_path points to a written taxonomy. Sites failing those dependencies route back to framework-ga4.md and framework-gscanalysis.md first.
3. What SEO Attribution Is
3.1 Definition
SEO attribution is the assignment of credit for a conversion to organic search touch points along the user's path. The methodology choice is consequential: the same path produces wildly different SEO credit depending on the model. A buyer who first arrived via an organic blog post, returned via email, browsed via direct, then converted from a brand search ad credits 100 percent to brand search under last click, 100 percent to organic under first click, 25 percent each under linear, and a smoothly weighted distribution under data driven. Same path, four different stories.
3.2 Why SEO Specifically Suffers
Organic search has three structural attribution disadvantages that compound under last click. First, organic typically appears upstream in the path. Buyers research long before they buy. Wolfgang Digital benchmarks show organic at the top of the conversion path with paid search, email, or direct closing. Second, brand search is conflated with non brand by GA4 default. A buyer searching the brand name after a year of consuming organic content credits the brand session, not the year of content. Third, AI Overview citations and zero click results deliver value the analytics layer cannot see. Velacore 2026 found U.S. organic traffic fell 2.5 percent year over year as of January 2026 alongside a 38 percent decline in publisher referral traffic from Google.
3.3 The Four Pillars Attribution Footprint
The four pillars architecture (SEO classic ranking, AEO answer engine optimization, AIO AI Overview optimization, GEO broader generative engine citation) each generate distinct attribution signatures. SEO classic organic produces measurable session traffic. AEO featured snippet and voice produces measurable sessions when the user clicks, zero click otherwise. AIO produces both measurable click traffic (around 35 percent click lift versus non cited top 10 per Ahrefs February 2026, n=863,000 keywords) and unmeasurable zero click brand exposure (cited visitor converts at approximately 23 times the rate of standard search visitors). GEO produces measurable referral when the user clicks a citation, zero click otherwise. Three of the four pillars produce significant zero click exposure that conventional attribution cannot measure directly. Section 10 treats this as the central measurement problem of the AI era.
3.4 What Attribution Is Not
Attribution is not incrementality. Attribution credits touch points in the converting path. Incrementality measures whether removing the channel would have changed the outcome. A channel can show heavy attribution credit while contributing zero incremental conversions. Brand search is the most common case: Haus 2024 found brand search paid bidding incrementality at 0 to 1 percent in geo holdout tests even when last click credited brand search with 30 to 40 percent of conversions. Section 11 covers the incrementality layer.
4. The Attribution Problem: Why Last Click Under Credits SEO
4.1 The Default Reporting State
GA4 reports default to data driven attribution since the September 2023 model removal, but most agency and client reporting still defaults to last click. Three reasons: last click matches executive intuition, it survives the UA migration where it was the legacy default and switching breaks year over year comparability, and ad platforms (Google Ads, Meta) still report platform performance with their own last click logic in the UI. The numbers disagree with GA4, the channel that paid for the click claims the win, SEO ends up unattributed.
4.2 The Position Bias in Last Click
Last click over credits the converting channel and under credits every channel that influenced. Per Wolfgang Digital's annual e commerce benchmark: average path length 2.77 touch points, average 1.77 assisted conversions per direct, organic search appears in the converting path on the majority of conversions but rarely last when an ad campaign is also running. The 1.77 assisting touches receive 0 credit. The closing touch receives 100 percent.
4.3 The Brand vs Non Brand Confound
When organic does convert last, it disproportionately converts on brand queries from buyers who already know the brand and need a lookup. Brand search organic absorbs credit for the relationship upstream work built. Brand search separation (Section 9) fixes this.
4.4 The AI Era Zero Click Confound
AI Overviews, AI Mode, ChatGPT search, Perplexity, and Meta AI show site content without sending a click. Velacore 2026 found 60 percent of Google searches end without a click, rising to 80 to 83 percent on queries with an AI Overview present. A buyer who reads an AI Overview, recalls the brand, returns via direct or brand search weeks later, and converts produces a direct or brand attributed conversion in GA4. The cited content that started the relationship gets no credit. Section 10 treats this dedicated.
4.5 The Honest Diagnostic
Three diagnostics surface under crediting. Compare last click to data driven for organic across 90 days; if DDA attributes 30 to 50 percent more conversions to organic, last click is under crediting. Pull conversion paths and count organic appearances in any position; if appearance rate exceeds direct conversion rate by 1.5x, organic is doing assisting work single touch misses. Run brand vs non brand split; if brand queries are bundled with organic wins, the report conflates demand harvesting with generation. A site failing any of these three has an attribution honesty problem before it has an SEO problem.
5. Attribution Model Comparison
5.1 The Seven Models
| Model | What it does | Where it lives in 2026 |
|---|---|---|
| Last Click | 100 percent credit to the final touch | GA4 reporting, Google Ads, most ad platforms |
| First Click | 100 percent credit to the initial touch | Removed from GA4 reports Sep 2023, BigQuery custom only |
| Linear | Equal credit to every touch | Removed from GA4 reports Sep 2023, BigQuery only |
| Time Decay | Exponentially weighted toward recent, 7 day half life | Removed from GA4 reports Sep 2023, BigQuery only |
| Position Based | 40 percent first, 40 percent last, 20 percent middle | Removed from GA4 reports Sep 2023, BigQuery only |
| Data Driven | Shapley value across all touches | GA4 default since Sep 2023, requires 400+ monthly conversions per type |
| Custom (Markov, Survival, Bayesian) | User defined algorithmic | BigQuery, MTA tools, agency built |
Google removed first click, linear, time decay, and position based from GA4 and Google Ads reporting in September 2023 per Search Engine Land coverage, citing "increasingly low adoption rates." Properties without enough conversion volume silently fall back to paid and organic last click without notification (the gotcha in Section 7.6). The historical models remain conceptually useful because BigQuery exports support custom modeling against raw event data.
5.2 Last Click
Simple, comparable across platforms, matches executive intuition. Systematically under credits assisting and upstream touches. Inflates closing channels (brand search, direct, retargeting). Suppresses awareness channels (organic content, social organic, video, email nurture). Use for short sales cycles under 7 days, platform UI parity, historical comparability. Never the sole view for SEO competing for budget against paid.
5.3 First Click
Surfaces what introduced the buyer. Ignores everything between first touch and conversion. Encourages over investment in top of funnel volume without quality. Use as counterpoint to last click in three model comparison.
5.4 Linear
Neutral, easy to explain. Treats a fleeting impression and a 30 minute pricing page session as equally valuable. Use as sanity check baseline.
5.5 Time Decay
Default half life 7 days. Reflects intuition that recent influence matters more. Penalizes long sales cycle behavior under default settings. Use for e commerce under 14 days. Tune the half life to match actual cycle length.
5.6 Position Based (U/W/J Shaped)
U is 40-20-40, W credits first plus lead creation plus last at 30 percent each, J weights last more heavily. The split is asserted not derived. Use when marketing teams consciously divide demand generation from demand harvesting budgets.
5.7 Data Driven Attribution (DDA)
GA4's default since September 2023. Shapley value calculation across observed conversion paths. The algorithm tests every combination of touch points present and absent and assigns each touch a marginal contribution score per Adswerve 2024 documentation. Adapts to actual path patterns. Properly weights organic and assisting channels last click suppresses.
Black box: algorithm proprietary beyond the Shapley framing. Requires 400 plus monthly conversions per type and roughly 10,000 paths with 2 plus interactions. Below threshold silently falls back to paid and organic last click without notification. Cannot run on offline conversions without imports. Cannot model view through impressions. Use as primary GA4 reporting view at sufficient volume. Never the only number reported.
5.8 Custom Models (Markov, Survival, Bayesian)
User defined algorithmic attribution on BigQuery raw events or a dedicated MTA platform. Markov chain treats path as a state machine, calculates removal effect per channel (closest measurement to incrementality from path data alone). Survival analysis models time to conversion and hazard rate contribution. Bayesian updates channel credit estimates as new data arrives. Transparent, customizable, can incorporate offline data. Requires data engineering investment. Use for properties with significant budget conversation dependence on attribution, high volume e commerce with dedicated analytics, or long sales cycle lead gen with CRM data.
5.9 The Three Model Comparison Reporting Standard
Never report a single attribution model in isolation. Report three: last click (platform UI parity and historical comparability), data driven (GA4 default and probabilistic credit distribution), assisted conversions (count, not a model, surface area of channel influence regardless of model). For long sales cycle businesses add a fourth: custom Markov via BigQuery for removal effect quantification. The presentation surfaces both the surface signal and the underlying truth, letting the budget conversation happen against the full picture rather than a single number that flatters one channel.
6. UTM Parameter Strategy
6.1 The Five Parameters
UTM parameters are query string tags appended to URLs to identify the campaign source. Five canonical parameters per the Google specification:
| Parameter | Required | Purpose | Example values |
|---|---|---|---|
utm_source |
Yes | Origin of the click | google, linkedin, newsletter-may, partner-arcw |
utm_medium |
Yes | Marketing medium | cpc, email, social, referral, display, affiliate |
utm_campaign |
Yes | Campaign identifier | q2-2026-launch, summer-sale-2026, webinar-may-tax |
utm_content |
No | Ad variation or content slot | headline-a, cta-orange-button, footer-banner |
utm_term |
No | Paid keyword (paid search) | quarterly-estimated-taxes, enrolled-agent-bentonville |
The first three are mandatory for any tagged URL. Missing any one means GA4 cannot construct a clean session source attribution. The last two are optional and applied where they add analytical value.
6.2 The Two Forbidden Use Cases
Never tag internal site links. Internal UTMs overwrite the real session source. A user who arrived from google organic, then clicked a UTM tagged internal banner, gets reassigned to whatever the internal UTM said. Original organic credit destroyed. Most common attribution sabotage pattern in 2026 audits per Funnel.io 2024 governance research.
Never tag organic search destinations. Google strips UTMs from snippets and a UTM in canonical or hreflang creates duplicate content issues.
6.3 The Taxonomy
Every engagement maintains a written taxonomy at /var/www/sites/[domain]/docs/utm-taxonomy.md.
Conventions: all lowercase, hyphen separator (never underscore or space), YYYY-MM dates in campaign names. Forbidden: space, underscore, uppercase, special characters.
Approved utm_source: paid (google-ads, meta-ads, linkedin-ads, tiktok-ads, youtube-ads), email (newsletter, transactional, drip-welcome, drip-nurture), social organic (linkedin-organic, facebook-organic, twitter-organic, instagram-organic), partner (partner-[partnername]), offline (qr-business-card, qr-billboard-[location], print-flyer-[campaign]).
Approved utm_medium: cpc, email, social (organic), social-paid, referral, display, affiliate, podcast, qr, print.
Campaign naming: [year]-[quarter]-[type]-[descriptor], e.g. 2026-q2-launch-widget-v2, 2026-q2-promo-summer-sale, 2026-q3-event-webinar-may.
utm_content: ad variation (headline-a/b), placement (footer-banner, sidebar-cta), audience segment (lookalike-1pc, retargeting-30d). utm_term: paid search keyword, auto populated by ValueTrack {keyword}. Forbidden: internal links, organic destinations, canonical/hreflang/sitemap URLs.
6.4 The Governance Process
A taxonomy nobody enforces is decorative. The governance loop: single intake form (URL builder with approved values, free text rejected), pre flight check (tagged URL loads, destination does not strip parameters via redirect, session appears in GA4 realtime), monthly audit (export 30 day source/medium/campaign values, flag anomalies: typos like faceboook, case variants like Facebook/FACEBOOK, unauthorized values like FB, legacy values), quarterly review (retire dead values, add values for new channels). Trackingplan, Hightouch and similar tools automate detection at scale.
6.5 The Brand Anchor and the Partner Anchor
Brand anchor links for earned media, podcasts, and partner content without ad tags: utm_source=[publication-slug]&utm_medium=referral&utm_campaign=earned-2026-q2-[topic]. Partner referral links for formal partnerships and affiliates: utm_source=partner-[partnername]&utm_medium=referral&utm_campaign=partnership-2026-[type]. Both let partner and earned media defend their own budgets with traceable credit.
6.6 UTM Stripping by iOS Link Tracking Protection
Apple's Link Tracking Protection expanded in iOS 18 late 2024 (enforced in Safari, Mail, Messages from iOS 17 onward) automatically removes tracking parameters in Private Browsing and Mail/Messages links. iOS 26 (June 2025) expanded stripping to all Safari sessions by default. Parameters stripped include gclid, fbclid, msclkid, ttclid. UTM parameters are not explicitly stripped as of May 2026, but the trajectory puts them at risk. Mitigation: do not rely solely on UTMs for high value attribution. Layer first party tracking (server side GTM, custom redirect domains, branded short links). Capture session data at landing time in first party cookies so attribution survives if the inbound parameter is stripped.
7. GA4 Event Tracking Architecture for SEO
7.1 The Event Model Recap
GA4 is event based with up to 25 parameters per event. Four buckets: automatically collected (page_view, session_start, first_visit, user_engagement), enhanced measurement (scroll, click outbound, view_search_results, video and file download events), recommended events (Google defined: login, sign_up, share, search, select_content, e commerce stack view_item, add_to_cart, begin_checkout, purchase), and custom events (snake_case, business specific). This framework adds an SEO specific custom event stack on top of these defaults.
7.2 The SEO Custom Event Stack
| Event | Trigger | Key parameters | Why |
|---|---|---|---|
organic_landing |
Session start, medium=organic | landing_page_path, landing_page_template, query_intent, primary_topic_cluster | Surfaces which templates and clusters drive organic entry |
organic_engaged_session |
Organic landing crosses 10s session, 90 percent scroll, or 1 secondary page view | landing_page_path, engagement_signal | Distinguishes quality organic from bounce traffic |
brand_search_session |
Organic session with brand term in landing parameter or referrer | brand_term_matched, landing_page_path | Separates demand harvesting from demand generation |
ai_engine_referral |
Session start with referrer matching chat.openai.com, claude.ai, perplexity.ai, copilot.microsoft.com, you.com, gemini.google.com | ai_engine, landing_page_path | Isolates measurable GEO referral from other organic |
content_complete_read |
95 percent scroll on article template | article_id, article_category, article_author, time_on_article_seconds | Differentiates skimmers from real content consumers |
resource_download |
Lead magnet, whitepaper, template, or gated asset download | resource_id, resource_category, resource_format | Captures lead nurture entry signal |
contact_initiated |
Phone tap, email click, contact form start, calendar booking start | contact_method, page_path, page_template | Captures contact intent across initiation methods |
serp_feature_attribution_tag |
Landing URL has gsc_feature parameter (set via GSC parameterized destinations) | serp_feature, query | Attributes traffic to specific SERP features when GSC destinations are tagged |
Events are configured in GTM. Triggers depend on stack (DataLayer push in Next.js, scroll and timer triggers for engagement signals). Stack specific patterns in framework-cross-stack-implementation.md.
7.3 Key Events vs Conversions Post March 2024
GA4 renamed conversions to key events in March 2024 per Google Analytics Help documentation. Key events are events marked as valuable to business outcomes (the GA4 reporting metric). Conversions is now reserved for Google Ads attribution: events imported into Google Ads for bid optimization. The UI now says "Mark as key event" where it used to say "Mark as conversion." GA4 key event count generally matches Google Ads conversion count for events imported to both. Toggle at Admin > Events > Mark as key event. Common key events for SEO:
| Business model | Recommended key events |
|---|---|
| E commerce | purchase, begin_checkout, add_to_cart |
| Lead gen | generate_lead, demo_request, contact_initiated, resource_download |
| Publisher | newsletter_signup, content_complete_read, share |
| Local service | phone_click, directions_request, contact_form_submit, appointment_booking_complete |
Marking too many events dilutes the signal. Keep the key event list under 10 per property. Soft engagement stays as events but unmarked.
7.4 Custom Dimensions for Organic Segmentation
| Dimension | Scope | Values | When set | Why |
|---|---|---|---|---|
user_brand_familiarity |
User | unknown, branded_first, nonbranded_first | First session | Differentiates brand aware from cold buyers across the lifecycle |
landing_query_intent |
Session | informational, commercial, transactional, navigational | Organic landing event | Surfaces conversion rate by intent class |
ai_engine_source |
Session | openai, anthropic, perplexity, copilot, you, gemini, none | Session start from referrer | Isolates GEO traffic in reports |
article_topic_cluster |
Event | cluster names | Article page view | Surfaces which clusters drive engagement and conversion |
page_template |
Event | home, blog, product, service, location, author, legal | Page view | Surfaces which templates drive organic and which under perform |
Configured at Admin > Custom definitions > Custom dimensions. Scope (event, session, user, item) determines where it can be applied. 50 dimensions free, 125 on GA4 360.
7.5 The DataLayer Specification for SEO
The DataLayer is the JavaScript object GTM reads to populate event parameters. The SEO instrumented DataLayer at page load:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'page_loaded',
'page_template': 'blog',
'page_topic_cluster': 'quarterly-tax-2026',
'page_author': 'amanda-emerdinger',
'page_publish_date': '2026-04-15',
'page_modified_date': '2026-05-14',
'page_word_count': 2347,
'page_is_ymyl': true,
'session_referrer': document.referrer,
'session_landing_path': window.location.pathname
});
GTM tags read these values to populate custom dimensions on every subsequent event in the session. In Next.js the push happens in _app.tsx on route change, in WordPress in wp_head inline script, in Astro/Hugo in the layout template head. Stack specific patterns in framework-cross-stack-implementation.md.
7.6 The Silent Fallback Trap
GA4's data driven attribution requires 400 plus conversions per type in the trailing 30 days plus roughly 10,000 paths with 2 plus interactions per Adswerve 2024 documentation. Properties below the threshold silently fall back to paid and organic last click without notification.
Detect at Admin > Attribution settings. If the model says "Paid and organic channels" or "Last click" rather than "Data driven," the fallback is active. Volume diagnostic: Admin > Events, sort by count, check key event 30 day totals.
Three responses: raise volume by marking additional engagement events as key events, switch primary view to paid and organic last click explicitly, or build custom Markov attribution in BigQuery when volume is genuinely low (B2B with 50 conversions per month). The fallback trap is the most common attribution silent failure in 2026 audits.
8. Assisted Conversion Measurement
8.1 What Assisted Conversions Are
An assisted conversion is a conversion where the channel appeared in the converting path but was not the final touch. The assist count is a count, not a model. A channel with 100 direct conversions and 400 assists touched 500 converting paths. The assist to direct ratio is the leading indicator of whether the channel is upstream or downstream.
Organic search assist to direct ratios across the reference set:
| Business model | Assist to direct ratio for organic |
|---|---|
| E commerce, brand mature | 1.5 to 2.0 |
| E commerce, brand emerging | 2.5 to 4.0 |
| B2B SaaS | 3.0 to 6.0 |
| B2B Service | 4.0 to 8.0 |
| Lead gen, financial or legal | 3.0 to 5.0 |
| Local service, single location | 1.2 to 2.0 |
A B2B SaaS engagement reporting organic with 50 direct conversions and 250 assists is doing five times more assisting than closing. Last click reports 50. Full influence count is 300. That is the SEO budget defense numerator.
8.2 GA4 Conversion Paths Report
Access at Advertising > Attribution > Conversion paths. Combines Universal Analytics' Top Conversion Paths and Assisted Conversions into one view. Shows source/medium per path, early/mid/late touch position credit under the selected model, and conversion volume per path pattern.
Read pattern for SEO defense: set model to data driven, filter to 90 days, sum organic search credit in early touchpoints column (demand generation contribution) and late touchpoints column (demand harvesting). A healthy engagement shows organic across all three columns with largest credit in early and mid. A weak engagement shows organic only in late: SEO is harvesting demand the business already has.
8.3 GA4 Path Exploration
Explore > Path exploration shows the literal sequence of events leading to a conversion. Configure: ending point at the key event, backward step 1 to previous page, step backwards as far as data supports. Common patterns: long paths (7 plus touches over weeks, organic content multiple times in the middle), short paths (2 to 3 touches, organic at start, paid at close), lookback paths (a single organic touch 60 days before conversion via direct or brand search). The lookback pattern is the AI Overview shaped pattern from Section 10: deep distant organic influence conventional reporting buries.
8.4 BigQuery Custom Attribution
When standard reports lack the needed model, BigQuery export carries raw event data for custom modeling. Free for all GA4 properties since 2024. Custom Markov chain pattern: aggregate touch sequences per converting user from traffic_source.source and traffic_source.medium event params, apply Markov transition matrix and removal effect calculation in Python or R following Anderl et al. 2014 marketing methodology. Output: removal effects per channel, the closest path data measurement to incrementality.
8.5 The Assisted Conversion Reporting Template
Every monthly report includes a three column view:
| Channel | Direct (last click) | Assisted | Touched paths |
|---|---|---|---|
| Organic non brand | 47 | 312 | 359 |
| Organic brand | 89 | 124 | 213 |
| Direct | 156 | 78 | 234 |
| Paid search non brand | 23 | 89 | 112 |
| Paid search brand | 67 | 102 | 169 |
| 41 | 234 | 275 | |
| Paid social | 12 | 178 | 190 |
| Organic social | 6 | 56 | 62 |
Organic non brand here has 47 direct and 312 assists. Total influence is 359, more than four times direct. A report showing only the direct column under reports SEO by 87 percent. The assist column is the SEO budget defense number. Always include it.
8.6 The Lookback Window
Default lookback is 30 days for engagement and 90 days for paid acquisition. Configure at Admin > Attribution settings. For long sales cycles (B2B SaaS 90 days, financial 60 days), move engagement lookback to 90 days. For short cycles, default is generous enough. Setting is global per property and forward looking only. Historical conversions do not retroactively re attribute.
9. Brand Search Attribution
9.1 The Brand Search Confound
Brand search is the highest converting cluster in most properties. A user searching the brand name has already decided. Brand sessions convert at 5 to 20 times the rate of non brand sessions in typical engagements. Default GA4 reporting buckets brand and non brand together as "Organic Search," inflating combined metrics with brand conversion rates that reflect demand harvesting rather than demand generation. Brand search separation is the single most important SEO measurement hygiene step.
9.2 The Brand Term List
The canonical brand term list at /var/www/sites/[domain]/docs/brand-terms.txt includes exact brand name, common misspellings, founder name when the founder is the brand, domain variants, and branded acronyms. Updated quarterly. The match logic is lowercased substring match.
9.3 GSC Regex Filter
In GSC, brand vs non brand separation happens via query regex at Performance > Queries > Filter > Query > Custom (regex):
Brand inclusion: emerald|emrald|emralda|amanda emerdinger|tdg
Non brand: ^(?!.*(emerald|emrald|emralda|amanda emerdinger|tdg)).*$
The brand and non brand totals are the upstream organic clicks split. Compare to GA4 organic sessions to validate. Drift indicates UTM contamination or referrer policy issues.
9.4 GA4 Brand Dimension
GA4 separation requires the brand_search_session custom event from Section 7.2 plus a session scoped custom dimension. On session_start, check landing page URL parameters and document.referrer for brand term substring match. If matched, fire the event and map to dimension is_brand_search. Every organic session is then labeled brand or non brand.
9.5 The Reporting Pattern
| Cluster | Sessions | Direct conv | Assisted conv | Conv rate |
|---|---|---|---|---|
| Organic non brand | 8,432 | 47 | 312 | 0.56 percent |
| Organic brand | 1,209 | 89 | 124 | 7.36 percent |
| Combined organic | 9,641 | 136 | 436 | 1.41 percent |
The combined rate of 1.41 percent masks two very different performances. Non brand at 0.56 percent reflects cold acquisition. Brand at 7.36 percent reflects demand harvesting on warm relationships. Separating them surfaces both honestly.
9.6 Brand Search vs Incrementality
Brand search is where attribution most diverges from incrementality. Haus 2024 case studies found brand search paid bidding incrementality at 0 to 1 percent in geo holdout tests. A buyer searching the brand name would have arrived through some channel anyway. The credit is real, the incrementality is small. For SEO, brand search organic credit lives upstream in the content and PR that built the recall, not in the session that harvested it.
9.7 The Brand Recall Lag
Brand search volume is a lagging indicator of upstream brand building. Content published in Q1 builds recall that surfaces as brand search volume in Q2 and Q3 (60 to 180 day lag for SEO content, longer for digital PR). GSC brand query volume month over month on a 90 day rolling window is the leading SEO defense metric.
10. AI Overview Citation Attribution
10.1 The Zero Click Surface
Citation in Google AI Overviews, AI Mode, ChatGPT, Claude, Perplexity, Bing Copilot, and Meta AI delivers brand exposure without a click. Three numbers per Velacore and Discovered Labs 2026 research:
- 60 percent of Google searches end without a click as of January 2026.
- 80 to 83 percent of searches with an AI Overview present end without a click.
- 38 percent decline in publisher referral traffic from Google year over year as of January 2026.
The implication: the most successful AI citation work generates the least measurable click traffic. Conventional attribution penalizes the best work.
10.2 The View Through Attribution Model
View through attribution credits an impression that did not produce a direct click but appeared in the converting path indirectly. The AIO view through chain: impression (brand cited in AIO the buyer reads), recall (awareness increases, no click), latent search (weeks later via brand search or direct), conversion. The converting session looks like brand search or direct in GA4. The AIO citation that started the chain earned the impression but no traceable credit.
10.3 Measurement Approaches
Three approaches in order of sophistication:
Approach 1, GSC AIO impression baseline: GSC includes AIO impressions in standard web search type since 2024. They are not separated as a metric but appear when the site is cited in AIO regardless of click. Baseline: priority query impression count over 28 days. Track delta as a leading indicator.
Approach 2, brand search lift lag: when AIO citation increases on priority queries, brand search volume typically lifts 60 to 180 days later. Plot priority query AIO impressions against priority brand term search volume on a six month lagged regression. Correlation coefficient above 0.4 on a 12 month window indicates the AIO work is feeding the brand recall pipeline.
Approach 3, onsite brand affinity survey: a one question micro survey on the thank you page asks "Before today, how did you first hear about us?" with options for Google search, AI assistant (ChatGPT, Claude, Gemini, Perplexity, Copilot), friend or colleague, social media, podcast or video, email, other. A 2025 Discovered Labs reference engagement found 23 percent of converting buyers cited an AI assistant as their first source of awareness while GA4 attributed 4 percent to AI engine referral. The 19 percent gap is the unmeasured AIO view through contribution.
10.4 Isolating AI Engine Referral Traffic
When users click through from an AI engine citation, the referrer reveals the source. The custom event from Section 7.2 fires on session start when the referrer matches chat.openai.com, chatgpt.com, claude.ai, perplexity.ai, copilot.microsoft.com, you.com, or gemini.google.com. Maps to the ai_engine_source custom dimension. Current engagements show AI engine referral traffic at 0.5 to 5 percent of total organic, growing 30 to 80 percent quarter over quarter on sites actively optimizing for citation.
Google AIO citation clicks arrive as standard google organic traffic. Not separable from other Google organic clicks in GA4. Only signals are the GSC AIO impression metric and the cited visitor conversion rate uplift below.
10.5 Cited Visitor Conversion Rate Uplift
When an AIO cited page is identifiable by landing page path correlation with GSC AIO impression growth, conversion rate on that landing page can be compared to non cited pages. The Ahrefs February 2026 study (n=863,000 keywords) found cited visitors convert at approximately 23 times the rate of standard search visitors. The measurement pattern: identify the priority pages cited via GSC and manual sampling, pull GA4 conversion rate segmented to organic traffic, compare to equivalent non cited pages. Not a perfect measurement (selection bias) but directionally robust for budget defense.
10.6 The Pipeline Attribution Model
For B2B SaaS and lead gen with long sales cycles, AIO citation enters the pipeline attribution model rather than the immediate conversion model. The buyer reads an AIO citation, the organization engages later through any channel, the CRM tracks the deal through the sales cycle, closed loop attribution credits the deal back to original source touches. Requires CRM cooperation through GA4 client ID capture or UTM source persistence (HubSpot, Salesforce, and modern CRMs support this). Rare in 2026 but the direction the industry is moving.
11. Marketing Mix Modeling Basics
11.1 When MMM Beats MTA
Marketing mix modeling (MMM) operates on aggregate channel level data, not user level path data. It regresses weekly or monthly revenue against channel spend (or activity for organic), seasonal factors, macroeconomic factors. Output: a channel response curve.
MMM beats MTA in three scenarios per Improvado 2026 and Muttdata 2025 benchmarks (eMarketer July 2024 survey of US marketers, n=283, found 53.5 percent using MMM and 30.1 percent calling it the best approach):
- Sales cycle exceeds 30 days. MTA struggles to maintain identity across long cycles.
- Offline spend exceeds 30 percent of budget. MTA cannot see offline.
- Identity resolution falls below 60 percent. iOS 17 plus stripping and cookie deprecation have driven identity down.
In a privacy first 2026, MMM is increasingly the primary measurement layer with MTA as a tactical optimization layer underneath.
11.2 Simple Regression vs Full MMM
Simple regression MMM: multivariate regression in Python, R, or Sheets running on weekly observations. Inputs: weekly organic sessions, weekly paid spend per channel, email sends, seasonal dummies, holiday flags. Output: revenue coefficient per channel. Catches first order effects, misses adstock, saturation curves, and channel interactions. Good enough for quarterly budget conversations.
Full MMM with Bayesian priors: implemented in Meta Robyn (open source R), Google Meridian (open source Python, released 2024), Recast (commercial), Cassandra (commercial), or custom Bayesian Stan. Adds adstock, saturation, channel cross effects. Output: response curves, optimal spend allocation, marginal ROAS. Right tool for 12 plus months of clean data, 6 plus channels, and a budget decision that justifies the investment ($30K plus commercial, $10K plus open source DIY).
11.3 MMM Inputs for SEO
The aggregate input for SEO has three options ordered by precision: weekly organic sessions (simplest), weekly organic non brand sessions (precise, removes harvesting), weekly organic non brand engaged sessions (most quality controlled, requires volume above 500 per week). The MMM coefficient on the SEO input is the marginal revenue per organic session at equilibrium spend. A coefficient of $4.20 means each marginal organic non brand engaged session is worth $4.20 in revenue at the current state of the mix.
11.4 Incrementality Testing as MMM Validation
MMM coefficients are point estimates without ground truth. Incrementality testing produces ground truth.
A geo holdout test for organic: pause SEO investment in test markets while maintaining control markets, measure the revenue delta. Difficult for site wide SEO (rankings do not pause), possible at the campaign level by pausing content clusters, digital PR campaigns, or specific landing page sets in test markets. Easier adjacents: pause brand bidding in some markets (measures cannibalization, Haus 2024 found near zero incrementality), pause content campaigns (measures whether content is incremental or harvesting), pause digital PR (measures long term effect on brand search). Results feed back into MMM as priors. The combination of MMM (continuous) plus incrementality (periodic) is the gold standard 2026 design.
11.5 MMM Reporting Cadence
Quarterly model refresh with the latest 13 weeks. Annual full rebuild with the latest 52 weeks. The quarterly MMM report is the budget conversation document. The MTA reports are the tactical optimization document.
12. Privacy Respecting Attribution Post 2026
12.1 Consent Mode v2 Implementation
Consent Mode v2 became mandatory for advertisers targeting the EEA (including UK) on March 6, 2024 per Google Tag Manager Help documentation. Enforced by Google Ads, Search Ads 360, Display & Video 360. Sites without Consent Mode v2 on EEA traffic lose ad personalization, remarketing, and conversion attribution for new EEA users.
Three pieces. Default consent state before user interaction sets all ad_storage, ad_user_data, ad_personalization, analytics_storage, functionality_storage, personalization_storage to denied, with security_storage always granted:
gtag('consent', 'default', {
'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied',
'analytics_storage': 'denied', 'functionality_storage': 'denied',
'personalization_storage': 'denied', 'security_storage': 'granted'
});
Consent banner via a CMP. Google certified options in 2026: Cookiebot, Cookieyes, OneTrust, Termly, Iubenda, Usercentrics, TrustArc. Self built permitted but IAB TCF v2.2 reduces legal risk. Consent update fires gtag('consent', 'update', {...granted...}) when the user accepts. Decliners produce modeled data: Google fills statistical estimates based on consented users' behavior. Less precise but maintains aggregate reporting.
12.2 Server Side GTM
Server side GTM (sGTM) runs the container on a server you control. Benefits per Trackture, Stape, Piwik PRO 2025: extended cookie lifespan (Safari ITP caps browser cookies at 7 days; server set HTTP cookies survive 30 to 400 days), first party data control, lighter client side payload, custom consent and region routing impossible client side. Requires GCP App Engine or compatible (self hosted Debian via Docker possible). Cost $50 to $200 per month at small/medium scale. Deploy when EEA traffic above 20 percent, paid acquisition above $20K monthly, identity resolution problems, or privacy posture as a competitive differentiator.
12.3 First Party Identity
The 2026 first party identity stack: GA4 client ID persists in a first party _ga cookie for two years. User ID set when the user is logged in via gtag('config', 'G-XXX', { 'user_id': '...' }), surviving across devices. CRM contact ID captured at form submit via dataLayer push and stored as a user scoped custom dimension. The chain: anonymous client ID becomes user ID at form submit, becomes CRM contact ID, becomes closed deal. Attribution at deal close credits all upstream sessions tied to the identity history.
12.4 Cookieless Future and Google Signals
Third party cookies on Chrome not deprecated as of May 2026, but trajectory unchanged. Hedges: server side GTM, Privacy Sandbox APIs (Topics, Protected Audience, Attribution Reporting API, limited adoption in 2026), contextual targeting, MMM at aggregate level as long term primary.
Google Signals enables cross device tracking by linking GA4 sessions to signed in Google accounts. Benefits: complete identity, demographics, cross device counts. Drawbacks: stricter EEA consent, regulatory risk for YMYL. Enable for B2C consumer with broad audiences. Disable for YMYL (health, finance, legal), strong privacy positioning, EEA heavy traffic. Setting at Admin > Data Settings > Data Collection. Default is enabled; evaluate explicitly.
IP anonymization is default and non configurable. Full IP never logged. Eliminates the GDPR concern from Universal Analytics. No work required.
13. Audit Rubric
13.1 First 90 Days Subset (Per Property)
For a new client engagement, these five items move attribution credibility fastest. Audit and remediate before deeper rubric work.
| # | Criterion | Pass/Fail |
|---|---|---|
| F1 | UTM taxonomy documented at /var/www/sites/[domain]/docs/utm-taxonomy.md or equivalent, governance loop operational |
|
| F2 | Brand vs non brand split implemented in GSC (regex filter) and GA4 (custom dimension) | |
| F3 | GA4 conversion paths report accessible, assisted conversions visible in monthly reports | |
| F4 | Three model comparison in reporting: last click, data driven, assisted conversion count | |
| F5 | Consent Mode v2 implemented if EEA traffic exceeds 5 percent |
A property passing these five has a defensible attribution baseline. A property failing any one has a credibility gap before deeper work begins.
13.2 Per Property Audit Rubric (Full)
| # | Criterion | Pass/Fail |
|---|---|---|
| A1 | UTM taxonomy documented and governance loop operational | |
| A2 | UTM monthly audit run, anomalies remediated within the month | |
| A3 | No internal site links carry UTM parameters | |
| A4 | GA4 installed, GSC linked, BigQuery export enabled | |
| A5 | SEO custom event stack from Section 7.2 deployed | |
| A6 | Custom dimensions from Section 7.4 populated via DataLayer | |
| A7 | Key events configured for business outcomes, under 10 total | |
| A8 | GA4 model is data driven, fallback diagnostic confirms sufficient volume | |
| A9 | Conversion paths reviewed monthly, assisted conversions in reports | |
| A10 | Brand vs non brand separation operational in GSC and GA4 | |
| A11 | AI engine referral traffic isolated as Section 7.2 custom event | |
| A12 | GSC AIO impression baseline captured for priority queries | |
| A13 | Brand search volume tracked as leading indicator, 6 month trend in reports | |
| A14 | Onsite attribution survey deployed if conversion volume supports sampling | |
| A15 | Consent Mode v2 implemented if EEA traffic exceeds 5 percent | |
| A16 | CMP deployed and IAB TCF v2.2 compliant | |
| A17 | Server side GTM deployed if EEA above 20 percent or paid above $20K monthly | |
| A18 | Three model comparison in monthly reports | |
| A19 | MMM running quarterly if 3 plus channel allocation is a recurring decision | |
| A20 | Incrementality test cadence annual minimum, quarterly for paid heavy mix |
Score 20. World class: 17 or higher with zero fails on F1 to F5.
13.3 The Diagnostic Queries
Three SQL queries against BigQuery export that surface the most common attribution failures. Run at audit baseline and quarterly. Replace project.analytics_XXXX with the actual dataset and the brand regex with the client's term list.
-- DIAGNOSTIC 1: DDA fallback check (under 400 monthly events = fallback active)
SELECT PARSE_DATE('%Y%m%d', event_date) AS event_date, event_name, COUNT(*) AS event_count
FROM `project.analytics_XXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260401' AND '20260430'
AND event_name IN ('purchase', 'generate_lead', 'sign_up')
GROUP BY event_date, event_name ORDER BY event_date, event_name;
-- DIAGNOSTIC 2: Brand vs non brand split
SELECT
CASE
WHEN REGEXP_CONTAINS(LOWER(page_location), r'(emerald|emrald|amanda emerdinger)') THEN 'brand_landing'
WHEN REGEXP_CONTAINS(LOWER(traffic_source.source), r'google|bing|duckduckgo|yahoo')
AND traffic_source.medium = 'organic' THEN 'nonbrand_organic'
ELSE 'other'
END AS organic_cluster,
COUNT(DISTINCT user_pseudo_id) AS users
FROM `project.analytics_XXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260401' AND '20260430' AND event_name = 'session_start'
GROUP BY organic_cluster;
-- DIAGNOSTIC 3: AI engine referral isolation
SELECT
CASE
WHEN REGEXP_CONTAINS(LOWER(traffic_source.source), r'chatgpt|openai') THEN 'openai'
WHEN REGEXP_CONTAINS(LOWER(traffic_source.source), r'claude') THEN 'anthropic'
WHEN REGEXP_CONTAINS(LOWER(traffic_source.source), r'perplexity') THEN 'perplexity'
WHEN REGEXP_CONTAINS(LOWER(traffic_source.source), r'copilot') THEN 'microsoft_copilot'
WHEN REGEXP_CONTAINS(LOWER(traffic_source.source), r'gemini') THEN 'google_gemini'
ELSE 'non_ai'
END AS ai_engine,
COUNT(*) AS sessions
FROM `project.analytics_XXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260401' AND '20260430' AND event_name = 'session_start'
GROUP BY ai_engine ORDER BY sessions DESC;
14. Maintenance Schedule and Report Templates
14.1 Maintenance Cadence
Weekly: spot check GA4 realtime for tagged campaign traffic, GSC priority query delta.
Monthly: UTM audit, conversion paths review, three model comparison generation, brand vs non brand refresh, AI engine referral refresh, custom dimension population verification.
Quarterly: full Section 13 audit re run, MMM refresh, lookback window review, fallback diagnostic, onsite survey rotation.
Annually: full framework review against current GA4, ad platform attribution, privacy, and AI engine landscape state. Incrementality test cycle complete. Attribution architecture review against business model changes.
14.2 Report Templates
# Attribution Framework Implementation Report
**Site**: {{BUSINESS_NAME}} **Date**: {{TODAY}}
## Summary
Property passing first 90 days subset (F1 to F5): yes/no. Full rubric score: X/20.
## Work Completed
- UTM taxonomy created at: {{path}}
- GA4 custom events deployed: count
- Custom dimensions populated: count
- Brand vs non brand separation operational in GSC and GA4
- AI engine referral event live
- Consent Mode v2 status: {{status}}
- Three model comparison live in Looker Studio
## Sign-Off
# Attribution Framework Audit Report
**Site**: {{BUSINESS_NAME}} **Date**: {{TODAY}}
## Executive Summary
Property score: X/20. Critical fails (F1 to F5): list. Largest credibility gap: identify.
## Three Model Comparison for Latest 90 Days
| Channel | Last click | Data driven | Assisted |
|---|---|---|---|
| Organic non brand | | | |
| Organic brand | | | |
| Paid search non brand | | | |
| Paid search brand | | | |
| Email | | | |
| Direct | | | |
| Paid social | | | |
| Organic social | | | |
| Referral | | | |
| AI engine referral | | | |
## Diagnostic Findings
UTM hygiene, attribution model fallback status, brand vs non brand split, AI citation view through, privacy compliance.
## Recommended Remediation Order
Critical (F1 to F5 fails), High (A1 to A20 credibility), Medium (A1 to A20 tactical).
14.3 Common Attribution Mistakes Reference
The recurring mistakes the audit catches in 2026 engagements:
| # | Mistake | Fix |
|---|---|---|
| 1 | Reporting last click only | Three model comparison always |
| 2 | Conflating brand and non brand organic | Section 9 split |
| 3 | Internal UTMs destroying source attribution | Strip from internal links, ban via taxonomy |
| 4 | Ignoring AI engine referral as a category | Dedicated event in Section 7.2 |
| 5 | Ignoring zero click AIO exposure | Brand search lag tracking, onsite surveys, GSC AIO impression baseline |
| 6 | Letting DDA fallback silently | Quarterly fallback diagnostic, raise volume or switch view explicitly |
| 7 | Skipping Consent Mode v2 because the site is US based | Implement globally with US default granted |
| 8 | Ignoring iOS link tracking protection | Server side GTM, branded short links, first party tracking |
| 9 | No closed loop CRM attribution for long sales cycles | Client ID and user ID through to CRM contact record |
| 10 | Treating brand search as SEO win | Report brand separately, credit upstream brand building |
| 11 | Running MTA only on long sales cycle B2B | MMM quarterly, MTA tactically |
| 12 | No incrementality testing | Annual cycle on brand bidding, content campaigns, digital PR |
End of Framework Document
Document version: 1.0 Created: 2026-05-14 Maintained by: ThatDeveloperGuy
Attribution is how SEO defends its budget. The default measurement stack systematically under credits organic search, conflates brand with non brand, ignores zero click AI citation exposure, and produces budget conversations where SEO loses by accident rather than by analysis. This framework specifies the architecture that fixes the defaults: a UTM taxonomy producing clean inputs, a GA4 event stack capturing the full conversion path, model selection rules surfacing assisting work, brand and AI engine isolation, and a privacy compliant measurement layer that survives Consent Mode v2 and iOS link tracking protection.
Apply after framework-ga4.md and framework-gscanalysis.md, in parallel with the relevant business model framework. Reference from framework-reporting.md when reporting cadence questions touch attribution.
Companions
- framework-ga4.md, GA4 platform install and event basics
- framework-gscanalysis.md, GSC analysis and organic query data
- framework-reporting.md, client reporting cadence and dashboards
- framework-contentfirst.md, substrate doctrine
- framework-hcs.md, Helpful Content System
- framework-eeat.md, E-E-A-T pillars
- framework-aicitations.md, AI citation across engines
- framework-aioverviews.md, Google AI Overview citation
- framework-cro.md, conversion bottleneck remediation
- framework-keywordresearch.md, brand vs non brand input side
- framework-localseo.md, local service attribution
- framework-ecommerceseo.md, e commerce attribution
- framework-saas-seo.md, B2B SaaS pipeline attribution
- framework-pricing.md, pricing visibility patterns
- framework-cross-stack-implementation.md, DataLayer and event implementation by stack
- framework-react.md, SPA specific event implementation
- framework-tailwind.md, Tailwind specific concerns
- framework-topicalauthority.md, topical cluster attribution (scheduled Phase 1)
- framework-contentrefresh.md, refresh attribution (scheduled Phase 1)
- SEO-Search-Appearance.md, multi engine surface map
- SERP-Optimization.md, feature targeting playbook
- 14 tier Engine Optimization Stack, Tier 7 Measurement and Reporting
Want this framework implemented on your site?
ThatDevPro ships these frameworks as productized services. SDVOSB-certified veteran owned. Cassville, Missouri.
See Engine Optimization service ›