Webhooks
There is a built method to listen for webhooks sent by Shopify back to your application. These are validated based on a secret you received when setting them up.
Setting Up Webhooks
- Head to your Shopify admin
- Click Settings > Notifications
- Scroll down to Webhooks and click Create Webhook
- Enter the URL as shown in the sections below.
- Leave the type as
JSON
and on the latest API. - If this is your first webhook, you will be provided a secret which you should add to your .env as
SHOPIFY_WEBHOOK_SECRET
If you are trying to test any webhooks locally you'll need to use a service like Ngrok to forward your localhost to a secure endpoint.
Collection Create
You should add a webhook on Collection Creation that sends the data to Statamic and queues the import of that one collection.
Your URL should point to the following endpoint:
https://YOURSITE/!/shopify/webhook/collection/create
Collection Update
Similarly, rather than running the full import to catch any changes to collections, you can add a webhook on Collection Update that sends any updated data to Statamic and queues a refresh of that collection.
Your URL should point to the following endpoint:
https://YOURSITE/!/shopify/webhook/collection/update
Collection Delete
If you want collections to be removed from Statamic whenever you delete them from Shopify, you can add a webhook in Shopify which tells the system to delete the collection.
Your URL should point to the following endpoint:
https://YOURSITE/!/shopify/webhook/collection/delete
Product Update
Similarly, rather than running the full import to catch any changes to products, you can add a webhook on Product Update that sends any updated data to Statamic and queues a refresh of that product.
Note that Shopify will send the update hook on product creation as well, so no separate webhook is required for that.
Your URL should point to the following endpoint:
https://YOURSITE/!/shopify/webhook/product/update
Product Delete
If you want products to be removed from Statamic whenever you delete them from Shopify, you can add a webhook in Shopify which tells the system to delete the products.
Your URL should point to the following endpoint:
https://YOURSITE/!/shopify/webhook/product/delete
Order Created
This will scan for all line_items
and refetch the product data.
Your URL should point to the following endpoint:
https://YOURSITE/!/shopify/webhook/order
Events
Each webhook listener also fires an event you can use to hook into with your own logic based on the payload received.
The available events are:
StatamicRadPack\Shopify\Events\CollectionCreate
StatamicRadPack\Shopify\Events\CollectionDelete
StatamicRadPack\Shopify\Events\CollectionUpdate
StatamicRadPack\Shopify\Events\CustomerCreate
StatamicRadPack\Shopify\Events\CustomerDelete
StatamicRadPack\Shopify\Events\CustomerUpdate
StatamicRadPack\Shopify\Events\ProductCreate
StatamicRadPack\Shopify\Events\ProductDelete
StatamicRadPack\Shopify\Events\ProductUpdate
StatamicRadPack\Shopify\Events\OrderCreate
Each event has one property $data
with the payload data decoded to a stdClass
.