Skip to main content
This API has been created for merchants who wish to implement their own loyalty components in their Shopify store.

See a more detailed description of the loyalty API

Using this API, they can seamlessly synchronize active promotions and vouchers between Shopify and Voyado Engage, as well as display a customer’s loyalty data in their own front-end.
Loyalty API overview

Authorization method

The authorization method Bearer is used as part of a HTTPS header. The key is generated in the app settings section called “Headless API keys“.

Request

This is the request URL you will use:
POST https://live.voyado.eastsideapps.io/api/v1/contact-details
With these request headers:
  • Authorization: Bearer [YOUR_AUTH_KEY]
  • Content-Type: application/json
  • Accept: application/json
And one of these request body parameters:
  • shopify_customer_id: This is required if none of the other parameters (voyado_contact_id, email) are present.
  • voyado_contact_id: This is required if none of the other parameters (shopify_customer_id, email) are present.
  • email: This is required if none of the other parameters (shopify_customer_id, voyado_contact_id) are present.
Explore the various payloads below:
{
    "shopify_customer_id" : "7253944860994"
}
{
    "contact": {
        "shopifyCustomerId": 7253944860994,
        "voyadoContactId": "d07f7b26-f6e8-4bac-bc16-b0a4008c1ba6",
        "attributes": {
            "firstName": "John",
            "lastName": "Doe",
            "street": "Street 1",
            "careOf": null,
            "city": "Stockholm",
            "zipCode": "123 45",
            "countryCode": "SE",
            "country": "Sweden",
            "email": "john.doe@voyado.com",
            "mobilePhone": "+46123456789",
            "age": null,
            "birthDay": null,
            "externalId": "7253944860994",
            "socialSecurityNumber": null,
            "gender": null,
            "rfm": 79,
            "discoveryKey": null,
            "memberNumber": "326",
            "language": "en",
            "lang": null,
            "annualBirthDay": null,
            "isRegistrationCompleted": false,
            "registrationDate": "2023-10-23T10:30:07+02:00",
            "bonusPoints": 208,
            "secrecyMarked": false,
            "currentStore": {
                "id": "c26c0876-434e-42d3-b87c-b08100e15a8c",
                "name": "test",
                "externalId": "43"
            }
        },
        "bonusPoints": 208,
        "memberLevel": {
            "expires": "2024-10-23T00:00:00+02:00",
            "levelName": "Silver",
            "remainingToUpgrade": 139,
            "basedOnRewardPoints": 1708,
            "levelId": "silver"
        },
        "activeLoyaltyVouchers": [
            {
                "expiresOn": "2023-12-31T23:59:59+01:00",
                "id": "6f0e82ce-b985-488b-a603-132607267adb",
                "checkNumber": "0000000001731",
                "name": "Voucher",
                "value": {
                    "currency": "EUR",
                    "amount": 20
                },
                "localValues": [
                    {
                        "currency": "SEK",
                        "amount": 204.4
                    },
                    {
                        "currency": "GBP",
                        "amount": 22.68
                    }
                ],
                "bonusPoints": 500,
                "redeemed": false,
                "redeemedOn": null
            }
        ],
        "syncFailedActiveLoyaltyVouchers": [],
        "activePromotions": [
            {
                "id": "f0f58414-0b56-4b8a-9d83-b0a400af3145",
                "promotionId": "f30a8f6e-0cfd-458d-bea6-b0a400aee0d3",
                "externalId": null,
                "type": "Multichannel",
                "name": "20% off next order (Online discount)",
                "expiresOn": null,
                "heading": null,
                "description": null,
                "redeemed": false,
                "redeemedOn": null,
                "imageUrl": null,
                "link": null,
                "redemptionChannels": [
                    {
                        "type": "POS",
                        "valueType": "PERCENT",
                        "value": "20",
                        "instruction": null
                    },
                    {
                        "type": "ECOM",
                        "valueType": "EXTERNALOFFER",
                        "value": "RSX78CVHCX6X",
                        "instruction": null
                    }
                ]
            }
        ],
        "syncFailedActivePromotions": []
    }
}
This is an example response for a failed sync of active promotions (in this case the promotion is not found as a discount in Shopify).
"syncFailedActivePromotions": [
    {
        "id": "323a23f6-84cd-4d23-b733-b0ac0087a168",
        "promotionId": "113da8d2-3ffc-44d9-bf9f-b0ac00877ea1",
        "externalId": null,
        "type": "Multichannel",
        "name": "Discount test",
        "expiresOn": null,
        "heading": null,
        "description": null,
        "redeemed": false,
        "redeemedOn": null,
        "imageUrl": null,
        "link": null,
        "redemptionChannels": [
            {
                "type": "ECOM",
                "valueType": "EXTERNALOFFER",
                "value": "143513531",
                "instruction": null
            }
        ],
        "error": "DiscountCodeNotFoundInShopify",
        "errorCode": 409,
        "errorDescription": "Voyado contact ID: d07f7b26-f6e8-4bac-bc16-b0a4008c1ba6. Discount code '143513531' is not found in Shopify."
    }
]
This is an example of a failed sync of active reward vouchers (in this case currency conversion is missing).
"syncFailedActiveLoyaltyVouchers": [
    {
        "expiresOn": "2023-12-31T23:59:59+01:00",
        "id": "6f0e82ce-b985-488b-a603-132607267adb",
        "checkNumber": "0000000001731",
        "name": "Voucher",
        "value": {
            "currency": "EUR",
            "amount": 20
        },
        "localValues": [
            {
                "currency": "SEK",
                "amount": 204.4
            }
        ],
        "bonusPoints": 500,
        "redeemed": false,
        "redeemedOn": null,
        "error": "CurrencyMissing",
        "errorCode": 409,
        "errorDescription": "Missing currency 'GBP' for voucher '0000000001731'. Contact ID: d07f7b26-f6e8-4bac-bc16-b0a4008c1ba6."
    }
]