In-Store Retail integration#

Creating an offline-only or an omnichannel loyalty program requires Antavo to communicate with the point-of-sale (POS) system. Depending on your infrastructure, the resulting integration can take multiple forms. Antavo offers out-of-the-box integrations with a selection of POS providers, while APIs support connecting the point of sale system of your choice to the Antavo Platform. Using the APIs allows enrolling customers to the loyalty program, seamlessly identification at the register; automatic processing and potentially rewarding in-store transactions.

Infrastructure#

There are two types of integration based on network topology:

Direct#

POS devices with direct internet access are capable of direct communicating with the loyalty program, by calling the Antavo Loyalty APIs; querying customer loyalty data and notifying Antavo regarding real-time purchases. Some instances, including ePOSNow or NewStore, can be fully integrated with the loyalty program.

In other cases, the integration can be created based on the Incentivized Purchase developer documentation.

Mainframe#

Restricted access or offline POS devices rely on a mainframe implementation, which collects information from POS devices and logs purchase data and other available loyalty data. This data is then transmitted to the Antavo Enterprise Loyalty Cloud Mainframes implementations usually run an asynchronous loyalty program where the mainframe sends purchase data and retrieves loyalty data via packets or using file exchanges. These integrations are typically handled by developers on both sides, with aspects outlined in the project’s Statement of Work.

Human resources#

POS system integration requires significant input from the following people:

  • Team member(s) with detailed knowledge of the target POS system

  • Team member(s) able to fully test the integration of the POS and Antavo systems

  • Store assistants operating the POS and/or personalization devices

Customer Profiles / Data Management#

Antavo constructs a 360-degree customer profile enriched with loyalty data for each customer. This allows Sales Associates to make every customer interaction unique and personalized across all stores.

Customer identification#

Customers can be identified either by searching in the POS system or by scanning a loyalty membership pass. This pass can be assigned to customers using Antavo’s Mobile Wallet Solution. The loyalty membership pass contains an encoded form of the customer’s unique identifier or membership number. Scanning the barcode or QR code on the membership pass results in the identifier of the customer which can be used to authenticate and access customer data in store.

Customers API#

image2

The customer profile can be accessed at the POS by calling the Antavo Customer API following a successful customer identification. This example requires API signing.

Request example

GET /customers/{customer_id}

Response example

HTTP/1.1 200 OK
Vary: Accept
Content-Type: text/javascript

{
   "id" : "loy_12345",
   "first_name" : "Sally",
   "last_name" : "Mustang",
   "email" : "mustang.sally@example.com",
   "nickname" : "Sally",
   "birth_date" : "1964-04-17"
   "gender" : "female",
   "language" : "en",
   "currency" : "USD",
   "status" : "active",
   "score" : 18140,
   "spent" : 11950,
   "reserved" : 100,
   "spendable" : 6090,
   "pending" : 1010,
   "autologin_token" : "ODlkZTljNWRjYjNiNDQyYzgyMzhmNj",
   "image_url" : "https:\/\/example-url/sally.jpg",
   "optin_at" : 1488476141,
   "last_login_at" : 1538655107,
   "updated_at" : 1539672282,
   "activities" : {
      "5a8bd9eb045f4954358b4568" : 1530614566,
      "5a8bdc5db41599834b8b4568" : 1530614567
   },
   "rewards" : {
      "5927ebccaa3d9d04658b4568" : 3,
      "57adb2a9471a360a408b4568" : 8
   },
   "properties" : {
      "favorite_color" : "black",
      "favored_categories" : "Women, Shoes, Dresses"
   },
    "purchase_total" : 2100,
    "purchase_count" : 3,
    "purchase_last_date" : "2018-07-31",
    "level" : {
        "id": "57bdb2a9771a360a40874568",
        "name": "Platinum"
    }
}

Webhooks#

image3

Antavo can use webhooks, web services calls, to forward any collected customer data to the POS systems. This event-driven messaging mechanism allows for low latency communication as the requests sent by Antavo can be captured, queued and asynchronously processed .

Webhook example

{
   "id": "57adb2a9471a360a408b4568",
   "timestamp": 1545150049,
   "ip_address": "10.46.72.120",
   "customer": {
       "id": "374582342",
       "email": "example@company.com",
       "score": 107,
       "spent": 52
   },
   "action": "point_add",
   "points": 13,
   "properties": {
       "reason": "Random bonus points"
   }
}

Loyalty Enrollment#

image0

Enrollment requests can be sent via the Antavo Events API using a custom Click to action (CTA) interface. This process requires the minimum required registration data to be available within the POS. This enables a cashier to use this button to enroll new loyalty scheme customers.

Request example

POST /events
Content-Type: application/json; charset="UTF-8"
{
    "customer": "7345252",
    "action": "opt_in",
    "data": {
        "email": "example.email@email.com",
        "first_name": "Example",
        "last_name": "Customer",
    }
}

Response example

{
    "events": [
        {
            "id": "5c1a363a68f9ef1d008b4579",
            "points": 10
        }
    ]
}

Rewarding purchases with points#

Antavo calculates the number of points given for purchases by processing purchases information submitted through the Events API. Each system is typically unique but there are two general scenarios:

Real-time purchases#

