Skip to main content

Promotion and Voucher Management

This guide covers creating and managing promotion codes and vouchers from the admin interface.

Overview

Promotions and vouchers allow you to offer discounts and incentives to customers:

  • Promotions: Discount codes customers can apply
  • Vouchers: Gift cards and store credit with balances

Promotions

Promotions are discount codes customers can apply to their bookings.

Creating Promotions

Step 1: Basic Information

  • Promotion Code: Unique code (e.g., "SUMMER25")
  • Name: Display name
  • Description: What the promotion offers
  • Promotion Type: Percentage or fixed amount

Step 2: Discount Configuration

  • Discount Value: Percentage or amount
  • Maximum Discount (for percentages): Cap on discount
  • Minimum Spend: Required minimum booking amount

Step 3: Scope and Availability

  • Scope Type: Site-wide or product-specific
  • Scope ID: Which site or product
  • Start Date: When promotion becomes active
  • Expiration Date: When promotion expires (optional)

Step 4: Usage Limits

  • Total Usage Limit: Maximum times code can be used
  • Per Customer Limit: Maximum uses per customer
  • Stackable: Can combine with other promotions

Step 5: Visibility

  • Active: Enable/disable promotion
  • Public: Visible to customers or admin-only

Promotion Types

Percentage Discount

Discount as a percentage of booking total.

Configuration:

  • Type: Percentage
  • Discount Value: Percentage (1-100)
  • Maximum Discount: Optional cap

Example:

Code: SUMMER25
Type: Percentage
Value: 25%
Max Discount: €100
Minimum Spend: €50

Booking: €200
Discount: €50 (25% of €200, under €100 cap)
Final: €150

Fixed Amount Discount

Fixed discount amount regardless of booking total.

Configuration:

  • Type: Fixed Amount
  • Discount Value: Amount (e.g., 10.00)
  • Minimum Spend: Optional requirement

Example:

Code: SAVE10
Type: Fixed Amount
Value: €10
Minimum Spend: €30

Booking: €50
Discount: €10
Final: €40

Promotion Scope

Site-Wide Promotions:

  • Apply to all products at a site
  • Most common type
  • Easier to manage

Product-Specific Promotions:

  • Apply to specific products only
  • Targeted discounts
  • More precise control

Promotion Rules

Usage Limits

Total Usage Limit:

  • Maximum total uses across all customers
  • Example: "Use code 500 times total"
  • Prevents overuse

Per Customer Limit:

  • Maximum uses per individual customer
  • Example: "Once per customer"
  • Prevents abuse

Minimum Spend

Requirement:

  • Booking must meet minimum amount
  • Discount only applies if threshold met
  • Example: "€50 minimum for 10% off"

Maximum Discount Cap

For Percentage Discounts:

  • Limits maximum discount amount
  • Prevents excessive discounts
  • Example: "25% off, max €100 discount"

Stacking Rules

Stackable Promotions:

  • Can be combined with other stackable codes
  • Multiple discounts applied
  • Total discount may be limited

Non-Stackable Promotions:

  • Cannot combine with other codes
  • Only one promotion per booking
  • System prevents stacking

Promotion Priority

When multiple promotions are stackable:

  • Applied in priority order
  • Higher priority applied first
  • Lower priority applied after

Priority Configuration:

  • Set priority when creating
  • Higher number = higher priority
  • Used for stacking order

Managing Promotions

Editing Promotions

What You Can Edit:

  • Name and description
  • Discount value
  • Usage limits
  • Expiration date
  • Active status

Editing Limitations:

  • Code cannot be changed (create new instead)
  • Historical usage preserved
  • Active status can toggle

Deactivating Promotions

When to Deactivate:

  • Promotion period ended
  • Usage limit reached
  • Promotion no longer valid
  • Testing completed

Effects:

  • Code no longer works
  • Existing uses preserved
  • Can reactivate if needed

Promotion Analytics

Tracking Metrics:

  • Total uses
  • Total discount given
  • Average discount per use
  • Revenue impact
  • Popular codes

