> ## Documentation Index
> Fetch the complete documentation index at: https://docs.digifist.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> Complete reference for every Shopify webhook registered by Galantis — topic and what each webhook powers in the platform.

Galantis registers webhooks across every major Shopify data domain at installation time. These webhooks are the primary mechanism for keeping Galantis data current — when something changes in Shopify, the corresponding webhook fires and Galantis processes the update asynchronously.

Webhook handling is resilient to temporary failures — a transient error does not cause a webhook to be permanently lost. Failed processing is retried automatically until it succeeds or exhausts the retry limit. All incoming webhooks are validated via signature verification before processing.

## What this covers

* Every registered webhook topic
* What each webhook powers in Galantis
* Security validation and retry behavior
* What happens when a webhook is missed

## Customer webhooks

| Topic                                 | What it does in Galantis                                                           |
| ------------------------------------- | ---------------------------------------------------------------------------------- |
| `customers/create`                    | Creates a new contact record; may enroll customer in `CUSTOMER_CREATED` automation |
| `customers/update`                    | Updates profile fields — name, phone, email, locale, tags                          |
| `customers/delete`                    | Removes the contact record                                                         |
| `customers/marketing_consent_updated` | Updates `marketing_state` on the contact record                                    |
| `customer_tags/added`                 | Adds tags to the contact record; may fire `CUSTOMER_TAGGED` automation trigger     |
| `customer_tags/removed`               | Removes tags from the contact record                                               |

## Order webhooks

| Topic              | What it does in Galantis                                                                                         |
| ------------------ | ---------------------------------------------------------------------------------------------------------------- |
| `orders/create`    | Creates an order record; enrolls qualifying customers in `ORDER_PLACED` automation                               |
| `orders/cancelled` | Updates order status; enrolls qualifying customers in `ORDER_CANCELLED` automation                               |
| `orders/updated`   | Detects fulfillment data; enrolls qualifying customers in `ORDER_SHIPPED` automation when fulfillment is present |

<Note>
  The `orders/updated` webhook covers all order update events in Shopify, not only shipping. Galantis specifically detects whether the update contains fulfillment data and only fires the `ORDER_SHIPPED` automation trigger when it does.
</Note>

## Product and collection webhooks

| Topic                | What it does in Galantis                                                                                                                                                |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `products/create`    | Creates a product record in Galantis; queues for Meta catalog push                                                                                                      |
| `products/update`    | Updates product fields, variant data, pricing, and inventory; detects `inventory_quantity` 0→>0 for Back-in-Stock trigger; queues updated product for Meta catalog sync |
| `products/delete`    | Removes the product record; removes from Meta catalog                                                                                                                   |
| `collections/create` | Creates a collection record in Galantis                                                                                                                                 |
| `collections/update` | Updates collection data and product memberships                                                                                                                         |
| `collections/delete` | Removes the collection record                                                                                                                                           |

## Billing and app lifecycle webhooks

| Topic                      | What it does in Galantis                                                                           |
| -------------------------- | -------------------------------------------------------------------------------------------------- |
| `app_subscriptions/update` | Processes plan changes, upgrades, downgrades, and subscription status updates from Shopify Billing |
| `app/uninstalled`          | Deactivates the workspace; stops all automation processing and message sending for the store       |

<Warning>
  The `app/uninstalled` webhook triggers immediate workspace deactivation. If the app is reinstalled, a new OAuth token exchange occurs and data may need to be re-synced. Active automations and campaign schedules from before uninstallation are not automatically re-activated.
</Warning>

## GDPR compliance webhooks

| Topic              | What it does in Galantis                                                                                     |
| ------------------ | ------------------------------------------------------------------------------------------------------------ |
| `customers/redact` | Sets the affected customer's `marketing_state` to `REDACTED`; initiates data erasure for the customer record |
| `shop/redact`      | Initiates full shop-level data erasure for uninstalled stores that have requested data deletion              |

These webhooks are sent by Shopify in response to GDPR data subject requests and merchant data deletion requests. See [Compliance — GDPR & Data Privacy](/whatsapp/compliance/gdpr-data-privacy) for the full context.

## What happens when a webhook is missed

Webhook delivery is not guaranteed — Shopify will retry failed deliveries, but a sustained outage or network issue can result in missed webhooks. When this happens, the Galantis record for affected entities will be stale until a corrective sync occurs.

Recovery options:

* **For product data** — trigger a manual full sync from **Catalog → Shopify Sync → Sync Now**
* **For abandoned checkouts** — the polling mechanism runs every 10 minutes and self-heals; no manual recovery is needed

## Related guides

* [Permissions](./permissions) — Shopify permissions that gate each webhook category
* [Abandoned Checkout](./abandoned-checkout) — The polling mechanism used instead of a webhook for checkout data
* [Catalog — Shopify Sync](/whatsapp/catalog/shopify-sync) — Manual sync as a webhook recovery mechanism for product data
* [Compliance — GDPR & Data Privacy](/whatsapp/compliance/gdpr-data-privacy) — GDPR webhook handling
