Measure landing-to-collection, collection-to-product, add-to-cart, reached-checkout and conversion rates, then investigate material drop-off. Provide the storefront URL and matching Shopify or Google Analytics aggregates; both are not required.
- Check source availability and bind each source to the store. Follow integration access for a useful missing connection. Ask about one source at a time using its supported flow; never request credentials, repair tracking or connect a second source without an evidence need. If neither source is usable, request one or an authorized aggregate report and keep dependent rates blocked.
- Read the funnel workflow before measurement. For landing trends or supplied experiments, also use cohorts and experiments; verify assignment and agreed decision criteria.
- Inspect the affected storefront routes to challenge a leak hypothesis. A prepared preview can support interaction diagnosis;
$preview-shopify-themeprepares it. Do not start servers or create data during reporting. Record its simulation limits fromreferences/tools/local-storefront.md#evidence-and-report-use; synthetic data cannot establish historical rates or experiment outcomes. - For requested organic acquisition context, use Search Console. Keep its optional metrics in Check evidence, outside on-site rate denominators. Guarded hosts require verified read-only filtering or authorized aggregate artifacts.
- Use sanitized customer research when supplied, without adding integrations. Apply PIE to supported opportunities.
Use permitted read-only aggregate capabilities or authorized report artifacts and a browser for diagnosis. Glue handles its connections and permissions; other hosts use their own supported flow. Retain independent evidence and supported rates when another decision is blocked.
Return the five declared rate keys with window, segment and source dimensions, exact numerators/denominators, supported Issues and limitations. Preserve inconclusive diagnoses. Storefront inspection uses only authorized anonymous-cart and fictional-checkout state; stop at payment options.
Follow Glue JSON output: save, validate and read back the complete report.json, then link it with a readable summary of every Issue. Use the bundled schema unless the host supplies one. In Glue, return the bare object through its runtime; Glue handles storage and rendering.
Host integration
{
"schemaVersion": 2,
"goal": "Measure the storefront funnel and comparable landing-page trends; report supplied experiment cohorts without inventing attribution, causes, or winners.",
"context": [
{ "id": "target_url", "label": "Storefront URL", "type": "url", "required": true },
{ "id": "experiment_reference", "label": "Experiment reference and measurement plan", "type": "text", "required": false }
],
"integrations": [
{ "toolkit": "shopify", "label": "Shopify", "required": false },
{ "toolkit": "google_analytics", "label": "Google Analytics", "required": false },
{ "toolkit": "google_search_console", "label": "Google Search Console", "required": false }
],
"categories": [],
"batches": [
{ "id": "funnel", "label": "Measure and diagnose the storefront funnel", "categoryIds": [] }
],
"reporting": {
"allowedResultTypes": ["data", "issue"],
"data": [
{ "key": "landing-to-collection-rate", "label": "Landing to collection rate", "unit": "percent", "precision": 2, "direction": "higher_is_better", "dimensions": ["window", "segment", "source"] },
{ "key": "collection-to-product-rate", "label": "Collection to product rate", "unit": "percent", "precision": 2, "direction": "higher_is_better", "dimensions": ["window", "segment", "source"] },
{ "key": "add-to-cart-rate", "label": "Add to cart rate", "unit": "percent", "precision": 2, "direction": "higher_is_better", "dimensions": ["window", "segment", "source"] },
{ "key": "reach-checkout-rate", "label": "Reached checkout rate", "unit": "percent", "precision": 2, "direction": "higher_is_better", "dimensions": ["window", "segment", "source"] },
{ "key": "conversion-rate", "label": "Conversion rate", "unit": "percent", "precision": 2, "direction": "higher_is_better", "dimensions": ["window", "segment", "source"] }
]
},
"completionRules": [
"Every selected Check reaches exactly one terminal outcome.",
"Require at least one target-bound Shopify or Google Analytics aggregate source for on-site measurement; when neither is usable, block the dependent Checks without fabricating rates.",
"Google Search Console is optional acquisition context in Check evidence, never an on-site rate source or session denominator; its absence does not block ordinary funnel reporting.",
"Return all five aggregate rates for one exact current window and a compatible comparison when the required data is available.",
"Every Issue names the affected step, denominator, window, material segment, direct storefront evidence, one change or experiment, primary metric, guardrails, and decision or retest condition.",
"Compare landing pages and periods only within compatible source definitions; supplied experiments require verified assigned cohorts and agreed metrics, guardrails, and decision criteria. Otherwise retain an inconclusive readout."
],
"safetyRules": [
"Keep the report read-only except for disposable anonymous cart and fictional guest-checkout state used only until payment options render.",
"Use Search Console only for verified target metadata and aggregate Search Analytics reads. In a guarded review host, require verified read-only operation filtering or use supplied aggregate artifacts instead; never probe a mutation to test the guard.",
"Never expose customer- or order-level data, create an account, enter payment, activate a wallet, submit payment, place an order, publish, message, or change store data."
]
}
[
{ "id": "funnel.landing-to-collection", "title": "Measure landing to collection progression", "preferredOutput": "data", "dataKey": "landing-to-collection-rate", "evidence": ["text"], "version": 1 },
{ "id": "funnel.collection-to-product", "title": "Measure collection to product progression", "preferredOutput": "data", "dataKey": "collection-to-product-rate", "evidence": ["text"], "version": 1 },
{ "id": "funnel.add-to-cart", "title": "Measure add to cart rate", "preferredOutput": "data", "dataKey": "add-to-cart-rate", "evidence": ["text"], "version": 1 },
{ "id": "funnel.reach-checkout", "title": "Measure reached checkout rate", "preferredOutput": "data", "dataKey": "reach-checkout-rate", "evidence": ["text"], "version": 1 },
{ "id": "funnel.conversion", "title": "Measure storefront conversion rate", "preferredOutput": "data", "dataKey": "conversion-rate", "evidence": ["text"], "version": 1 }
]