AppVerix

Security and incident response

Last updated: 15 October 2026

This page describes how AppVerix protects the data its Shopify apps handle and what we do if something goes wrong. It is part of our Data Processing Addendum. Questions: support@appverix.com.

1. Incident response plan

A security incident is anything that could expose, change or destroy personal data or let someone who should not have access into our systems.

  1. Detect. We find incidents through Cloudflare's account audit logs and Worker logs, Shopify notices, and reports from merchants or researchers sent to support@appverix.com.
  2. Contain. Stop the harm first: revoke or rotate the affected secrets and tokens, disable the affected account or route, or take the affected app offline.
  3. Assess. Work out what happened, which apps, stores and data were affected, and for how long, using the audit and Worker logs and the database's point-in-time history.
  4. Notify. If personal data was affected, we tell the affected merchants and Shopify within 72 hours of becoming aware, with what happened, what data, what we have done, and what we recommend. Merchants decide whether to notify their own customers and regulators; we give them what they need.
  5. Remediate. Fix the cause, restore data if needed (D1 Time Travel can restore to any minute in the last 30 days), and confirm the fix.
  6. Review. After the incident is closed we write down what happened, the timeline, the cause and what we are changing, and update this plan and our practices.

Report a suspected incident or vulnerability to support@appverix.com.

2. Staff access

3. Protecting data

AreaWhat we do
In transitAll traffic to our apps uses TLS.
At restData lives in Cloudflare D1, which encrypts everything it stores (including backup history) with AES-256 at rest.
BackupsD1 Time Travel keeps point-in-time history, so a database can be restored to any minute in the last 30 days.
SecretsShopify API secrets, email-provider keys and similar credentials are stored as Cloudflare Worker secrets, not in source code.
LogsApplication logs hold shop domains, order numbers and technical events. They do not hold customer names, email addresses or addresses. We checked the production logs and the code for this and fixed the one place that logged a recipient address.
Source controlReal customer data is not kept in our repositories. Tests use made-up data.
Outbound dataThe apps send data only to Shopify (for the store's own data) and to Resend (to deliver email). This is how the code is written; we do not claim a network firewall.
Data loss preventionTogether: data minimisation (apps store only what they need, and AppVerix Invoices does not store order contents), no personal data in logs or source control, secrets kept out of code, encrypted storage, point-in-time restore, automatic deletion of old data (see retention), and per-shop separation in every query.

4. Test and production data are separate

5. Access logging

6. Data retention

DataKept
Login session for a storeDeleted immediately when the app is uninstalled
A store's app dataWhile the app is installed; deleted when Shopify sends the shop erasure request (usually within 48 hours after uninstall)
A customer's dataDeleted when Shopify sends a customer erasure request
Return photos (Returns)Deleted about 30 days after the return is closed
Customer data request exports (Returns)Cleared from our compliance record after 30 days
Access audit log (Returns)12 months, then deleted. It holds no personal data (shop domain, action, record ID, time) and is not removed by a store erasure request
Backup historyUp to 30 days (D1 Time Travel), then gone
Privacy request recordsShop, request type, time and Shopify's customer ID or order numbers only, with no names or email addresses (the Returns export above is the only exception, and it is cleared after 30 days)

7. Contact

support@appverix.com