# Conversion-by-Source Diagnosis ``` name: Conversion-by-Source Diagnosis slug: conversion-by-source-diagnosis tier: forward-deployed (operations) role: fda status: template score: 49 (demand 5, pain 5, differentiation 3, usability 4, connectors 5) intent: find the conversion divergences worth money in the analytics export, verify they are behavior rather than measurement, and emit a ranked hypothesis list a human picks from when to use: traffic is stable but the outcome number is not, or nobody has looked at conversion by segment in a quarter when not to use: traffic itself dropped (Traffic-Drop Triage); running the tests this workflow proposes (Experiment Loop with Pre-Registered Gates); verifying the tracking pipeline end to end (Revenue Tracking Integrity) ``` ## Connectors ``` connectors: - capability: warehouse.query access: read bounds: every query carries a date range pushed down as a partition filter - capability: analytics.read access: read - capability: search-performance.read access: read # intent context for landing pages - capability: crawl.read access: read # measurement checks on live pages ``` Fully read-only. This workflow diagnoses and ranks; it changes nothing. Its output routes to the Experiment Loop or to held fixes owned elsewhere. ## Prerequisites - Claude with the catalog installed: `/plugin marketplace add rampstackco/claude-skills` - Conversion events landing in the warehouse or analytics store with source attribution (the native analytics export into the warehouse is the reference setup; enable exports before anything else, they do not backfill). - A defined conversion event set and, where it exists, a value per event; if value is unknown, the ranking uses volume and says so. - Enough history for a stable baseline per segment (thin segments produce loud noise; the workflow flags them rather than ranking them). ## Phases ### Phase 1: Frame the funnel and the baseline · lane: convergent (Tholo) Skills: analytics-strategy, product-analytics-setup Capability class: conversion.frame (substitute equivalents if off-catalog) Input: the conversion event definitions; the analytics export in the warehouse Run: Invoke analytics-strategy to state, in writing: which events count as conversions here, what a source is (source/medium granularity), which segments matter (landing page template, device, country, intent class), and the baseline window. Invoke product-analytics-setup to confirm the events named actually exist in the export with the fields the analysis needs. Produce the frame document. No analysis yet. Output artifact: the frame (events, segments, baseline window, known value per event or the stated absence) Done when: the frame names every dimension the sweep will cut by, and each named event is confirmed present in the data Fails look like: framing after looking. A frame written once the divergences are visible quietly becomes a justification for them; the frame comes first so the sweep cannot be steered ### Phase 2: The divergence sweep · lane: convergent (Tholo) Skills: product-analytics-setup (nearest anchor; the divergence-detection core is a DECLARED GAP, procedure inline) Capability class: conversion.divergence-detect (declared catalog gap) Input: the frame; bounded warehouse queries per the frame's window Run: Compute conversion rate by source x landing template x device against the baseline, with volume attached to every cell. Surface the divergences worth money, in three shapes: segments converting well below their peers at meaningful volume (the fix candidates), sources whose conversion quality shifted against their own history (the quality drifts), and pages that earn traffic but not outcomes, cross-read with search-performance intent data (the rank-without-reward set). Flag thin cells as not-rankable instead of ranking their noise. Attach the numbers to every finding. Output artifact: the divergence table (finding, segment, magnitude, volume, baseline) Done when: every finding carries its numbers and thin cells are marked not-rankable Fails look like: averaging across segments, the same failure that breaks traffic triage. A flat blended conversion rate can hide one template at half its peers; the cuts in the frame exist so the blend cannot ### Phase 3: Measurement gate · lane: gate (Basano) Skills: product-analytics-setup (anchor; procedure inline) Capability class: measurement.verify (declared catalog gap) Input: the divergence table; the live pages of affected segments (crawl.read) Run: Before any divergence is treated as behavior, test it as measurement. Per finding, check: consent-flow differences by source or geography (a consent-heavy source under-reports conversions, not visitors); attribution parameters surviving the landing path (redirects and canonicalization strip params); cross-domain or app boundaries in the converting path; event firing verified on the live affected templates; and whether the divergence's start date aligns with a tracking or consent deploy rather than a demand or content change. Verdict per finding: BEHAVIOR, MEASUREMENT, or MIXED, with evidence. Report only. Output artifact: the divergence table, annotated with measurement verdicts Done when: every finding carries a verdict; MEASUREMENT findings route to a tracking fix, not an optimization Fails look like: optimizing a consent artifact. A quarter spent lifting a segment whose conversions were merely unmeasured is the expensive version of this failure, and it is common ### Phase 4: Hypothesis ranking · lane: divergent (Krine) Skills: none; this is the judgment stop Input: the BEHAVIOR and MIXED findings Run: For each finding, state the hypothesis as mechanism, not aspiration: what specifically about the page, offer, or match to intent would explain the gap, and what change would test it. Rank by expected value where value is known (volume x conversion delta x value per event) and by volume-weighted delta where it is not, saying which basis each rank uses. Present the ranked list with evidence. Recommend the top candidates for testing; decide nothing. Stop for the human. Output artifact: the ranked hypothesis list (mechanism, evidence, expected-value basis) Done when: a human selects which hypotheses proceed Operated-layer note: in an operated deployment the ranking and the human's selection land as an agreement-log row; hypothesis hit-rate over time, fed back from experiment verdicts, is what calibrates this lane Fails look like: aspiration hypotheses ("improve the CTA") with no mechanism. A hypothesis that does not say why the gap exists cannot be falsified by a test, and the experiment it produces measures nothing ### Phase 5: Route the winners · lane: convergent (Tholo) Skills: routing; the work lives in the owning workflows Input: the human-selected hypotheses Run: Testable hypotheses route to the Experiment Loop with Pre-Registered Gates, carrying their mechanism, expected effect size, and the segment definition (the loop's pre-registration consumes exactly these). Findings that are defects rather than hypotheses (a broken form, a measurement fix) route as held changes to their owners. Record the routing so experiment verdicts flow back against the original finding. Output artifact: routed work items, each tied to its finding and hypothesis Done when: every selected hypothesis is in the experiment queue or routed as a held fix, with the return path recorded Fails look like: the diagnosis running its own tests. The moment this workflow ships a variant, pre-registration is retrofitted to a change already believed in, and the experiment gate is theater ## Failure modes - Segment blending (Phase 2's inline failure). - Measurement artifacts optimized as behavior (Phase 3's inline failure, the expensive one). - Expected-value theater: invented per-event values lending false precision to the ranking; the basis is stated or the rank is volume-weighted, never silently guessed. - Thin-cell confidence: ranking noise from segments too small to trust; not-rankable is a verdict, not an apology. - Mechanism-free hypotheses (Phase 4's inline failure). - Self-testing (Phase 5's inline failure). ## Worked example Pending. Populates when this workflow is executed as written on a showcase-designated property with conversion events; the intended first substrate is a designated property whose outbound pick-click events serve as the conversion set. Status flips to validated when that run record links here. ## Boundaries - Experiment Loop with Pre-Registered Gates owns everything from pre-registration through verdict; this workflow supplies its intake and consumes its verdicts as calibration. - Revenue Tracking Integrity owns the money path end to end on a schedule; Phase 3 here is a per-finding spot check, not that audit. - Traffic-Drop Triage owns falling traffic; this workflow assumes traffic is roughly stable and the outcome is the question.