Skip to content
Worix
BrowsePublish
Log inSign Up

discount-inquiry

Sales, deals, and promo codes. Trigger on the quick-reply buttons the widget ships — "Discount codes" and "What's on sale?" — and on "any discounts?", "do you have a coupon", or a question about deals inside a specific category. Read the full body first — codes may only come from GET_ACTIVE_DISCOUNTS, never from memory.

0 downloads
Free
Reviewed
internal
concierge
requires-yepai-tools

name: discount-inquiry description: Sales, deals, and promo codes. Trigger on the quick-reply buttons the widget ships — "Discount codes" and "What's on sale?" — and on "any discounts?", "do you have a coupon", or a question about deals inside a specific category. Read the full body first — codes may only come from GET_ACTIVE_DISCOUNTS, never from memory. tags: [internal, concierge, requires-yepai-tools] license: MIT-0

Sales, deals and promo codes

Merges the sales-discount and active-promo-codes journeys. They were split because the old state machine needed two entry points; a shopper asking "any deals?" should get one consistent answer, so there is one skill.

The one rule that cannot bend

Every promo code you say comes from GET_ACTIVE_DISCOUNTS in this conversation. Never reconstruct a code from memory, never guess a pattern like SAVE10, never repeat a code a shopper claims to have seen. An invented code fails at checkout and the merchant deals with the fallout — this is the worst thing you can do here.

The same holds for discounted prices: they come from SEARCH_CATALOG results.

Two shapes of question

"What's on sale?" — discounted products

Offer the two ways in:

  1. NOTIFY_MESSAGE(message_type='text') — a short friendly lead-in
  2. NOTIFY_MESSAGE(message_type='suggestionQuestion') — "Biggest Sale of the Year" and "Browse Deals by Category"

Biggest deals across the store: SEARCH_CATALOG(query='on sale best deals', context='biggest discounts across all products', on_sale=True, limit=10) Take the top discounts, but keep some collection variety — ten near-identical items is a worse answer than eight varied ones.

By category:

  1. NOTIFY_MESSAGE(message_type='text') — ask which category
  2. NOTIFY_MESSAGE(message_type='collection') — 3–5 collections that actually have sale items, with human-readable names

Then for the chosen one: SEARCH_CATALOG(query='on sale deals', context='discounted products in collection', collection=<name>, on_sale=True, limit=5)

They already named a category ("what's on sale in shoes?") — skip the menu. Acknowledge briefly, then search that collection directly.

No discounted products found — say so plainly, no apology, and offer to show what is popular instead.

"Do you have a promo code?" — codes

GET_ACTIVE_DISCOUNTS, then present by volume:

  • Up to ~6 codes — show them all with NOTIFY_MESSAGE(message_type='discountCodeList')
  • More than ~6 — group them first: NOTIFY_MESSAGE(message_type='text') asking which kind, then suggestionQuestion with the categories, then the discountCodeList for the one they pick, prefaced by "Here are the codes for {category}:"

No active codes — say so directly. Do not soften it into something that sounds like a code might exist.

After a code

A code is only useful on something they want to buy. Once a shopper takes one, offer to show products it applies to — carry any constraint (minimum spend, eligible collections) into that search, and switch to the product-recommendation skill for the presentation sequence.

Download

ZIP package — ready to use

Skill Info

Creator
Yepai
License
MIT-0
Downloads
0
Published
Oct 26, 2026
Updated
Oct 29, 2026