Viewing Analytics:

  • Promotion details page
  • Usage statistics
  • Performance metrics
  • Trend analysis

Vouchers

Vouchers are stored-value instruments like gift cards or store credit.

Voucher Types

Gift Cards

Prepaid vouchers customers purchase or receive.

Characteristics:

  • Fixed initial value
  • Balance tracked
  • Can be used multiple times
  • Balance persists until used

Store Credit

Credit issued from refunds or promotions.

Characteristics:

  • Issued automatically or manually
  • Balance from refunds
  • Can be used for bookings
  • Expires (if configured)

Creating Vouchers

Step 1: Basic Information

  • Voucher Code: Unique code (auto-generated if not provided)
  • Voucher Type: Gift card or store credit
  • Original Value: Initial balance
  • Site (optional): Site-specific voucher

Step 2: Usage Configuration

  • Usage Limit: Single-use or multi-use
  • Expiration Date (optional): When voucher expires
  • Customer (optional): Assign to specific customer

Step 3: Additional Settings

  • Active Status: Enable/disable
  • Notes: Internal notes
  • Metadata: Additional information

Bulk Voucher Creation

Create multiple vouchers at once for campaigns.

Bulk Creation:

  1. Specify quantity
  2. Set voucher properties
  3. Generate codes automatically
  4. Export code list

Use Cases:

  • Marketing campaigns
  • Gift card sales
  • Loyalty rewards
  • Bulk distribution

Bulk Options:

  • Number of vouchers
  • Value per voucher
  • Voucher type
  • Code prefix
  • Expiration date

CSV Export/Import

For large-scale promotion and voucher management, the system supports CSV export and import functionality.

Exporting Promotions

Export promotions to CSV or JSON format for reporting, backup, or external analysis.

Export Features:

  • Filter by status (active/inactive)
  • Filter by type (percentage, fixed_amount, etc.)
  • Filter by scope (site, product)
  • Filter by date range
  • Paginated results (max 1000 per request)

Export Columns:

ColumnDescription
idUnique promotion ID
codePromotion code
nameDisplay name
promotionTypeType (percentage, fixed_amount, etc.)
scopeTypeScope (site, product, booking)
discountValueDiscount amount or percentage
startsAtStart date (ISO 8601)
expiresAtExpiration date
usageLimitTotalTotal usage limit
currentUsageCountCurrent usage count
isActiveActive status
isPublicPublic visibility

Use Cases:

  • Generate campaign performance reports
  • Backup promotion data
  • Audit promotion history
  • Share data with external systems

Importing Promotions

Import promotions from CSV for bulk creation.

Import Process:

  1. Prepare CSV file with required columns
  2. Preview import to validate data without persisting
  3. Review errors and fix data issues
  4. Execute import to create promotions

Required CSV Columns:

  • code - Unique promotion code (3-50 characters)
  • name - Display name
  • promotionType - One of: percentage, fixed_amount, buy_x_get_y, bundle
  • scopeType - One of: site, product, booking
  • isStackable - Boolean (true/false)
  • priority - Number (0-100)
  • startsAt - ISO 8601 date
  • isActive - Boolean
  • isPublic - Boolean

Optional CSV Columns:

  • description - Promotion description
  • discountValue - Discount amount (required for percentage/fixed_amount)
  • minSpendAmount - Minimum spend requirement
  • maxDiscountAmount - Maximum discount cap
  • usageLimitTotal - Total usage limit
  • usageLimitPerCustomer - Per-customer limit
  • expiresAt - Expiration date (ISO 8601)
  • scopeId - Scope target ID
  • siteId - Site restriction

Example CSV:

code,name,promotionType,scopeType,discountValue,isStackable,priority,startsAt,isActive,isPublic
SUMMER25,Summer 25% Off,percentage,site,25,true,10,2025-06-01T00:00:00Z,true,true
SAVE10,Save €10,fixed_amount,site,10,true,5,2025-01-01T00:00:00Z,true,true

