CRM Sync

Multi-tenant CRM with auth, consent management, Adobe AEP integration, and full-funnel entitlement for Webflow + Shopify.

Webflow App Shopify App Cloudflare Worker Adobe AEP GDPR/CCPA

Features

Multi-Tenant SaaS

Per-shop KV config isolation, tenant registry, auto-registration on install. Each Shopify store gets its own config, tokens, and sync schedule.

Authentication

Email/password, Google OAuth, Shopify Customer Account (PKCE), JWT sessions, idle timeout, password reset, welcome emails, profile management.

Consent Management

GDPR/CCPA-compliant consent with TOS, cookie, marketing, newsletter, CCPA, and dynamic form types. Append-only audit trail with provenance.

Tri-Directional Sync

Real-time sync across Shopify, Xano, Webflow CMS, GA4, and Adobe AEP. Cron every 15 min + webhook-driven single-user sync.

Adobe Experience Platform

Streaming ingestion to AEP with SHA-256 hashed PII, XDM consent mapping, form bridge events, and product upsell commerce events.

Form Bridge

Add data-crm-form="type" to any HTML form. Auto-creates tags, logs consent, fires GA4 events, and pushes to Adobe AEP.

Tag System

Structured tags with categories (status, tier, segment, campaign, consent, marketing). Auto-inference, join table architecture, full-channel flow.

GDPR/CCPA Compliance

Customer redaction, data portability, shop redaction, self-service deletion, consent audit trail. All webhooks HMAC-verified.

Webflow Extension

CRM Auth Designer Extension with Config, Auth, Embeds, Plan, and Status tabs. Adobe AEP config, embed code generation, health checks.

Configuration

Tenant Config Fields Per-shop KV
FieldTypeDescription
xano_base_urlstringXano API base URL
xano_api_keysecretXano API key
shopify_store_domainstringe.g., store.myshopify.com
shopify_admin_tokensecretShopify Admin API token (shpua_ prefix)
shopify_refresh_tokensecretShopify refresh token (shprt_ prefix, 90-day TTL)
shopify_token_expires_atnumberUnix timestamp for token expiry
webflow_cms_tokensecretWebflow CMS API token (via OAuth)
webflow_collection_idstringWebflow Customers collection ID
webflow_site_idstringWebflow site ID (from OAuth)
ga4_measurement_idstringGA4 Measurement ID (G-XXXXXXXXXX)
ga4_api_secretsecretGA4 Measurement Protocol secret
auth_redirect_originstringCORS allowed origin (Webflow site URL)
authMethodsobjectToggle email, Google, Shopify auth
adobe_aep_enabledbooleanEnable Adobe AEP streaming
adobe_ims_org_idstringAdobe IMS Org ID
adobe_client_idstringAdobe OAuth client ID
adobe_client_secretsecretAdobe OAuth client secret
adobe_aep_dataset_idstringAEP streaming dataset ID
adobe_aep_sandboxstringAEP sandbox name (default: prod)
resend_api_keysecretResend transactional email API key
KV Key Structure Multi-tenant
Key PatternContentsSensitivity
tenant:{shop}:configPer-tenant CrmSiteConfigHigh
tenants:indexJSON array of registered shopsLow
platform:configShared platform credentialsHigh
tag_table_idsXano table IDs for tagsLow
sync:customers:last_runISO timestamp of last syncLow
adobe_token:{shop}Cached Adobe IMS access tokenHigh
pkce:{state}PKCE code_verifier (TTL)Medium
oauth_state:{uuid}OAuth state + shop (10min TTL)Medium
reset:{token}Password reset token (1h/24h TTL)Medium
Environment Variables & Secrets wrangler.toml
VariableSourceDescription
XANO_BASE_URL[vars]Xano API endpoint
AUTH_REDIRECT_ORIGIN[vars]CORS origin for auth redirects
GOOGLE_CLIENT_ID[vars]Google OAuth client ID
SHOPIFY_STORE_DOMAIN[vars]Default Shopify store domain
SHOPIFY_SHOP_ID[vars]Shopify shop numeric ID
SHOPIFY_CUSTOMER_ACCOUNT_CLIENT_ID[vars]Shopify Customer Account PKCE client
RESEND_FROM_EMAIL[vars]From address for transactional email
XANO_API_KEYsecretXano API key
JWT_SECRETsecretJWT signing secret
GOOGLE_CLIENT_SECRETsecretGoogle OAuth secret
SHOPIFY_ADMIN_TOKENsecretAuto-set by OAuth install flow
WEBFLOW_CMS_TOKENsecretAuto-set by Webflow OAuth
RESEND_API_KEYsecretResend API key
GA4_API_SECRETsecretGA4 Measurement Protocol secret
ADMIN_KEYsecretBearer token for admin endpoints
Config Precedence

