GUIDE · SECURITY
What Shopify secures for you, and what it leaves to you
For Shopify merchants on Basic, Shopify or Advanced who assume the platform covers security. Shopify covers the platform, checkout and card data, which reduces scope. It does not cover staff accounts, apps, theme scripts, DNS, exports or brand email. This page splits the responsibility, shows where the gaps sit and gives a 30-minute checklist. A Shopify security audit starts at $490.
The short answer. Shopify owns the platform: hosting, network, checkout, TLS, DDoS protection and the card-data environment behind PCI. You own what you put on top: staff accounts, app permissions, theme and tag JavaScript, domains and DNS, data exports, email authentication and customer communication. Most incidents start in the second list.
Who owns what, line by line
A shared row is two jobs. If neither side does it, it does not happen.
| Area | Owner | What it means in practice |
|---|---|---|
| Infrastructure and hosting | Shopify | Data centers, network and delivery. No server or log access. |
| Checkout and PCI scope | Shared | Shopify keeps checkout PCI DSS compliant. You complete the required self-assessment. |
| Card data | Shopify | Full card numbers stay in Shopify's payment environment. Do not collect them. |
| TLS certificate | Shopify | Shopify handles TLS for myshopify.com and custom domains. You keep assets on HTTPS. |
| DDoS | Shopify | Absorbed at Shopify's edge. You have nothing to tune. |
| Platform patching | Shopify | Shopify patches the platform, not your theme, apps or custom code. |
| Theme code | Merchant | Liquid, CSS and JavaScript are yours to change and break. |
| Third-party apps | Shared | Shopify reviews apps before listing. You pick the app, approve scopes, remove it. |
| Staff accounts and 2FA | Merchant | Every login and permission set is your process; Shopify supplies controls. |
| Custom domains and DNS | Shared | Shopify serves the domain. Your registrar and DNS decide if it can be taken over. |
| Email authentication | Merchant | SPF, DKIM and DMARC live in your DNS, not in Shopify. |
| Analytics and pixel scripts | Merchant | Every tag runs in customer browsers. You own the inventory. |
| Customer data exports | Merchant | Shopify provides CSV exports; scheduling, encrypting and deleting them is yours. |
| Fraud and chargebacks | Shared | Shopify flags suspicious orders; payment providers run disputes. You carry the loss. |
| Incident notification | Shared | Shopify posts platform incidents. Customer notification is yours. |
Plan features change; confirm questionnaire answers in your admin and current docs.
Staff accounts are the front door
Anyone with admin access can change prices, read customer data and install apps. Shopify splits permissions by section, so give each role only what it uses.
- One account per person. Shared logins make the log useless.
- Contractors get theme access, not settings. Support gets orders, not apps.
- Remove access on the last day and review quarterly.
Two-step authentication matters most. Shopify supports it and lets the owner require it, so turn it on, prefer an authenticator app, and check old accounts. See the staff account guide.
The owner's email is the reset path: put two-factor on that mailbox.
Apps are a permission decision
A Shopify app runs on the vendor's servers, holds an API token and can read or write whatever its scopes allow. Installing one is a decision about your data.
Read scopes first: a reporting app rarely needs write access, and read_orders is not write_orders. A custom app puts the credentials on you. Scopes are listed in Shopify's developer documentation.
Keep a register of apps, owners, scopes and use. Uninstall what has no owner, ask how long data is kept, and rotate credentials after staff changes. App launch requirements are a floor, not an audit.
Theme JavaScript is the widest merchant-side opening
Your theme is code you control. Shopify renders it, but nobody reviews the snippet you pasted or the tag container that loads eleven scripts. A compromised app or tag is a common merchant-side risk.
A storefront script can read form fields, rewrite a button and send data anywhere. Shopify constrains checkout pixels more tightly; that helps at payment, not on cart or account pages.
Inventory every script: theme files, app embeds, pixels and tag containers. Remove duplicates and use integrity hashes where supported. This is OWASP Top 10 territory, code you did not write, trusted without review. A strict content security policy is hard here, so use report-only.
Domains, DNS and records that outlive projects
Your registrar is the highest-value credential you own: whoever controls it can point the store anywhere. Turn on two-factor, a transfer lock and auto-renew, and keep recovery email on your own domain.
Domain takeover starts with an unverified record nobody owns: a subdomain pointed at a canceled tool, a stale CNAME, a test host that released the name. Shopify verifies ownership before connecting a custom domain in some cases, which closes its own path but not records aimed elsewhere. Shopify's domain docs cover connection, not the rest of your zone.
Shopify Markets can serve markets from different domains or folders. Each added domain is another certificate, DNS set and stale connection; remove it when the market is paused.
Exports are not backups
Shopify keeps its own copy of your data, but there is no point-in-time backup you can restore into a staging store. Recovery is the export you took before the mistake.
Schedule exports of products, orders and customers, download the theme before edits, and note which apps hold data. Encrypt and delete the files on a schedule: a customer CSV is personal data with worse controls.
Test one restore a quarter with a product CSV in a development store. An export you never opened is not a recovery plan.
Email authentication is your domain, not Shopify's
Attackers do not need to break in to phish your customers. They spoof your domain with a fake order message. DMARC makes that harder, and it is set in DNS.
Publish SPF for every sender, DKIM for each, and DMARC starting at p=none with reporting, then quarantine, then reject once reports are clean. If you use a custom sender, test an order after each change.
What you cannot do on Shopify
A review starts from what the platform lets you change, which on Shopify is less than on a self-hosted store.
- No WAF of your own inside the request path. A proxy sees only traffic you route through it, not Shopify's checkout, and is a delivery tool rather than a security layer.
- No server access, logs or file integrity monitoring. There is no shell or error log. Theme Liquid, app config and DNS are your levers.
- No fine-grained app permissions. OAuth scopes are broad and staff permissions section-based, so a support user with customer access sees every customer.
- No penetration test of Shopify itself. The platform is not yours to test; report issues through its bug bounty. Test your theme, custom app and configuration.
- Limited control of response headers. Storefront headers are set by Shopify. Some plan levels expose more options; a theme edit is not one. Check your plan first.
A 30-minute checklist, ordered by risk
Run these in order. The first three remove access; the rest reduce the chance you miss a change.
- Require two-step authentication for every staff account. Five minutes; it closes the most common path to orders.
- Cut each staff account to the sections its role uses and remove anyone who has left. Five minutes.
- List each app, its scopes and owner under Settings, then Apps. Uninstall what nobody can explain. Eight minutes.
- Search the theme for scripts and third-party domains, including app embeds and pixels. Five minutes.
- At your registrar, turn on two-factor, transfer lock and auto-renew, then delete unexplained DNS records. Four minutes.
- Download the theme and schedule a monthly export of products, orders and customers. Two minutes.
- Check your DMARC record. If there is none, publish one at p=none with a reporting address. One minute.
- Write down who contacts customers if the store is compromised. One minute.
These are checks, not fixes. If a step turns up something you do not recognize, stop.
What we check, and what we do not
A Keelpost Shopify review is a configuration review, not a platform test. We check staff accounts and 2FA, app scopes, tags, DNS, exports, and SPF, DKIM and DMARC. Audits are from $490, one-off and fixed scope.
Shopify care starts with Basic at $129 a month; Care at $249 adds scanning and hardening, and Store Care at $449 adds checkout monitoring. Support runs 09:00–18:00 GMT+8, Monday to Friday; we are not a 24/7 SOC.
We do not restore deleted orders, recover app data, or run 3am response. The WooCommerce security checklist covers WordPress; what a new Shopify build includes covers launch.
FAQ
Questions buyers ask before they email
Is Shopify PCI compliant, and does that make my store compliant?
Does Shopify back up my store?
Can I put Cloudflare or another WAF in front of Shopify?
Do I need a penetration test for a Shopify store?
Keep reading
The next question buyers ask
Security
Pentest vs Vulnerability Scan
The practical difference between a vulnerability scan, a security audit and a penetration test: depth, evidence, market cost and when to buy each.
Read the guideSecurity
WooCommerce Security Checklist
A 14-point WooCommerce security checklist: admin access, plugin hygiene, checkout hardening, headers, backups and logging, in the order that matters.
Read the guideNEXT STEP
Find out what is actually yours to fix.
Send the store URL and plan. We will reply within one business day with what a review covers and what it does not.