Validation Rules:

  • Code must be unique within tenant
  • Code must be 3-50 characters
  • Discount value: 1-100 for percentage, > 0 for fixed_amount
  • Priority must be 0-100
  • expiresAt must be after startsAt if both provided

Import Limits:

  • Maximum 1000 rows per import
  • Maximum 10MB file size

Exporting Vouchers

Export vouchers to CSV or JSON format.

Export Features:

  • Filter by status (active, redeemed)
  • Filter by type (single_use, multi_use, gift_card, loyalty_credit)
  • Filter by customer (email or ID)
  • Filter by date range (issued after/before)
  • Search by code
  • Paginated results (max 1000 per request)

Export Columns:

ColumnDescription
idUnique voucher ID
codeVoucher code
voucherTypeType (single_use, gift_card, etc.)
originalValueInitial value
currentBalanceRemaining balance
usageLimitUsage limit
currentUsageCountCurrent usage count
customerEmailAssociated customer email
isActiveActive status
isRedeemedFully redeemed status
issuedAtIssue date
expiresAtExpiration date

Use Cases:

  • Gift card inventory reports
  • Customer voucher statements
  • Balance reconciliation
  • Redemption analysis

Importing Vouchers

Import vouchers from CSV for bulk creation.

Import Process:

  1. Prepare CSV file with required columns
  2. Preview import to validate and see auto-generated codes
  3. Review errors and fix data issues
  4. Execute import to create vouchers

Required CSV Columns:

  • voucherType - One of: single_use, multi_use, gift_card, loyalty_credit
  • originalValue - Initial balance (minimum 0.01)

Optional CSV Columns:

  • code - Voucher code (auto-generated if empty)
  • usageLimit - Usage limit (defaults to 1 for single_use)
  • customerEmail - Customer email
  • customerId - Customer ID
  • expiresAt - Expiration date (ISO 8601, must be future)
  • promotionId - Link to promotion
  • siteId - Site restriction
  • redemptionNotes - Internal notes

Example CSV:

voucherType,originalValue,customerEmail,expiresAt
gift_card,50,customer@example.com,2026-12-31T23:59:59Z
gift_card,100,,2026-12-31T23:59:59Z
loyalty_credit,25,vip@example.com,

Auto-Generated Codes:

When code is empty, the system generates unique codes:

  • Gift cards: GC-XXXXXX
  • Loyalty credit: LC-XXXXXX
  • Single use: SU-XXXXXX
  • Multi use: MU-XXXXXX

Validation Rules:

  • Code must be unique within tenant (if provided)
  • Original value must be >= 0.01
  • Customer email must be valid format (if provided)
  • Expiration date must be in future (if provided)

Import Limits:

  • Maximum 1000 rows per import
  • Maximum 10MB file size

Best Practices for CSV Import/Export

Before Importing:

  1. Always use Preview first to validate data
  2. Review error summary for common issues
  3. Fix CSV and re-upload if errors found
  4. Check for duplicate codes in your file

Handling Import Errors:

  • Missing required field: Add the missing column/value
  • Invalid enum value: Use valid values from documentation
  • Duplicate code in batch: Remove duplicate rows
  • Code already exists: Use unique codes or remove duplicates

Export Best Practices:

  1. Use filters to export relevant subset
  2. Export regularly for backup purposes
  3. Use JSON format for programmatic processing
  4. Use CSV format for spreadsheet analysis

Managing Vouchers

Viewing Vouchers

Voucher List:

  • All vouchers with filters
  • Search by code
  • Filter by status, type, site
  • View balances

Voucher Details:

  • Current balance
  • Usage history
  • Issuance details
  • Redemption records

Adjusting Voucher Balance

Balance Adjustments:

  • Add credit manually
  • Refund to voucher
  • Correct errors
  • Issue credits

Adjustment Process:

  1. Open voucher details
  2. Click "Adjust Balance"
  3. Enter adjustment amount
  4. Add reason/notes
  5. Process adjustment

Adjustment Types:

  • Credit: Add to balance
  • Debit: Subtract from balance
  • Refund: Restore from booking refund
  • Correction: Fix errors

Voucher Status

