Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

Order-Level Content → Menu → Legacy Offers

Overview

What are Legacy Offers?

Picker Aspects are the different criteria a Guest can choose from to result in the combo or item which they would like to order.

What is this for?

Offer are what we use for coupons and discounts. Offers typically have their own plus in their respective POS map. (Note: The diff for discount values are and handled by RBI)

...

Step-by-step

The list below includes all the required fields to create offers.

Note: Examples are written in italics

a.     Menu → Offer → Duplicate a similar offer (or any offer, or create a new one)

  1. Name

  2. Image (App & Kiosk for the future)

  3. Description

  4. More info

  5. Option → if it is a menu item, insert it here; if it is a combo, come back to this later when combo is created

  6. Short Code

  7. UI Pattern → Standard Offer

  8. RuleSet: if more than one rule, group them all in the RuleSet “And”

  9. Offer Price: £1.99 would be 199

10.  Vendor Configs: for now, you can insert ‘ignore’ in all fields, but change to real PLUs before POS integrated version launch!

 

b.     Menu → Combo → Duplicate a similar combo (or any offer combo, or create a new one)

  1. Name: ‘Offer – [Offer name]”

  2. Main Item: Insert the main item of the offer – if offer is “£3.99 WHOPPER® Meal” Main item is Whopper. If the offer has 2 main items – “2 WHOPPER® Meals”, insert “Combo Item – item_52947” as the main item

  3. Options:

    1.   Combo Sides (this is a dummy for NCR config)

    2. Here we will include whatever combo slots we will create for this specific offer

      1. “£3.99 WHOPPER® Meal” - we will have 3 additional combo slots: Medium Combo Drinks and Regular Fries

      2. “2 WHOPPER® Meals” – we will have 6 additional combo slots: “Offer – Whopper”, “Offer – Whopper”, Regular Fries, Regular fries, Medium Combo Drinks and Medium Combo Drinks

Notes:

  • Make sure they are not the same combo slot, i.e., you can duplicate the combo slot and add both to the Combo

  • In order to show modifier options, make sure to go to each “Offer – Whopper” combo slots and change UI Pattern to “show”

4. Vendor Configs: for now you can insert ‘ignore’ in all fields except for Tablet which has to have the combo item id as a constant PLU (retrieve it from the path or by clicking on the 3 vertical dots at the top rightinspect id), but make sure you update the POS Vendors’ PLUs before POS integrated version launch!

 

c.     Menu → Combo Slot → Duplicate a similar combo slot (or any offer combo slot, or create a new one)

Name

Minimum Amount

Maximum Amount

Options: Minimum Amount, Maximum Amount, Default Amount & Menu Item

Vendor Configs: ‘ignore’ in all fields

d.     Menu → Combo → Add the Combo Slots you have created on the Options field (b.4.3.ii)

e.     Menu → Offer → Add the Combo item you have created on the Options field (a.5)

f.     Features Offers → Main → Menu Configurations → Sorted Offers

  • Add the offer you’ve just created to display it on the Website & App!

...

Title

...

Description

...

Notes

...

Example URL

...

Image

...

Used By

...

Name

...

This is the main text that will be used to display the offer

...

www.bk.com/offers/c4a21532-1cb7-45fa-808a-83d4d3077fda

...

Header Super Text

...

Localized Image

...

This is the main image that will display on for the offer

...

www.bk.com/offers/c4a21532-1cb7-45fa-808a-83d4d3077fda

...

Description

...

This is the text that will tell the user what the offers items are

...

www.bk.com/offers/c4a21532-1cb7-45fa-808a-83d4d3077fda

...

More Info

...

Anything entered here will show as the offer's disclaimer when the LaunchDarkly flag that enables custom disclaimers is set to true. If you add links to this text, you MUST set them to open in a new tab.

...

How To Redeem

...

Option

...

Short Code

...

Daypart

...

UI Pattern ( Standard Offer )

