Privacy Policy

CRM Sync — Effective Date: May 17, 2026 · Last Updated: May 17, 2026

1. Who We Are

CRM Sync is a customer relationship management service operated by Story Story AI. CRM Sync synchronizes user identity, consent, segmentation, and campaign data across integrated commerce, CMS, analytics, and customer data platforms.

CRM Sync operates as a registered application on both the Shopify App Store and the Webflow Marketplace, subject to both platforms' privacy and compliance requirements.

EntityDetails
OperatorStory Story AI
Contact Emailysl@story-story.ai
Data Protection Contactysl@ysl150.com
Service URLcrm-sync.dev

2. Data We Collect

2.1 Data Collected from End Users (Your Customers)

CategoryData PointsSource
IdentityEmail address, first name, last name, avatar URLSignup form, OAuth provider, Shopify
AuthenticationPassword hash (bcrypt), OAuth provider ID, session tokensAuth flow
ConsentTOS, cookie, marketing, newsletter, CCPA preferencesConsent forms, UCP Dashboard, form bridge
Tags & SegmentsCRM tags (status, tier, segment, campaign, consent)Admin assignment, form bridge, auto-inference
CommerceShopify customer ID, order count, total spent, countryShopify Admin API
Audit TrailConsent changes with timestamp, source, session ID, IP addressAll consent mutation endpoints
Agent PermissionsAuthorized AI agents, scope, spending limit, payment rail, and agent activity (A2A access, AP2 mandates)Privacy & Permissions panel, UCP Dashboard

2.2 Data Collected from Merchants (App Users)

CategoryData PointsSource
Store InfoShopify store domain, shop IDOAuth install flow
CredentialsAPI tokens (encrypted), OAuth tokensOAuth flows, config setup
ConfigurationSync settings, auth method preferences, integration togglesExtension UI, setup wizard

2.3 Data We Do NOT Collect

  • Payment card numbers or financial account details
  • Government-issued identification numbers
  • Biometric data
  • Health or medical information
  • Precise geolocation (we store country only, from Shopify)

3. How We Collect Data

MethodDescription
Direct InputSignup forms, login forms, profile updates, consent toggles, UCP Dashboard interactions
OAuth FlowsGoogle OAuth, Shopify Customer Account (PKCE), Shopify App OAuth, Webflow OAuth
Shopify Admin APICustomer data synced via cron (every 15 minutes) and webhooks (customers/create, customers/update)
Webflow CMS APICMS item changes synced via registered webhooks
Form BridgeAny HTML form with data-crm-form attribute on your Webflow site
AutomatedIP address (for consent provenance), session identifiers, timestamps

4. How We Use Your Data

PurposeLegal Basis (GDPR)Data Used
Provide the CRM serviceContract performanceIdentity, auth, tags, commerce data
Authenticate usersContract performanceEmail, password hash, OAuth tokens
Manage consent preferencesLegal obligation (GDPR Art. 6, 7)Consent records, audit trail
Sync data across platformsLegitimate interest / consentCustomer profiles, tags, metafields
Send transactional emailsContract performanceEmail, name (via Resend)
Server-side analyticsLegitimate interest / consentTag categories, consent state (no raw PII to GA4)
Adobe AEP integrationConsent (explicit opt-in)SHA-256 hashed PII only; raw PII never transmitted
Authorize & audit AI agentsConsent (explicit opt-in)Agent mandates, scope, spending limits, activity log
Compliance (GDPR/CCPA)Legal obligationAll stored data (for data requests, redaction)
PII Hashing for Adobe AEP: When Adobe Experience Platform integration is enabled, personal data (email, phone, name) is hashed using SHA-256 before transmission. Raw PII never leaves our worker. The hashing occurs server-side using the Web Crypto API.

5. Data Sharing & Third Parties

We share data only with services required to provide CRM Sync functionality. We do not sell personal data.

ServiceData SharedPurposeLocation
ShopifyCustomer tags, metafields, consent stateCommerce syncGlobal (Shopify CDN)
XanoUser profiles, consent records, tags, extrasDatabase (source of truth)US
WebflowCustomer CMS items (name, email, tags, consent)CMS publishingUS
Google Analytics (GA4)Tag categories, consent state, events (no raw PII)AnalyticsUS
Adobe Experience PlatformSHA-256 hashed PII, consent state, commerce eventsCDP (if enabled)Per tenant AEP region
ResendEmail address, nameTransactional emailUS
CloudflareKV config, request metadataWorker hosting, KV storageGlobal (edge)
Payment providers & railsTransaction metadata for payments you or your authorized agents initiate (no card numbers stored by us)Payment processingPer provider (Stripe, Google Pay, Samsung Pay, Kakao Pay, MPP/USDC)

We do not share data with advertising networks, data brokers, or any party not listed above.

6. Data Storage & Security

6.1 Where Data Is Stored

Data TypeStorageEncryption
User profiles, consent recordsXano (managed database)Encrypted at rest (Xano managed)
Config, tokens, OAuth stateCloudflare KVEncrypted at rest (Cloudflare managed)
PasswordsXano (as bcrypt hash)One-way hashed, not reversible
Session tokensHTTP-only cookiesJWT signed with HS256; Secure, SameSite flags

6.2 Security Measures

  • Encryption in transit: All connections use HTTPS (enforced by Cloudflare edge)
  • Authentication: JWT sessions with configurable expiry, idle timeout with warning
  • Webhook verification: HMAC-SHA256 signature verification on all Shopify webhooks and GDPR handlers
  • Admin access: Bearer token (ADMIN_KEY) required on all admin and write endpoints
  • Zero Trust: Cloudflare Access with email-based OTP on worker admin URLs
  • OAuth security: State parameter CSRF protection, PKCE for Shopify Customer Account, shop domain validation
  • Secret masking: GET /config masks all credentials; embed HTML strips all API keys
  • PII protection: No PII logged to browser console or server logs
  • Tenant isolation: Multi-tenant config stored in isolated KV keys; no cross-tenant data access
  • Token management: Shopify expiring tokens (60-min access, 90-day refresh) with proactive refresh

7. Data Retention

Data TypeRetention PeriodDeletion Method
User profilesUntil account deletion or merchant requestPII anonymization via redaction endpoint
Consent recordsIndefinite (audit requirement)Append-only; preserved after user redaction
OAuth tokensAccess: 60 min; Refresh: 90 daysAuto-expired, overwritten on refresh
Password reset tokens1 hour (reset) / 24 hours (welcome)KV TTL auto-deletion
OAuth state nonces5–10 minutesKV TTL auto-deletion
Adobe IMS tokensPer Adobe TTL (typically 24 hours)KV TTL auto-deletion
Sync timestampsIndefinite (operational)Overwritten on each sync cycle

8. Your Rights

8.1 For End Users (Customers)

Under GDPR, CCPA, and other applicable privacy laws, you have the following rights:

RightHow to ExerciseImplementation
Access (GDPR Art. 15)Contact the merchant or email usPOST /gdpr/data-request compiles complete user record
Rectification (GDPR Art. 16)Update via UCP Dashboard or Account pagePOST /auth/profile updates name, language
Erasure (GDPR Art. 17)Self-service: Account → Delete AccountPOST /auth/delete-account or POST /gdpr/customer-redact
Portability (GDPR Art. 20)Contact the merchant or email usPOST /gdpr/data-request returns structured JSON
Withdraw Consent (GDPR Art. 7)UCP Dashboard consent togglesEach toggle change logged to audit trail
Restrict Processing (GDPR Art. 18)Contact usWe will suspend processing on request
Object (GDPR Art. 21)Contact usWe will cease processing for the objected purpose
Revoke Agent AccessPrivacy & Permissions panel → revoke any agentMandates revoked immediately; A2A/AP2 access ceases

8.2 For Merchants (App Users)

  • Uninstall: Uninstall the app from Shopify Admin or Webflow Workspace at any time
  • Data deletion: Upon uninstall, Shopify sends a shop/redact webhook. We acknowledge and delete stored shop data within 48 hours.
  • Export: Contact us to receive a complete export of your configuration and customer data

8.3 Canada — Email Consent & Anti-Spam (CASL)

For recipients in Canada, commercial electronic messages (email and SMS marketing) are sent only with your consent — express or, where permitted, implied — under Canada's Anti-Spam Legislation (CASL). Every commercial message identifies the sender, provides valid contact information, and includes a working unsubscribe mechanism; unsubscribe requests are honored within 10 business days at no cost. Transactional and service messages (for example, password resets and order notifications) are not marketing and are sent as needed to operate your account. Your access, correction, and complaint rights under PIPEDA are unaffected.

Response Time: We respond to all data subject requests within 30 days, as required by GDPR. For CCPA requests, we respond within 45 days.

9. Cookies & Tracking

9.1 Cookies We Set

CookiePurposeTypeDuration
crm_sessionJWT session token for authenticationEssentialConfigurable (default 7 days)

We set one cookie for authentication. It is httpOnly, Secure, and SameSite=None. It cannot be read by client-side JavaScript.

9.2 Cookie Consent

CRM Sync provides a configurable cookie consent banner. Users can accept or reject cookies. Cookie consent state is logged to the audit trail with provenance metadata.

9.3 Server-Side Analytics

We use Google Analytics 4 Measurement Protocol for server-side event tracking. This means:

  • No GA4 cookies are set on the user's browser by CRM Sync
  • No raw PII is sent to GA4 — only tag categories and consent state
  • Events are attributed using a synthetic client ID (crm-sync.{userId})
  • Analytics respects user consent state — marketing events are only sent when consent is granted

10. California Privacy Rights (CCPA)

If you are a California resident, you have additional rights under the California Consumer Privacy Act:

RightImplementation
Right to KnowData request endpoint compiles all stored data
Right to DeleteCustomer redaction endpoint anonymizes all PII
Right to Opt-Out of SaleCCPA toggle in consent settings (UCP Dashboard and compliance page). We do not sell personal data.
Non-DiscriminationNo features are gated based on privacy choices

11. Children's Privacy

CRM Sync is not directed at children under 16 years of age. We do not knowingly collect personal data from children. If you believe we have inadvertently collected data from a child, please contact us immediately and we will delete it.

12. Changes to This Policy

We may update this Privacy Policy from time to time. When we make material changes:

  • We will update the "Last Updated" date at the top of this page
  • For significant changes, we will notify merchants via email or in-app notification
  • Continued use of the service after changes constitutes acceptance of the updated policy

13. Contact Us

For any questions about this Privacy Policy, to exercise your data rights, or to report a privacy concern:

ChannelContact
General Supportysl@story-story.ai
Data Protectionysl@ysl150.com
Mailing AddressStory Story AI, United States

We aim to respond to all inquiries within 5 business days and to all formal data subject requests within 30 days.