Security
Shopify webhooks — All incoming Shopify webhooks are validated via HMAC signature verification using theX-Shopify-Hmac-Sha256 header before processing. Requests with invalid or missing signatures are rejected with a 401 response and never reach the handler.
Meta webhooks — All incoming Meta webhooks are validated via signature verification using the X-Hub-Signature-256 header before processing. Invalid signatures are rejected.
Both verifications use the app secret for their respective platform. Webhook payloads are never processed without a valid signature.
Shopify webhooks
Customer webhooks
customers/create
customers/update
Same structure as customers/create. All fields are included in the payload — Galantis diffs the incoming data against the stored record to identify changes.
customers/delete
customers/marketing_consent_updated
customer_tags/added
customer_tags/removed
Order webhooks
orders/create
orders/cancelled
Same structure as orders/create with cancelled_at and cancel_reason fields added:
orders/updated (used for shipping)
orders/updated payloads to drive the relevant automation triggers (for example, ORDER_SHIPPED when fulfillment data indicates a successful shipment). See Automations — triggers for the available triggers.
Product and collection webhooks
products/create
products/update
Same structure as products/create. Galantis processes the full payload — updated fields overwrite stored values, and inventory_quantity changes are checked for the 0→>0 Back-in-Stock restock pattern.
products/delete
collections/create, collections/update
collections/delete
Billing and app lifecycle webhooks
app_subscriptions/update
app/uninstalled
Handler: Tenant deactivation
GDPR webhooks
customers/redact
shop/redact
Meta webhooks
messages (inbound)
QUICK_REPLY button responses, the messages[0].type is "interactive" and the payload includes:
message_status (status update)
"status" values: "sent", "delivered", "read", "played", "failed".
For "failed" status, an "errors" array is included:
message_template_status_update
"event" values: "APPROVED", "REJECTED", "PAUSED", "DISABLED".
For "REJECTED", the "reason" field contains Meta’s rejection explanation.
Related guides
- Integrations — Shopify webhooks — Processing behavior and downstream effects
- Integrations — Meta webhooks — Processing behavior for Meta webhook events
- Automations — triggers — Which webhook events drive which automation triggers