- DarkLight
Omnichannel: Shopper Managed Loyalty
- DarkLight
One of Yotpo's In-store loyalty solutions is integrating your Point of Sale and Yotpo's mobile in-store widget. The advantage of this flow is that the ownership is in the hands of the customer, and not the clerk. It also requires less integration with the POS itself. With this integration, your customers can:
- Earn points for purchasing in-store
- Redeem existing points to get discounts in-store.
- Create a loyalty account in the store.
In-store customer flow
When the customer walks into the store, they scan a QR code and get to our mobile redemption page. They easily log in (no need for a password), and they can redeem on their phone. They show the redemption to the clerk and get their discount.
How the integration works
These are the flows of information needed for the Shopper Managed Loyalty to work.
Step 1: Create in-store redemptions on Yotpo
In order to present redemptions on top of the POS, first Yotpo needs to know these redemption options. To create an In-Store redemption option on Yotpo, go to Rewards > Redeeming Points on the Yotpo admin. Click on "Create a New Coupon", choose the "Custom" Coupon option, and then select In-Store for where this coupon will be used.
When you create the custom coupon, you need to define a fixed number of points that will be deducted for that coupon.
Once you click save coupon, you will have the option to upload the coupon codes using a CSV file. For more details, check out our coupon guide.
Optional: Upload coupon codes via API
For using the API to upload coupons instead of a CSV, use our upload coupons API endpoint. This API endpoint needs to get the redemption_option_id . In order to get the redemption option ID, you need to click on the redemption that was created on Yotpo admin, and it will appear at the top.
Optional: Enable redemption reversal
When using our In-Store Widget, you have the option to Enable Redemption Reversal. This means that you will allow your customers to return the coupon they redeemed & receive their points back.
If you'd like to support this functionality, you'll need to:
- Listen for our Redemption Cancellation Request webhook.
- This webhook will notify you that a customer is attempting to return the coupon to receive their points back. We will pass all the necessary information in order for you to invalidate the correct coupon code.
- Use the Approve Redemption Cancellationendpoint.
- Once you've received our webhook and invalidated the coupon code, we'll need to be notified that this job is complete so we can continue returning the points to the customer
Step 2: Set up your In-store module
Next, let's build the widget your customers will use to redeem their points in-store! Head to our extensive In-Store Module article to get started.
Step 3: Send Yotpo order data
Once the order is placed on the POS, the order information needs to be sent back to Yotpo with the Create Order endpoint.
The order information needs to include three things:
- Order information - order id, the total amount in cents, and currency code are required.
- Customer information - customer identifier: email or phone number.
- Discount information - The discount code that was part of the order.
Order information
Customer information
Discount information
The discount information is used in the order for two purposes:
- Delayed point deduction. If you chose to only deduct points when a redemption was actually used, we must have the discount information in the order in order to know that we need to deduct points. Read more about Delayed Point Deduction.
- Reporting. We use the discount information in the order to know that the customer really used the redemption and then we are able to properly report on redeeming customers and other relevant metrics.
Step 4: Send Yotpo refund data
Refund data is important because usually, brands want to deduct the points that the customer received for a purchase if that purchase was returned and refunded. In order to retroactively deduct points for a refunded purchase in-store, we need to get refund data via the Ceeate Refund endpoint. The refund data must include two parameters - order id and refund amount (total amount cents). We use the order id to find the specific order (and customer) that earned the customer points/tier status/etc. This is how we are able to reverse these actions. Email is not required since the ID is enough for us to learn all of the information directly from the order.