How Delink works
Shopify compliance webhooks — receipt, audit, and exportable event records
Apps distributed through the Shopify App Store must handle three mandatory privacy webhooks. For valid requests that reach Delink and are successfully verified and persisted, Delink creates an event record, runs a 30-day workflow clock, and supports event-record exports.
The requirement
Three mandatory webhooks App Store apps must handle
Depending on the processing, a Shopify app developer may act as a controller or processor. Shopify delivers compliance requests when customers exercise privacy rights or a store uninstalls — and expects configured endpoints to respond correctly.
Automated review fails when your endpoint is unreachable, HMAC verification rejects valid traffic, or compliance_topics is missing from shopify.app.toml. Common failure modes in the FAQ.
| Webhook topic | When Shopify sends it | What you must do |
|---|---|---|
| customers/data_request | A customer asks the merchant for a copy of their data | Export that customer's data from your app and send it to the merchant |
| customers/redact | A customer requests deletion (Shopify can delay delivery, including where recent orders require retention) | Delete that customer's data from your app and databases |
| shop/redact | The merchant uninstalls your app (Shopify generally sends this after its grace period) | Delete all shop-scoped data you stored for that store |
What Shopify does not give you
Webhooks only — no ops layer
Shopify defines the obligation and delivers signed payloads. Everything after receipt is on you.
Shopify requires
- A public HTTPS endpoint with all three compliance topics registered
- HMAC verification on the raw request body — 401 invalid, 200 valid
- Actual data deletion or export in your own databases and services
Shopify does not provide
- A compliance inbox or per-request dashboard
- Workflow countdowns, urgency grouping, or digest emails
- Exportable compliance event records for operational review and audits
- A durable log when deliveries fail or endpoints go down
Our solution
What Delink adds
Hosted ingest plus the ops layer Shopify leaves out — see the timeline below for the full flow.
- Application event log for successfully verified and recorded deliveries
- Dashboard urgency grouping for open workflow targets
- Complete / reopen workflow with topic-specific guidance
- Exportable compliance event record
- Forward — optional relay to your HTTPS endpoint (included on every plan)
- Daily workflow digest email on every plan
What Delink does not do
Delink does not delete customer data, compile GDPR exports, or certify legal compliance — you own fulfillment in your systems. Launch and live compliance.
Optional relay
Forward — keep your existing handler
Optional Forward forwards the exact Shopify compliance webhook to an HTTPS URL you choose — same body and headers, included on every plan. Paste your existing handler URL, enable Forward, and send a test event from the console — minutes, no SDK or second TOML entry.
- Same raw body, HMAC, and X-Shopify-* headers your handler already expects
- Adds X-Delink-Event-Id on every delivery
- Compliance topics and console test events only — not app/uninstalled
- We never store the raw body; Shopify remains the retry queue
- 2 second timeout — your URL must return 2xx; up to 4 Forward attempts per webhook via Shopify retries
- HTTPS URL reachable from Delink — not localhost or a private IP
Retry and timing
- 2 second timeout per POST to your URL — return 2xx to mark Forward delivered
- Shopify retries when Forward fails; Delink forwards again on each redelivery (up to 4 attempts per webhook)
- Attempts 1–3: your URL failure → Delink returns 502/504 to Shopify so Shopify retries with the same payload
- Attempt 4: Delink acks Shopify even if your URL still fails — that payload cannot be forwarded again
- Email notification on the first failure and when retries are exhausted
Configure per app in the console under Forward. See step 7 in the quick start guide.
Quick start
From signup to verified webhooks
Seven steps using the same Setup panel inside the console — no separate doc to hunt for. Follow the paths below; TOML and webhook URLs are always copied from your app's Setup accordion, not from this page. Step 7 is optional if you want Forward to forward webhooks to an existing handler.
Create your account
Click Start free trial, enter your email, and confirm the one-time code from your inbox.
In the console: Start free trial → enter email → confirm code
Use your free trial
After sign-in, register apps and test webhooks from the console. 7-day free trial. No card required. Subscribe on Billing anytime to keep access after trial ends.
In the console: Sidebar → Apps → register app
Register your Shopify app
On Apps, use Register app. Enter your app name and Shopify client secret (
shpss_…) from the Dev Dashboard (Dev Dashboard → Apps → your app → Settings → Client secret). Delink uses the secret to verify HMAC on incoming webhooks.In the console: Apps → Register app → App name + Shopify client secret
Copy webhook URL and TOML from Setup
Open your new app in the console and expand the Setup accordion. Copy the webhook URL and the
shopify.app.tomlsnippet — each app gets its own values; do not reuse another app's snippet. Paste the snippet into your existing[webhooks]section inshopify.app.toml.In the console: Apps → [your app] → Setup → Copy URL + Copy snippet
Deploy and install on a dev store
From your Shopify app project, run
shopify app deploy. Paste the webhook URL into your Shopify app configuration if your workflow requires it, then install the app on a development store so Shopify can deliver compliance webhooks.Confirm events in the log
Back on your app page, check the event log for verified deliveries. Trigger real compliance webhooks on your dev store, or use Test webhooks to send samples without a dev store. Toggle Show test events on that panel if you want samples to appear in the log. Your first real compliance webhook also starts billing. When Setup shows webhook verified, you're review-ready on ingest.
In the console: Apps → [your app] → Event log / Test webhooks
Optional: enable Forward
If you already have a compliance webhook handler, open the Forward tab on your app page. Paste your public HTTPS URL — not localhost or a private IP — enable Forward, and send a test event from Test webhooks. Delink verifies the webhook first, then forwards the same signed POST to your URL.
In the console: Apps → [your app] → Forward → URL + enable → Test webhooks
Optional: uninstall monitor
Delink also logs app/uninstalled with count and history — useful for churn signal, not required for review. How the uninstall monitor works.
Something not working?
Email us at support@getdelink.com. Tell us your app name, shop domain, and what you're seeing — we'll help you get unblocked.
Timeline
How it flows end to end
Setup, the compliance loop, retention, and what we store.
Get set up once
Register, paste a snippet, send a test — most developers are done in one sitting.
- You
Register your app
Sign up for a 7-day free trial, register your app, and test webhooks from the console.
- Delink
Copy URL + snippet
Your webhook URL and shopify.app.toml block are ready in the console.
- You
Deploy
Paste the snippet, run shopify app deploy, install on a dev store.
- Shopify
Topics live
All three compliance webhooks now point at Delink.
- You
Send a test
Hit Test webhooks in the console — works without a dev store.
- Delink
Test recorded
A successful console test creates an operational record; it does not guarantee app review or compliance.
- You
Register your app
Sign up for a 7-day free trial, register your app, and test webhooks from the console.
- Delink
Copy URL + snippet
Your webhook URL and shopify.app.toml block are ready in the console.
- You
Deploy
Paste the snippet, run shopify app deploy, install on a dev store.
- Shopify
Topics live
All three compliance webhooks now point at Delink.
- You
Send a test
Hit Test webhooks in the console — works without a dev store.
- Delink
Test recorded
A successful console test creates an operational record; it does not guarantee app review or compliance.
When Shopify sends a webhook
The loop below repeats for every compliance delivery.
ShopifydeliversDelinktracksYoufulfills in your systems
Arrives
ShopifyCompliance webhook sent
Shopify POSTs a signed request to your Delink URL — a data export, customer deletion, or shop data redaction.
Instant
DelinkVerified and logged
200 OK, metadata recorded, workflow clock started. Optional Forward may POST the same signed request to your HTTPS URL.
Optional
DelinkForward to your endpoint
When Forward is enabled, Delink POSTs to your URL (2s timeout, must return 2xx). Failed deliveries retry via Shopify — up to 4 attempts, then no replay.
Your turn
YouHandle the request
Use the shop domain and customer ID from the event log to export or delete data in your own app and databases.
Optional
DelinkDaily digest
Get a daily email while requests are still open or overdue.
Done
YouMark complete
Close the request in the console once your deletion or export work is finished.
Anytime
DelinkExport event record
Download a CSV record of received webhooks and workflow status.
How long events stay in your log
Visible through a grace period after the workflow due date, then queued for removal under the retention schedule.
Logged
Event appears in your dashboard.
Due
30-day action window.
Grace
90 days after the workflow due date
Archived
Rolls off your log.
Compliance events use the schedule above. Uninstall monitor events are counted from receipt instead. Full retention policy.
Webhook bodies include customer emails and order details — verified and parsed for limited metadata in memory, not intentionally written to our database. This minimizes additional stored copies but cannot eliminate security risk.
Saved to your event log
Operational metadata only — enough to track workflow clocks and export a record.
- Topic, shop domain, and timestamps
- 30-day Shopify workflow clock and status
- Opaque Shopify IDs (shop, customer, orders to redact)
- Lifecycle-managed application event log
Not intentionally saved to our database
Verified and parsed for limited metadata in memory, then discarded under the production design.
- Raw JSON webhook body
- Customer names, emails, phones, or addresses
- Order line items or other payload copies
Included on every plan
Uninstall monitor — early signal and uninstall reporting
Delink logs every app/uninstalled webhook in a separate panel — with a running count and per-store history so you can spot churn and revoke access early. Optional, not required for app review, and excluded from CSV export.
app/uninstalled
Early signal + uninstall log
Fires on uninstall. Logged in a dedicated monitor with total count and timestamped entries per shop — revoke tokens and shut down background work right away.
shop/redact
Mandatory compliance
Arrives after a grace period if the merchant does not reinstall. Delete all shop-scoped data — tracked with workflow clocks on every plan.
- app/uninstalled fires immediately when the merchant removes your app.
- Delink logs it in a dedicated uninstall monitor — running count plus per-store history in the console.
- Revoke API tokens, stop sync jobs, and cancel billing — don't wait for shop/redact.
- shop/redact typically follows ~48 hours later if they don't reinstall.
Plans from $8.99/mo
Solo is the shopify compliance webhook toolkit for one app (Event history through 90 days after the workflow due date). Multi covers up to three apps on one dashboard with the same features (Event history through 90 days after the workflow due date).