// security
How we protect your data
Many brands have built a spreadsheet, a few scripts or a dashboard themselves, and that is a fair way to start. Keeping it safe is a job of its own. Here is what Keel HQ does, why it matters, and what a homemade tool usually lacks.
Last updated: 2026-11-03
Your data stays in your workspace
Every record Keel HQ stores belongs to one workspace, and every query asks for that workspace by name. Code that reads or changes data goes through one set of workspace-scoped accessors, and a test fails the build if new code reaches around them. Another test creates two workspaces and proves one cannot read, count, change or delete the other's rows.
- Why it matters
- When a brand shares software with other brands, the worst failure is one brand seeing another's numbers. This is the check that stops it.
- What a homemade tool usually lacks
- A script built for one brand has no second tenant to leak to. The moment it serves a second store, a team, or a contractor, it needs the same discipline, and it rarely gets it.
People see and change only what their role allows
Each person in a workspace is an owner, admin, member or viewer, and can be limited to specific modules. Only the owner can change or remove another admin. When someone's role is lowered or removed, sensitive changes such as connecting an integration, creating an API token or inviting a teammate re-check that role at the moment of the write, not only when the page loaded. Our own staff cannot open the staff portal without a second factor (an authenticator app).
- Why it matters
- A contractor who left last month, or a viewer who should only look, should not be able to change your connections.
- What a homemade tool usually lacks
- A shared spreadsheet or a dashboard with one login gives everyone the same access, and removing a person means changing a shared password.
Keel HQ reads your accounts. It does not change them.
Every Shopify permission we ask for is a read permission (orders, products, inventory, customers, fulfillments, returns and payouts). Meta Ads asks for one permission, ads_read, and Keel HQ never pauses, edits or deletes an ad. When Shopify, Stripe or Postscript sends us a notification, we check its signature or shared secret before acting on it, and we turn away anything that does not verify.
- Why it matters
- A tool that can only read cannot be used to wreck your store or burn your ad budget, even if something goes wrong on our side.
- What a homemade tool usually lacks
- In-house scripts are often written with an all-powerful API token because it was quicker. That token then sits in a repo or a shared doc.
Your keys and tokens are locked in the database
Your AI key, your Shopify access token, and the keys and tokens for Mercury, Klaviyo, Meta Ads, Google Ads, Postscript and ShipStation are encrypted (AES-256-GCM) by the application before they reach the database. The encryption key is not stored in the database, so a database dump or a backup does not expose them. The key can be rotated with a built-in procedure. Keys and tokens are never shown back in the dashboard.
- Why it matters
- The most useful thing in a stolen backup is a working key to your bank feed or your ad account. Encrypting before storage takes that away.
- What a homemade tool usually lacks
- Keys in a config file, a shared password manager note, or a plain database column are common, and they end up in backups and in screenshots.
Limits on what any one caller can do
Cost-heavy and public routes (AI, reports, invites, sign-in) have rate limits. If the limiter itself cannot be reached, the request is refused rather than let through. Sign-in, one-time-code and password-reset attempts are limited separately.
- Why it matters
- A runaway script or a guessing attack should hit a wall, not your AI bill or your accounts.
- What a homemade tool usually lacks
- Rate limits are rarely built into a script until the first bill or the first attack.
AI that runs on your key, and read-only agent access
AI features run on your own Anthropic or OpenAI key, and a workspace uses one provider at a time. The data Keel HQ sends to the AI provider never includes Shopify customer email addresses, names or addresses. Free text you type into the assistant goes to the provider as written, so do not paste customer details into it. The Anthropic and OpenAI statements about not training on API data are on our privacy page. The MCP server that lets Claude, ChatGPT or Cursor read your numbers is read-only: every tool it offers can only look, and it can only reach the workspace that issued the token. Tokens are stored as hashes and can be revoked.
- Why it matters
- You decide which AI company sees your business data, and an agent you connect cannot change anything.
- What a homemade tool usually lacks
- Pasting an export into a chat window sends everything in it, including the columns you forgot were there.
Backups that are encrypted before they leave
The database is backed up every night. Each backup is encrypted with a public key before upload, so the storage that holds it receives only encrypted files. The backup job refuses to upload a file that is empty or less than half the size of the previous one.
- Why it matters
- A backup you cannot trust is the same as no backup, and a backup anyone can read is a second place to get breached.
- What a homemade tool usually lacks
- A Google Sheet's version history is not a backup of your data. A script's database often has none at all.
What happens when you leave
When you uninstall the Shopify app, Shopify tells us 48 hours later and we delete (within 30 days) your store's orders, customers, inventory and sales snapshots. A customer's deletion request removes their email from matching orders. Disconnecting Meta Ads deletes its token. Some derived business data, such as past monthly reports, is kept until you ask us to remove it. To request deletion, email privacy@keelhq.io and we will respond within 30 days. The privacy page has the full schedule.
- Why it matters
- You should know what is kept, for how long, and how to get it removed.
- What a homemade tool usually lacks
- A homemade tool rarely has a deletion path, and a customer's email can sit in old exports for years.
What we have not done
- Keel HQ holds no third-party security certification or audit report today. Everything on this page describes what we built, not what an outside auditor has attested.
- Data access is enforced in the application, on every query, not by database row-level security. The privacy page says the same.
Who else handles data
The companies that process data for us, and what each one receives, are listed on the privacy page. That page is the source of truth.
Report a security issue
If you think you have found a weakness, email support@keelhq.io with what you saw and how to reproduce it. Please do not access anyone else's data to prove a point.