Config is resolved per-tenant with the following precedence (highest first):

  1. KV Storetenant:{shop}:config (per-tenant overrides)
  2. wrangler.toml [vars] — Environment variable defaults
  3. Wrangler Secretswrangler secret put values

Legacy single-tenant mode falls back to the crm_config KV key when no tenant is specified.

Pricing & Entitlement

Shared
$69/mo
Shared infrastructure
  • Multi-tenant Cloudflare Worker
  • Shared KV namespace
  • Shared Xano workspace
  • Email + Google + Shopify auth
  • Full consent management
  • GA4 server-side analytics
  • Cron sync (15-min intervals)
  • Webhook-driven single-user sync
  • Form bridge
  • Webflow CMS sync
Get Started
Enterprise
Custom
White-glove onboarding
  • Everything in Private, plus:
  • Salesforce integration
  • HubSpot integration
  • Klaviyo integration
  • Attentive integration
  • Braze integration
  • Custom integrations
  • SLA & dedicated support
  • SSO / SAML
Contact Sales
Entitlement Matrix
FeatureShared ($69)Private ($325)Enterprise
Auth (email, Google, Shopify)
Consent management
Tag system
Shopify sync
Webflow CMS sync
GA4 Measurement Protocol
Form bridge
GDPR/CCPA compliance
Resend transactional email
Adobe Experience Platform
Dedicated infrastructure
Custom domain
Salesforce / HubSpot / Klaviyo
Attentive / Braze
SLA & dedicated support

Architecture

Multi-Tenant Data Flow
┌──────────────────┐ │ UCP Dashboard │ │ (User-Facing) │ └────────┬─────────┘ │ POST /ucp/tags ▼ ┌─────────────┐ ┌───────────────┐ ┌─────────────┐ │ Webflow │◄───▶│ Cloudflare │◄───▶│ Shopify │ │ CMS │ │ Worker │ │ Admin │ │ │ │ + Xano DB │ │ │ └──────┬──────┘ └───────┬───────┘ └──────┬──────┘ │ │ │ │ ┌──────────┬──────────┐ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ GA4 MP Resend Adobe AEP │ │ (Events) (Email) (CDP) │ └─────────────────────────────────────────┘ All paths converge at Xano (source of truth)
Tenant Identity Resolution
IngressTenant ID Source
Shopify embedded appSession → shop domain
Shopify webhooksX-Shopify-Shop-Domain header
Storefront embeds?shop= query param
Webflow extension?shop= query param
OAuth install flow?shop= query param
Cron/scheduledIterates tenants:index
Admin endpoints?shop= + Bearer token
Data Flow Directions 7 flows
#DirectionTrigger
1Shopify → Xano → Webflow → GA4Cron (*/15 * * * *) or webhook
2Webflow → Xano → Shopify → GA4Webflow CMS item changed webhook
3UCP → Xano → Shopify + Webflow → GA4POST /ucp/tags or POST /tags/user
4Form Bridge → UCP → Alldata-crm-form submission
5Shopify → Xano → ResendCustomer create (welcome email)
6Shopify → Worker (compliance)POST /api/webhooks (GDPR)
7Shopify → Xano → Adobe AEPCustomer update (if AEP enabled)

API Endpoints

Auth Endpoints
POST/auth/signup
Email/password registration with bcrypt
POST/auth/login
Email/password login with JWT issuance
GET/auth/me
Current user profile (JWT required)
POST/auth/logout
Clear session cookie
POST/auth/forgot-password
Send password reset email
POST/auth/reset-password
Set new password via reset token
POST/auth/profile
Update name, language
POST/auth/delete-account
Self-service account deletion
GET/auth/google/login
Google OAuth redirect
GET/auth/shopify/login
Shopify Customer Account PKCE
GET/auth/install
Shopify App OAuth install
GET/auth/webflow/connect
Webflow OAuth connect
Admin Endpoints (Bearer token required)
GET/config?shop=
Read tenant config (secrets masked)
POST/config?shop=
Write tenant config
POST/sync/customers?shop=
Trigger full customer sync
POST/admin/adobe-schema?shop=
Setup Adobe fields on Xano
POST/admin/webflow-ensure-fields?shop=
Ensure Adobe fields on Webflow CMS
POST/webhooks/upsell
Product upsell → AEP event
Public Endpoints
GET/health
Worker health check
GET/setup
Setup wizard (ADMIN_KEY gated)
GET/embed/footer
Footer embed (auth UI)
GET/embed/account
Account page embed
GET/embed/dashboard
UCP dashboard embed
GET/embed/compliance
CCPA/GDPR compliance page
GDPR Endpoints (HMAC verified)
POST/gdpr/data-request
Export all user data
POST/gdpr/customer-redact
Anonymize all PII
POST/gdpr/shop-redact
Acknowledge shop deletion
POST/api/webhooks
Compliance dispatcher

Functional Requirements

Full specification: FUNCTIONAL-SPEC.md v1.2

Resources