The POS or its related subsystems have an internet connection and send API requests directly to Antavo, notifying the loyalty program about purchases in real-time. Antavo instantaneously calculates the number of points given to the customer and they can then be used for future discounts or exchanged for rewards. The newly awarded points are immediately available and are accessible either by Antavo sending the data to the POS or in response to the next Customer API call by the POS.

Asynchronous purchases#

In this scenario the POS has no real-time connection with any external system and transactions are only processed at fixed intervals e.g., hourly or daily. Antavo can still be aware of these purchases either in batch API calls and/or daily feeds. Purchases can alternatively be exported and the Antavo Events Import mechanism can be used to issue rewards to customers.

In either case, Antavo still runs the same processes, calculates the number of points and even gives instant rewards, if the necessary criteria are met.

image2

Both cases submit the same event as an API request to Antavo.

Request example

POST /events
{
    customer: "unique_customer_id",
    action: "checkout",
    data: {
            transaction_id: "unique_transaction_id",
            total: <total_amount_of_purchase>,
            points_burned: <points_exchanged_for_discount>,
            items: [
                    {
                            product_id: "product_id",
                            product_name: "name_of_the_product",
                            product_url: "webstore_url_of_product",
                            price: price_of_a_single_item,
                            quantity: <amount_purchased_of_item>,
                            discount: <discount_applied_on_item>,
                            subtotal: <actual_amount_paid_for_item>
            },
            {
                            product_id: "product_id",
                            product_name: "name_of_the_product",
                            product_url: "webstore_url_of_product",
                            price: <price_of_a_single_item>,
                            quantity: <amount_purchased_of_item>,
                            discount: <discount_applied_on_item>,
                            subtotal: <actual_amount_paid_for_item>
            }
        ]
    }
}

Response example

{
    "events": [
        {
            "id": "5c1a363a68f9ef1d008b4579",
            "points": 10
        }
    ]
}

Point values of items#

The Antavo Enterprise Loyalty Cloud ships with a Rules Editor module which enables the Antavo Loyalty Program to be configured to give bonus points for purchases matching certain criteria. These can can include and are not limited to the store where the purchase was made, properties of a purchased item, meeting a purchase total threshold or the identified customer profile has matching properties, like levels, segments or lists etc.

This unique approach enables the Antavo Enterprise Loyalty Cloud to offer the ability to customize the awardable points on an individual customer, item and/or store basis. Antavo has methods that can be called, in real-time, from the POS and these give the POS the point value of the item currently selected. The point value mechanism can also handle whole carts and can be used to display a summarized view of all the points received for a purchase.

Request example

POST /extensions/automation/campaign-bonus
{
    customer: "unique_customer_id",
    action: "checkout",
    data: {
            transaction_id: "unique_transaction_id",
            total: total_amount_of_purchase,
            points_burned: points_spent_on_discount,
            points_burned: points_exchanged_for_discount,
            items: [
                    {
                            product_id: "product_id",
                            product_name: "name_of_the_product",
                            product_url: "webstore_url_of_product",
                            price: price_of_a_single_item,
                            quantity: amount_purchased_of_item,
                            discount: discount_applied_on_item,
                            subtotal: actual_amount_paid_for_item
            },
            {
                            product_id: "product_id",
                            product_name: "name_of_the_product",
                            product_url: "webstore_url_of_product",
                            price: price_of_a_single_item,
                            quantity: amount_purchased_of_item,
                            discount: discount_applied_on_item,
                            subtotal: actual_amount_paid_for_item
            }
        ]
    }
}

Response example

[
    {
            "automation": "5b9bd24f90a963a4088b456c",
            "points": 10
    }
]

Spending points#

Accumulated points can be used by a customer to either purchase rewards in the loyalty program or to provide instant discounts on purchases. Antavo offers both omnichannel coupon codes or instant discounts.

Instant discounts#

Instantaneous discounts can be calculated based on the number of points to be used and the monetary value of loyalty scheme points. These calculations can be performed locally in the POS as the unified customer profile contains the total number of points available for the customer and the conversion factor can be accessed by calling the Brand Settings endpoint of Antavo. Alternatively, the Antavo ELC can calculate and return this value as a customer property.

This discount and any exchange rules e.g., discount cap, can be combined into a simple interface in which the cashier can exchange points for instant discounts. If the discount is used, Antavo can be instructed to remove the necessary number of points in the purchase-representation sent to the Events API.

Coupon codes#

Antavo has many reward types, including downloadable rewards, event invites and coupon codes.

The rewarded coupon code for a customer-claimed reward can be formed in multiple ways:

  • Generated – Antavo can generate coupons code, based on simple templating logic

  • Selected – Antavo assigns coupons code to customers from an uploaded file

  • Remote generation – Antavo calls an external system for a coupon code

Coupon assignment notifications can easily constructed using the Antavo Rules Editor module and Once set up, Antavo can send, after every coupon reward claim:

  • The customer who requested the coupon

  • The coupon code

  • An expiration date of the coupon, where applicable

This data can later be stored and used to validate coupon codes or prevent fraudulent behavior.

This solution can create an omnichannel loyalty program where points can be interchangeably used between online and brick & mortar stores. The customer experience can be further enhanced by using Loyalty Passes and Beacons.