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.

...

These are offers that are not managed through the loyalty engine. A market will use them when they do not have loyalty available or want offers that are not only for loyalty members.

Offer are what we use for coupons and discounts. Offers typically have their own plus in their respective POS map.

...

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!

 

...

Editing offers

Name

This is the name of the offer that will show in the platform, so must be edited according to your marketing guidelines.

Internal Name

The name that will be displayed in Sanity - it will help you quickly identify and organize your offers.

Localized Image

This is the image that is shown for the offer.

You will see a section for App and Kiosk, the reason for this is to give you the flexibility to set up different pictures for platforms where experience is different

Tip

Best Practices Tip

Remember choosing a picture without a background will look better, remove noise, and turn the guests' focus to the actual purchase 🍔 🍟

Image Description

This will be the text for the alt attribute on the image.

Expand
titleWhat is the alt attribute?

The alt attribute is the HTML attribute used in HTML and XHTML documents to specify alternative text (alt text) that is to be rendered when the element to which it is applied cannot be rendered.

It is also important for SEO purposes, as this description is what allows search engines (like Google) to connect this image to a search. By adding the Plant-based Whopper description, there is a chance users will find this image in Google Images, which can lead to traffic in the platform (wink)

Description

This is the description for the offer once clicked on.

Add Tags

This section is to add tags to your offer created in the tags section to be able to send these attributes to mParticle and in amplitude or other tools be able to create your cohorts more efficiently.

Example: Tag 1- 1$ off coupon, Tag 2- Beef Coupon

More Info

In some cases we want the offer to have its own disclaimer as it might be a particular one. Offers by default tend to display the disclaimer set in Feature-> Feature Disclaimers → Offer disclaimer. However, if this field “More Info” within the offer document is filled out it will overwrite the default disclaimer by the one set up in More Info.

How To Redeem

The explanation to guests of how to redeem the offer

Option

This is the benefit of the offer, eg the combo or item you will receive for redeeming the offer. This piece is key for the offer to work. Please follow the following guidelines.

  • Always create a combo for the offer benefit, no matter if it is a discounted item like Whopper for 1$ or a special promo like 3,99$ chicken fries.

  • Combo creation:

    • Name: ‘Offer – [Offer name]”

    • 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

    • 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:

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

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

...

    1. 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

Upsell Options

Add offers previously created that you want to be used as upsell. Any offer added here will be prompted as an upsell when the user clicks to redeem. With this feature, the brands will have the ability to offer the customer multiple up-sell coupons when they select a coupon.

Example:

Main Coupon :

  • 2$ Whopper

Upsell Coupons:

  • 3$ Whopper + Small Fries

  • 4$ Whopper + Nuggets

  • 7$ Whopper Meal

Short Code

Configure the code used for in-restaurant redemption.

Daypart

Configure the time of day the offer is available. More information on dayparts can be found here Dayparts

Rule Set:

When set up these conditions must be satisfied in order to use the offer.

  • 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 the limit is not included, 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
      • 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

Offer Price:

£1.99 would be 199

Vendor Configs

This is where the PLU and PLU configurations are done.

In your brand and country Sanity environment, you will see the Service Mode Groups (Pickup and Delivery) and POS used, as well as the Tablet system in place, in case some restaurants use a POS without order injection integration.

...

Note

In the example above, please note that rPOS will include the PLU of items for all Pickup service modes (Takeaway, Dine-in, Drive-thru, Curbside), whereas rPOS Delivery refers to the PLU of items for delivery only.

For each Service Mode Group (Pickup and Delivery), you will need to configure the correct PLU.

...

The Vendor Configs play a key role at our systems, as they are the bridge between the digital and the physical world. For that reason, we have created a comprehensive guide just for this topic.

 

 How to display the offers in the Front end?

Info

Features Offers → Main → Menu Configurations → Sorted Offers

Add the offers you want in the list, then depending don't the rulesets when fulfilled the offer will appear in the Frontend for users

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.

...

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

...

 

The offer doesnt show up

  • Check users loyalty card

  • Check evaluateUserOffers call

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