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:
