Skip to main content

// trust center

Security posture, in plain text.

Magistry writes to your live systems, so this page says how access, approvals, audit and your data are handled, and what we do not have yet. Each statement is traced to our code or to the provider's own page.Not yet in place: a third-party audit report, a penetration-test report, single sign-on, SCIM user provisioning, required two-factor sign-in for Magistry staff, a published internal-access policy, personnel screening and security training, a review of each sub-processor's data-protection terms, point-in-time recovery and recovery commitments, a published incident-response plan, a general retention schedule and automated deletion for accounts not on Shopify.

Database and workers in the EUDPA and sub-processors publishedNo third-party audit report yet

// at a glance

Where we stand today.

We would rather be plain about what we have and have not done than show a badge we have not earned.

Data location

EU-hosted core

The database runs on Supabase in AWS eu-west-1 (Ireland) and the background workers on Railway in Amsterdam. AI model providers are in the United States, and the full sub-processor list states each region.

GDPR

DPA published

Where we process personal data for you we act as your processor under the Data Processing Addendum, which is public and lists every sub-processor. Shopify's three mandatory privacy webhooks are verified and handled on receipt.

Payments

No card data

Card payments run through Shopify billing or Stripe's hosted checkout. Card numbers are entered on their pages and never reach Magistry.

Certifications

No audit report yet

Magistry has no SOC 2 report, ISO 27001 certificate or other third-party certification of its own yet. The providers we run on hold their own, and their statements are linked under data handling.

// access control

Who can see what, and how it is enforced.

For an outside app, the credentials, scopes and per-grant revocation are on API authentication.
Roles · row-level security · scoped apps

Roles per store

Each store member is an Owner, Admin, Staff or Viewer, and store access for signed-in users and API callers is enforced by Postgres row-level security in the database. Staff can act but not configure billing, agents or the team; Viewers can only read.

Enforced in the database

Access is checked in the database, not only in the interface. Row-level security switches on automatically for every new table, and an hourly check raises a critical alert if any table is without it.

Apps act as apps

A third-party app's token carries the stores and the write permission it was granted. The database intersects those with the granting user's own access, so an app never reaches a store its user cannot, and a read-only app can write nothing.

Revocation is immediate

Revoking an app refuses every token issued under that grant from its next request, including tokens already handed out. If the revocation check itself cannot run, the request is refused.

Sign-in and sessions

Sign in with a password, a passkey, Google or GitHub, and add an authenticator-app second factor. Workspace owners can require that second factor and cap how long a session lasts.

Offboarding

Workspaces can deprovision members over SCIM 2.0. Revoking a member removes their store access everywhere the database checks it.

// agent controls

What the agents may do, and who decides.

For each module, what waits for approval, what can be undone and what is final: governance and controls per module.
Modes · policies · approvals

You set the mode

The Marketing Brain can be off, propose for approval, rehearse without writing, or act on its own. Until you choose a mode, it changes nothing in your ad accounts.

Rules the agents cannot cross

Store action policies block or cap an action, for example never setting a daily budget above €25. A person can pre-approve one named low-risk action up to a daily limit; actions that move money are never eligible.

Biometric approval on mobile

In the mobile app, approving anything that moves money or cannot be undone needs Face ID or a fingerprint, and the server verifies the signed proof rather than trusting the phone.

One owner per field

Prices, catalog fields, theme files and campaign settings each have one owner at a time, enforced by a unique index in the database. Jobs that spend money, send mail or write to your store hold a per-store lock, so two copies of the same job never run at once.

A kill switch per store

One per-store switch stops the catalog, ads, customer-service, promotions, feed, reputation and social agents from writing or spending. It does not yet cover launch steps, theme deploys (scheduled or by the Theme Architect) and timed theme reverts, Creative Studio, or automatic refunds on pre-dispute alerts.

Decisions carry evidence

Catalog and price decisions are recorded with the evidence behind them. A price change, a draft or an archive can be reverted from its row; a refund or a sent reply is final.

// audit

What is recorded, and for how long.

How a developer reads the call log back, and the rate limits around it, is on limits and audit.

Every API and MCP call

Every tool call through the API or the MCP server writes an audit row before the response returns. Every tool listing is audited too.

Access logs are kept

API, account, operator and OAuth-grant logs cannot be deleted before they are a year old. A database trigger refuses an earlier deletion.

Yours to export

Workspace owners can export the workspace security log as CSV or JSON, alongside product, order and finance exports.

// data handling

Where your data lives and how it is protected.

Encryption

Supabase, which holds the database, and Vercel, which serves the web app, each state that they encrypt data at rest with AES-256 and use TLS in transit. Their pages are linked below. Our workers require TLS on their database connection by default, and calls from the database to the workers are signed so they cannot be forged.

Secrets

Tokens for connected services are stored encrypted in Supabase Vault, not in table columns. Magistry API keys are stored only as hashes. A health check alerts if a Shopify token ever appears in plain text, and if a connection's token stops working, you are alerted to reconnect.

Privacy requests

A customer erasure request from Shopify anonymises that customer's personal data across every table that holds it and deletes their attachments. A shop redaction anonymises personal data and keeps non-personal store history.

Uninstall and retention

When you uninstall, we revoke our Shopify credentials and stop the store's scheduled jobs; a daily job anonymises the shop's personal data once 48 hours have passed. Click identifiers lose their IP address and user agent after 90 days. Raw product-usage events are deleted six months after the end of the month they were recorded in; none is that old yet.