...

UI Pattern ( Locked Offer Progress Bar )

...

UI Pattern ( Locked Offer List )

...

Locked Offers Panel

...

RuleSet

...

Incentives

...

For Support

...

Offer Price

...

This is the total price for this offer

...

Market Price

...

This is the market price for this offer and can be used to show how much the items are being discounted

...

Vender Configs

...

This is where the the PLU configuration is handled. Take a look at the vendor configs section of the docs for more information on this

...

Background Image

...

This is the background image that the localized image sits on top of

...

www.bk.com/offers/c4a21532-1cb7-45fa-808a-83d4d3077fda

...

Depreciated

...

These are fields that we have used in the past. We need keep them for old versions of the sites could still be cached

Rulesets

  • * = pending

Date-Band - Set the start and end date of when the coupon is redeemable. Outside of these dates, the coupon will be filtered from the UI.

Day-of-week-Band - Boolean flag per day of the week. Those days that are set to true will be the only days on which the coupon shows on the UI / can be redeemed.

Time-Band - Set the start and end time of when the coupon is redeemable. Outside of these times, the coupon will be filtered from the UI – working to make it so that the coupon isn’t actually filtered, but rather shows a modal that says not redeemable until ____. Also outstanding work: must be able to read the local time of the restaurant / user to properly assess this prop

Cool-Down - Seconds until the user can redeem this offer again. Default is 0, so if not included, the user can reorder right away.

Limit - User can redeem this coupon ___ times per day/week/month/year. Must always specify the time interval here. If limit is not included, the the number of redemptions is unlimited.

Restaurant Group Restrictions: This will display the offer only in the store group that has been assigned to the offer.

Cart Property - The cart must satisfy the following restrictions in order for the offer to be redeemable (we check rulesets at price call and commit call). If you set the negate flag on this rule, it makes it so that these properties must not be true in order for the offer to be redeemable

subtotal rule - cart subtotal must be [< , >, =, etc.] ___ cents

service mode - service mode must be set to one of the following

Code Block
CATERING_PICKUP
CATERING_DELIVERY
CURBSIDE
DELIVERY
DRIVE_THRU
EAT_IN
TAKEOUT

 

platform - specify that user’s platform must be one of the following:

Code Block
app
kiosk
web

 

loyalty - (this will prob be deprecated.. turned out to have no use case for it.. or at least we do not yet)

 

Payment-Card-Type - specify that user’s payment must be one of the following:

Code Block
APPLE_PAY
AMEX
DINERSCLUB
DISCOVER
GOOGLE_PAY
JCB
MASTERCARD
VISA

 

First-Order - Boolean flag, if true offer is only redeemable to users that have never purchased before

Requires Assignment - this is a string field.. write anything in this field to make it apply (“ “ works). If true, the coupon has to be assigned via Braze webhook in order to appear for a guest to redeem. All Tim Hortons offers must have this rule.

Allow redemption without Login - this is a string field.. write anything in this field to make it apply (“ “ works). If true, users can redeem without having to sign in

AND - All of the sub-requirements of an AND rule must be true in order for the offer to be redeemable

OR - one of the sub-requirements of an OR rule must be true in order for the offer to be redeemable

  • *Order-History

- this is equivalent to a quest or locked offer - we are basing eligibility based on PAST purchase behavior.

  • All order-history offers must either have a date band (did the user satisfy the criteria between these dates?) or a past seconds requirement (did the user satisfy the criteria in the last week?)

    • Between dates are inclusive of the dates listed

    • past n seconds is calculated in SECONDS so you must convert if you want to calculate days, weeks

  • If the order of events matters, set the sequence matters flag to true

  • All top level rules will have an accompanying checkbox on the UI

Coupon Options (What is the benefit of the coupon?) - BK & PLK

 

'For Two' Coupons

