Back in stock headless
Caution
For Engage to trigger a back-in-stock email, all products (including out of stock products) must be present in the product feed that is connected to Engage. If a product is not in the feed, a BIS email cannot be sent for it.
When running Shopify as headless, back-in-stock functionality is achieved using this endpoint:
POST https://live.voyado.eastsideapps.io/api/back-in-stock/subscribe
The payload sent to this endpoint to define a subscription for a particular item looks like this:
{ "shop": "store-uk.myshopify.com", "locale": "en", "country": "GB", "preSelectStatus": false, "email": "john@example.com", "acceptsEmail": true, "acceptsSms": false, "hasPhone": false, "phone": "+4671234567", "variant": { "id": "47695659598128", "is_available": false, "sku": "jersey-XS-red" }, "product": { "id": "8386707489072" } }
The output to Engage will then look like this for the contact creation request:
{ "language": "en", "countryCode": "GB", "email": "john@example.com", "acceptsEmail": true, "acceptsSms": false, "mobilePhone": "+4671234567", }
And like this for the create subscription request:
{ "ContactId": "f5774867-1234-445f-85a4-af1200eced95", "Locale": "en-GB", "Sku": "jersey-XS-red", "ExternalId": "store-uk.myshopify.com" }
Field definitions
Field name | Type | Description |
---|---|---|
shop* | string | The shop's unique identifier on Shopify Example: "store-uk.myshopify.com" |
locale* | string | The locale setting of the merchant Example: "en" |
country* | string | The country code of the users location Example: "GB" |
preSelectStatus* | boolean | If marketing opt-in is preselected. Example: false |
email* | string | The email address of the user. Must be a valid email format. Example: john@example.com". |
acceptsEmail* | boolean | Indicates whether the user accepts Email communication Example: true |
acceptsSms | boolean | Indicates whether the user accepts SMS communication Example: false |
hasPhone | boolean | Indicates whether the user has provided a phone number. Example: false |
variant.id* | string | The variant's unique identifier. Example: "47695659598128" |
variant.sku* | string | The stock-keeping-unit associated with the variant. Example: "jersey-XS-red" |
variant.is_available* | boolean | Indicates whether the variant is available for purchase. Example: false |
product.id | string | The product's unique identifier Example: "8386707489072" |
Fields marked with (*) are mandatory.
More about preSelectStatus
The preSelectStatus field indicates whether the marketing opt-in checkbox is pre-selected on the back-in-stock subscription form. This boolean value is set by the merchant and determines the initial state of the marketing opt-in option for users interacting with the widget.
true: The marketing opt-in checkbox is now pre-selected, meaning customers will be opted into marketing communications by default unless they choose to opt out.
false: In this case the marketing opt-in checkbox is not pre-selected, meaning customers will need to actively opt into marketing communications.
The preSelectStatus is used to determine if an update to a customer's preferences is necessary. It ensures that any updates do not override consent previously given by the customer.
Data flow
Here is the data flow when working with back-in-stock subscriptions: