App exclusive promotions are a great way to get users to download and use the app. They can also be used to provide app users with early access to Sales.

An app exclusive promotion can be setup the same as any normal promotion within Sales Force Business Manager however this promotion should only be applied to a customer group that contains app users. Creating a customer group that targets app users will require some development by you on Sales Force Commerce Cloud 

(SFCC) as SFCC does not provide the necessary tools to do this by default. 

There are multiple ways to set up customer groups that target app users but one possible approach could be:

Setup a dynamic customer group in Commerce Cloud Business Manager and make sure that it is triggered by the Highstreet user agent. All requests from Highstreet to SFCC will have the user agent set to "Highstreet Backend". Hooks will then need to be implemented on the Open Commerce API (OCAPI) to ensure that the user agent is in a value that can be used for such a trigger. These hooks will have to be implemented on all endpoints that concern the basket.

Highstreet connects to the following basket endpoints:

General basket operations

POST /baskets

GET /baskets/{basket_id}

DELETE /baskets/{basket_id}

PATCH /baskets/{basket_id}

Basket item operations

POST /baskets/{basket_id}/items

PATCH /baskets/{basket_id}/items/{item_id}

DELETE /baskets/{basket_id}/items/{item_id}

Customer details operations

PUT /baskets/{basket_id}/customer

Address operations

PUT /baskets/{basket_id}/billing_address

PATCH /baskets/{basket_id}/shipments/{shipment_id}

PUT /baskets/{basket_id}/shipments/{shipment_id}/shipping_address

PUT /baskets/{basket_id}/shipments/{shipment_id}/shipping_method

Coupon operations

POST /baskets/{basket_id}/coupons

DELETE /baskets/{basket_id}/coupons/{coupon_item_id}

Payment information operations

POST /baskets/{basket_id}/payment_instruments

PATCH /baskets/{basket_id}/payment_instruments/{payment_instrument_id}

DELETE /baskets/{basket_id}/payment_instruments/{payment_instrument_id}