Business modulesShop

Promotions and vouchers

Shop/marketing manage automatic promotion rules separately from code-based vouchers.

Shop/marketing manage automatic promotion rules separately from code-based vouchers.

Where to find it

Web: open Shop. Desktop: Business → Shop, using the same record paths. Disabled modules or missing read permission remove the navigation entry.

Screen / tabWeb pathUsageDesktop
Promotions/discountsList, view or tabNative screen
Vouchers/discounts/vouchersList, view or tabNative screen
Record details/discounts/[id]Record or editorNative screen
Record details/discounts/vouchers/[id]Record or editorNative screen

Start working

Step 1

Create promotions and dated/scoped rules.

Step 2

Set voucher channel values, limits and scope.

Step 3

Add/import/remove codes.

Step 4

Review order discounts.

Promotions and vouchers
Promotions and vouchers

Settings

Option-by-option configuration and screen paths: Settings guide.

There is no separate settings route; the guide distinguishes record options from declared defaults.

Permissions and limits

Before you start

Vouchers are not automatically valid in all channels. Configuration lives on records, not a general settings page.

Role capabilities: Read (read), Write (write), Delete/archive (delete), Comment (comment).

Own-record restrictions apply equally to lists, records and Era. Record state or missing data can refuse an otherwise permitted action.

Ask Era

Show promotions starting next week.

Select relevant records for Era context. Era respects modules/roles; external or confirmation-sensitive work can stop for approval. Use era tools in the terminal to inspect currently available tools.

Automation and events

These declared events are available to module-event triggers. Subscribing does not configure the next operation; choose recipients, conditions and actions separately.

Operation details

The inventory includes record, configuration, visitor and background flows. IDs support Era/automation; not every row is a menu button. Asterisks mark required inputs. Unmapped rows do not imply a visible control.

Operation and IDInputsPermissionScreen or flow
Save a promotion · discounts.save_promotionPromotion, Name *, Type, Description, Starts, EndsWrite/discounts, /discounts/[id]
Delete a promotion · discounts.delete_promotionPromotion *Delete/archive/discounts/[id]
Save a promotion rule · discounts.save_promotion_ruleRule, Promotion, Name, Description, Channels, Off by, Value, Reward, Covers, Covers (AND / OR tree), Order condition, GiftsWrite/discounts/[id]
Delete a promotion rule · discounts.delete_promotion_ruleRule *Write/discounts/[id]
Save a voucher · discounts.save_voucherVoucher, Name, Applies to, Off by, Usage limit, Starts, Ends, Once per order, Once per customer, Each code once, Staff only, Minimum items, Countries, CodesWrite/discounts/vouchers, /discounts/vouchers/[id]
Delete a voucher · discounts.delete_voucherVoucher *Delete/archive/discounts/vouchers/[id]
Set a voucher’s value per channel · discounts.set_voucher_channelsVoucher *, Channels *Write/discounts/vouchers/[id]
Limit a voucher to part of the catalogue · discounts.set_voucher_catalogueVoucher *, Products, Variants, Categories, CollectionsWrite/discounts/vouchers/[id]
Add voucher codes · discounts.add_voucher_codesVoucher *, Codes, How many to generate (0–50), PrefixWrite/discounts/vouchers/[id]
Remove voucher codes · discounts.delete_voucher_codesVoucher *, Codes *Delete/archive/discounts/vouchers/[id]
Import voucher codes · discounts.import_voucher_codesVoucher *, Codes *Write/discounts/vouchers/[id]
Announce a promotion starting or ending · discounts.announce_promotionPromotion *WriteRecord/API/visitor flow; no separate screen button mapped

Technical sources

packages/os-kernel/src/modules/discounts.ts, packages/os-kernel/src/modules/index.ts, apps/studio/lib/os/navigation.ts, apps/studio/lib/os/settings-groups.ts, apps/era-station/apps/web/src/era/business/screens.ts.

Screen pictures

© 2026 Era. Era documentation. Something missing or wrong? Write to us: [email protected]