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.

Quick start guide →

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 topicWhen Shopify sends itWhat you must do
customers/data_requestA customer asks the merchant for a copy of their dataExport that customer's data from your app and send it to the merchant
customers/redactA customer requests deletion (Shopify can delay delivery, including where recent orders require retention)Delete that customer's data from your app and databases
shop/redactThe 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.

  1. 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

  2. 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

  3. 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

  4. 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.toml snippet — each app gets its own values; do not reuse another app's snippet. Paste the snippet into your existing [webhooks] section in shopify.app.toml.

    In the console: Apps → [your app] → Setup → Copy URL + Copy snippet

  5. 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.

  6. 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

  7. 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.

Open this guide on its own page

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.

  1. You

    Register your app

    Sign up for a 7-day free trial, register your app, and test webhooks from the console.

  2. Delink

    Copy URL + snippet

    Your webhook URL and shopify.app.toml block are ready in the console.

  3. You

    Deploy

    Paste the snippet, run shopify app deploy, install on a dev store.

  4. Shopify

    Topics live

    All three compliance webhooks now point at Delink.

  5. You

    Send a test

    Hit Test webhooks in the console — works without a dev store.

  6. 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

  1. Arrives

    Shopify

    Compliance webhook sent

    Shopify POSTs a signed request to your Delink URL — a data export, customer deletion, or shop data redaction.

  2. Instant

    Delink

    Verified and logged

    200 OK, metadata recorded, workflow clock started. Optional Forward may POST the same signed request to your HTTPS URL.

  3. Optional

    Delink

    Forward 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.

  4. Your turn

    You

    Handle the request

    Use the shop domain and customer ID from the event log to export or delete data in your own app and databases.

  5. Optional

    Delink

    Daily digest

    Get a daily email while requests are still open or overdue.

  6. Done

    You

    Mark complete

    Close the request in the console once your deletion or export work is finished.

  7. Anytime

    Delink

    Export 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.

  1. Logged

    Event appears in your dashboard.

  2. Due

    30-day action window.

  3. Grace

    90 days after the workflow due date

  4. 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.

  1. app/uninstalled fires immediately when the merchant removes your app.
  2. Delink logs it in a dedicated uninstall monitor — running count plus per-store history in the console.
  3. Revoke API tokens, stop sync jobs, and cancel billing — don't wait for shop/redact.
  4. 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).