Option is a combo with Sicom/NCR PLUs the same as the offer PLU. Carrols should have PLU type 'ignore'. Set the main item to 'Combo item' and set the item that comes with the coupon in the comboslots. WE CANNOT REPEAT A COMBOSLOT HERE!!! You must duplicate if you want to reuse preexisting work.

 

'1 item' Coupons

Option should be a combo with Sicom/NCR PLUs the same as the offer PLU. Carrols should have PLU type 'ignore'. Please set the main item to 'Combo item' and set the item that comes with the coupon in the comboslots. Use $1 Large Fries as a template

 

'Preexisting Combo' Coupons

Option should be a combo with Sicom/NCR plus the same as the offer PLU. Carrols should have PLU of the actual combo as it is sold normally. Please set the main item to the normal combo main item, and add the side/drink in the comboslots. Use $5 Crispy Chicken Meal as a template

 

'Wacky New Combo' Coupons

For any combo of items that we do not normally sell together, ie: 2 oreo shakes. Option should be a combo with Sicom/NCR plus the same as the offer PLU. Carrols should have PLU type 'ignore'. Please set the main item to 'Combo item' and set the items that come with the coupon in the comboslots. Use 2 oreo shakes as a template.

 

'In Restaurant Redemption Only' Coupons

Set the option to ‘Dummy Item for Restaurant Only Coupon -- DO NOT USE’ (_id: Lj4sBINzEO93P6iQCkyFCf)

 

'$ Off' Coupons

John/Jorge to detail how to set these up

 

Offer setup - TH

 

Content Side - Sanity Fields of Importance:

Sanity ID

ID in Sanity MUST match the Offer ID that Avanade uses. It is important to us that this is a unique ID - please create the offer in Sanity first then give the ID that was generated to the Avanade team to add to the database. You can find sanity ID for an offer by clicking on the 3 dots at the top right corner of the screen, and clicking inspect.

Once created the Sanity ID can be recorded on the loyalty offers sheet [To be deprecated following engine UI development]

Name, Image Description

All localized fields, may want to limit characters to 1-2 lines to avoid overcrowding

More Info

Legal terms go here, localized

How To Redeem

Steps users must follow in order to redeem an offer in store (or through the app, for that matter). Localized

Option

This is a reference field. You should ALWAYS link to Activation Offer

Short Code

You may use this to record the internal short code associated with the offer (ie: 1201A). Note - this is not the Sanity ID and Avanade must use the GUID mentioned above in the DB

Offer Price

Set to the offer price in cents: $1.99 = 199

Vendor Config

Must set all to ignore

Rulesets

Date-Band - Set the start and end date of when the coupon is redeemable. Outside of these dates, the coupon will be filtered from the UI. This date is what we show as the expiration date on the offer card

Requires Assignment - this is a string field. Write anything in this field to make it apply (“ “ works, your name works, literally anything in this field). If this is applied, the offer is not universal and will only be shown to users who have the offer assigned to their loyalty card

Adding the offer to AppData

Once the offer has been created, go to the AppData doc on the left panel in Sanity. Under the Menu Configurations drop down, you will find ‘Sorted Offers’. You must add the offer to sorted offers in order for it to render on the UI. You can control the order offers appear by moving them higher/lower in the list

CAN vs. USA

Note

Canada and the US do not share a Sanity dataset. You must create any offers that apply to the different countries in the appropriate dataset.

For CA, create them here: https://staging.menu.th.rbi.tools/desk/menu;offer

For US, create them here: https://staging.menu.th.us.rbi.tools/desk/menu;offer

 

Debugging:

The offer shows up, but get an error that ‘cannot checkout with this offer’

  • Look at the GQL call in the network tab to find orderId

  • Look to datadog to see when the error occurred

  • Likely an issue with how the TPN was set in the connector

 

The offer doesnt show up

  • Check users loyalty card

  • Check evaluateUserOffers call

See: /wiki/spaces/CA/pages/22282342

Page Tree
root@self
startDepth1