What our core providers state about themselves

These are the providers' own statements, on their own pages. They describe the providers, not an audit of Magistry.

  • Supabase (database)

    States it is SOC 2 Type 2 compliant and ISO 27001 certified, and that data is encrypted at rest with AES-256 and in transit with TLS.

    Source: supabase.com
  • Vercel (web hosting)

    States it has a SOC 2 Type 2 attestation and ISO 27001 certification, and encrypts data at rest with AES-256 and in transit with TLS.

    Source: vercel.com
  • Railway (background workers)

    States it is SOC 2 Type II certified and SOC 3 certified.

    Source: docs.railway.com
  • Stripe (card payments)

    States it is certified to PCI Service Provider Level 1, produces SOC 1 and SOC 2 Type II reports annually, and encrypts sensitive data in transit and at rest.

    Source: docs.stripe.com
  • Shopify (store platform and billing)

    States it is certified Level 1 PCI DSS compliant and has been issued SOC 2 Type II and SOC 3 reports.

    Source: www.shopify.com
  • Anthropic (AI models)

    States that by default it does not use inputs or outputs from its commercial products for training, and deletes them from its backend within 30 days, apart from the exceptions it lists.

    Source: privacy.claude.com
  • OpenAI (AI models)

    States that data sent to its API is not used to train or improve its models unless the customer opts in, and that abuse-monitoring logs are kept for up to 30 days.

    Source: developers.openai.com

// ai and model providers

What the models see.

No training on your data

Magistry does not train or fine-tune any model on your data. It calls model providers' APIs: Anthropic for the agents and the assistant, OpenAI for classification, text embeddings, translation, images and some drafting (product copy, feed titles, review replies and dispute rebuttals), Google's Gemini API to analyse creative video and audio, and fal for generative media.

Customer-service replies are drafted from the original message, so that text reaches the model provider in full. We do not currently send data to any tracing or error-monitoring service. If we enable LLM tracing, customer-service prompts are excluded and e-mail addresses and phone numbers are masked in other prompts.

Image similarity for market intelligence runs on our own servers; those images are not sent to a model provider.

// sub-processors

Who processes data for us.

The core providers are below. The full list of all 60, including the platforms you connect, gives each one's purpose, the categories of data it receives and its region, with a link per provider. It is the same list as the DPA's Annex C. Under the DPA we give thirty days' notice before adding or replacing a sub-processor.
  • Supabase

    Primary Postgres database, auth, storage, and Vault-encrypted secrets.

    Region: EU (eu-west-1)

  • Vercel

    Hosting for the dashboard and marketing website, with edge delivery.

    Region: Global edge network

  • Railway

    Compute for the backend worker and scheduled jobs.

    Region: EU (Amsterdam, europe-west4)

  • Anthropic

    LLM inference for the agents and the assistant, including customer-service reply drafting over inbound mail bodies and customer photographs. No training on customer data.

    Region: United States

  • OpenAI

    Embeddings, classification, translation of customer-service text and feed copy, drafting of product copy, feed titles, review replies and dispute rebuttals, and image generation. No training on customer data. Separately, OpenAI Ads — when you connect it: campaign, ad-group and ad metadata and performance reports, under your own ads API key; and, only when you choose conversion tracking for it, each paid order (order id, value, currency, hashed email and phone, the OpenAI click id) sent to OpenAI's Conversions API, and OpenAI's measurement pixel loaded on your storefront after the visitor's marketing consent.

    Region: United States

  • Google

    Gmail mailbox access for connected inboxes; Google Ads, Data Manager (hashed e-mail/phone and click ids on conversion upload), Analytics, Merchant Center, Search Console and Sheets when you connect them; Google Public DNS for domain checks; the Gemini API, which analyses the video and audio of creatives for the creative engine.

    Region: EU/US

  • fal

    Generative media for the creative studio: product video, image edits and instrumental music (ElevenLabs Music, run on fal). Receives the prompt and the product imagery a merchant chooses; no shopper or customer data is sent.

    Region: United States

  • Resend

    Transactional and customer-service email delivery.

    Region: EU/US

  • Stripe

    Subscription billing and invoicing for non-Shopify tenants (merchant billing identity; card data handled by Stripe). When a business connects its own restricted Stripe key in Magistry's books: read-only balance and payout reads for its bookkeeping.

    Region: EU/US

  • Shopify

    Commerce platform, billing, and payments. Card data is handled by Shopify and never reaches Magistry.

    Region: Global

  • GitHub

    Version control for storefront themes: each connected store's theme files are kept in a private repository in Magistry's GitHub organisation, to which the merchant is given access.

    Region: United States

// report a vulnerability

Found something? Tell us.

Email security@magistry.io with what you found and how to reproduce it. The same contact is published in machine-readable form at /.well-known/security.txt.

Please test only against your own account and stores, do not access or change other customers' data, and give us a chance to fix the issue before you disclose it.

For a personal-data breach, the DPA commits us to notify affected customers without undue delay and within 48 hours of becoming aware of it. Live system status is on the status page.

Contacts

Privacy and DPA
privacy@magistry.io

// contact

Running a security review?

Our answers to the common security-questionnaire questions are published, including where the answer is not yet. Send anything they do not cover to security@magistry.io.

privacy@magistry.io · privacy and DPA requests