E-commerce platform native loyalty/ discounts



One of the most common integrations with Alpine IQ is for e-commerce service providers or in-house teams looking to build on top of Dutchie plus/ WordPress/ Shopify/ or another popular e-commerce template structure. Native POS redemptions of discounts also leverage the following integration structure.

The goal of this integration is to:

  • Prevent budtenders or bad actors from stealing customer loyalty points (Remembering a customer's phone number for e-comm discount theft at a later date, stealing cash from the drawer without applying discounts, etc.
  • Allow budtenders with a safe way to redeem discounts natively within POS systems
  • Create a way for native redemption of discounts tied to Alpine IQ global loyalty programs used by mutual customers
  • Make signing up new loyalty members work instantly while also displaying welcome gifts for redemption after pin code verification
  • Send us abandoned carts so that we can trigger revenue recapture campaigns

You can see examples of these endpoints being leveraged by real partners in the videos shown on the following pages:



Auth

  1. Create an integrations page in your app to let customers input their AIQ auth credentials



POS native flow

(Ignore this if you are an e-commerce vendor and continue below)

  1. Customer starts a transaction with a budtender in store
  2. Budtender clicks on a native button "Redeem discounts for customer"
  3. You call our endpoint when the button is pressed to verify the customer is there with their phone in hand (ownership). Endpoint = "/verify/wallet" sending the {"phone": "##########" }
  4. The customer provides the pin code sent to their phone. Budtender puts it into a UI popup "Customer pin code: <input field>"
  5. When the budtender places the pin code into the POS, you then you hit: Endpoint = "/view/wallet" sending the {"phone": "##########", "code": "1234" }
  6. Alpine IQ will then respond with a wallet object containing all available discounts for this customer as well as PUT url's to call. These PUT URLs should be hit when the budtender clicks a "Redeem this discount" + the customer has completely finished checking out. Do NOT call the PUT URL's until checkout has been completed.
  7. Please make sure to append the transaction ID to the end of the PUT url for native POS redemptions. DO NOT send it if you are an ecommerce integration.



MSO/ Enterprise support advice:

Many public entities rely on proper reporting of loyalty points values at the transaction level. AIQ clients often require that the "pointsDeduction" in our discount object below be reflected on the transaction within the POS. Eventually passing it down to transactional reports for public entity auditors.





E-commerce native flow:

  1. Customer arrives at e-commerce checkout page
  2. When a user puts in their phone number or you already have it as a stored customer Endpoint = "/verify/wallet" sending the {"phone": "##########", "email": "something@blah.com" }
  3. Alpine responds with either a success in which case we just sent the user a text with a special code “Your code to unlock rewards is: 1234”
or a "No customer exists with phone number error”. Meaning they aren’t signed up for this brands rewards program yet.

STOP: If no customer exists/ they aren’t in the rewards program yet. This is one of the highest revenue-generating setups. We highly recommend allowing customers to signup natively:

  1. Allow user to create a loyalty account by showing a toggle with the following fine print in the box:



“I consent to signup for the {{brand name}} rewards program where I will receive marketing communications. By doing so, I understand that I am allowing {{brand name}} and it's technology provider(s) to retain my personal contact details/ engagement history for use in personalized marketing. Opt out at any time by replying "STOP" to messages. Standard message and calling rates may apply.”

Replace "Rewards program" with "club program" for Canadian retailers/ stores.

2.) Once created, you can either decide to run them through the verification process, or you can now directly retrieve their wallet and skip 2FA since this is a new user using: Endpoint = "/wallet" sending the {"phone": "##########", "email": "nick@blah.com" }

If customer exists after either route:

  1. Wait for customer to receive 4 digit verification code. Allow customer to resend the verification code (in which you hit the same endpoint “Send Wallet Verification Request” again to refresh their code)
  2. Once code is inputted, hit "Retrieve wallet with verification code" with phone and code, and a wallet will be returned
Get a cake by its ID
GET
Code examples
Params
Curl
JSON
200
400



Get a cake by its ID
GET
Code examples
Params
Curl
JSON
200
400



Get a cake by its ID
GET
Code examples
Params
Curl
JSON
200
400





Get a cake by its ID
GET
Code examples
Params
JSON
200
404