Shopify connector — whitepaper status source

Created 2026-08-11 (no prior whitepaper status source existed in docs/ — measured; this file is now it). Proof levels per .claude/memory/active/marketing-commerce-connectors.md: a PARTIAL row means code + tests exist (implemented) — NOT deployed, NOT live-verified. Flips happen ONLY after the named tests pass; live-site copy never changes from this file (GATE 2 / owner decisions only).

Capability Status Evidence
Signed webhook receiver (HMAC, fail-closed on missing secret) PARTIAL services/service-marketing-connectors/main.py; tests/connectors/test_shopify_gateway.py::TestHmac (green 2026-08-11)
Replay protection (webhook-id TTL cache) PARTIAL webhook_hardening.ReplayCache; TestReplayProtection (green 2026-08-11)
Consent gate on person-level fields (unified.consent_registry, fail-closed redaction + consent-drop counter) PARTIAL webhook_hardening.ConsentLookup / redact_person_fields; TestConsentGate (green 2026-08-11). DDL operator-applied at GATE 2
orders/checkouts → JourneyEvents (MAPPERS["shopify"]) PARTIAL pre-existing map_shopify (topic passthrough covers orders/create, orders/updated, checkouts, refunds); tests/shared/test_virtuoso_models.py (green)
inventory_levels/update → MarketSignal (MARKET_MAPPERS["shopify_inventory"] via Cell 37) PARTIAL gateway routing TestInventoryRouting + tests/market_signal/ (green 2026-08-11)
GDPR compliance topics ACK-only PARTIAL TestGdprTopics (green 2026-08-11)
products/update → canonical ingestion evidence PARTIAL generic webhook path (pre-existing)
Admin GraphQL reconciliation/backfill (orders/products/customers pull) PARTIAL pre-existing /api/v1/shopify/sync
Live-verified end-to-end lineage (rule 6 checks a–d) PROPOSED not live-verified; consent registry DDL + Cell 37 deploy + secrets are GATE-2/operator steps
Klaviyo gateway connector PROPOSED BUILD_DEBT KLV-1
Klaviyo email/SMS value feed (KLAVIYO_FEED, W5) PARTIAL services/measurement-rails/klaviyo_feed.py + ncm_feed_wiring.build_klaviyo_value_events/send_klaviyo_value_events; flag off by default, health() reports not_configured absent a credential. [Roadmap] on any merchant-facing surface until GATE 2 + real credentials — no LIVE claim
← All docsView source on GitHub →