Status Types:

  • Active: Can be used
  • Redeemed: Fully used
  • Expired: Past expiration date
  • Inactive: Disabled

Voucher Usage History

Tracking:

  • All uses recorded
  • Booking references
  • Amounts used
  • Remaining balance
  • Timestamps

Viewing History:

  • Voucher details page
  • Chronological list
  • Filter by date
  • Export history

Promotion Stacking

Understanding Stacking

Stacking allows multiple promotions to be combined.

Stackable Promotions:

  • Can be used together
  • Discounts compound
  • System validates compatibility
  • Total discount calculated

Non-Stackable Promotions:

  • Cannot combine
  • Only one code works
  • Highest priority applies
  • System prevents stacking

Configuring Stacking

Making Promotions Stackable:

  • Set "Stackable" flag when creating
  • Define stacking priority
  • Configure stacking rules
  • Test combinations

Stacking Priority:

  • Higher priority applied first
  • Lower priority applied after
  • Order affects final price
  • Total discount may be limited

Stacking Examples

Example 1: Stackable Promotions

Promotion 1: 20% off (stackable)
Promotion 2: €10 off (stackable)

Booking: €100
After Promotion 1: €80 (20% off)
After Promotion 2: €70 (€10 off)
Total Savings: €30

Example 2: Non-Stackable

Promotion 1: 20% off (not stackable)
Promotion 2: €10 off (not stackable)

Booking: €100
Best promotion: Promotion 1 (saves €20 vs €10)
Final: €80

Promotion and Voucher Best Practices

Promotion Strategy

Planning:

  • Set clear objectives
  • Define target audience
  • Plan timing
  • Budget for discounts

Monitoring:

  • Track usage rates
  • Monitor revenue impact
  • Measure effectiveness
  • Adjust as needed

Voucher Management

Issuance:

  • Document issuance reason
  • Track voucher recipients
  • Secure code generation
  • Maintain audit trail

Redemption:

  • Monitor redemption rates
  • Track usage patterns
  • Identify popular vouchers
  • Optimize campaigns

Security

Code Security:

  • Use secure code generation
  • Prevent code guessing
  • Monitor for abuse
  • Implement usage limits

Balance Security:

  • Protect voucher balances
  • Audit balance changes
  • Prevent unauthorized adjustments
  • Maintain audit logs

Common Scenarios

Scenario 1: Seasonal Promotion

Goal: Summer promotion for all products

Setup:

  1. Create percentage discount (25% off)
  2. Set scope to site-wide
  3. Set date range (June-August)
  4. Set usage limits
  5. Make stackable
  6. Publish code

Scenario 2: Product Launch Promotion

Goal: Discount for new product

Setup:

  1. Create fixed amount discount (€20 off)
  2. Set scope to specific product
  3. Set minimum spend requirement
  4. Set per-customer limit (once per customer)
  5. Limited time offer

Scenario 3: Gift Card Campaign

Goal: Sell gift cards for holidays

Setup:

  1. Create bulk vouchers
  2. Set voucher value (€50, €100, €200)
  3. Generate unique codes
  4. Set expiration (optional)
  5. Distribute codes
  6. Track redemptions

Scenario 4: Loyalty Rewards

Goal: Reward repeat customers

Setup:

  1. Issue vouchers as rewards
  2. Credit to customer accounts
  3. Set usage rules
  4. Track redemption
  5. Measure program success

Troubleshooting

Promotion Not Working

Check:

  • Promotion is active
  • Not expired
  • Usage limits not reached
  • Minimum spend met
  • Scope matches booking

Solutions:

  • Verify promotion status
  • Check expiration dates
  • Review usage limits
  • Confirm scope settings

Voucher Issues

Common Issues:

  • Balance insufficient
  • Voucher expired
  • Code not found
  • Already fully used

Solutions:

  • Check voucher balance
  • Verify expiration
  • Confirm code spelling
  • Review usage history

Stacking Problems

If Codes Won't Stack:

  • Check stackable settings
  • Verify priority order
  • Review stacking rules
  • Test individually

Next Steps