How to Create a Promo Code

Think of it this way: A Promo Code is a customer-facing discount code that applies specific savings to purchases. It controls what discount is offered, who can use it, when it's valid, and what products or orders it applies to.


The Big Picture

Promo Code
├── Basic Information
│   ├── Internal Name (for your team)
│   ├── Code (what customers enter) ← UPPERCASE, 3-20 characters
│   └── Active Status (on/off)
├── Discount Effect (What Savings Applied)
│   ├── Percentage Off (e.g., 15% off)
│   ├── Fixed Amount Off (e.g., $10 off)
│   ├── Free Shipping
│   ├── Buy X Get Y Free (BOGO)
│   └── Buy X Get Y Discounted
├── Application Scope (What It Applies To)
│   ├── Entire Order
│   ├── Specific Products
│   ├── Specific Collections
│   └── Shipping Only
├── Valid Date Range
│   ├── Start Date & Time
│   └── End Date & Time
├── Usage Restrictions
│   ├── Max Total Uses
│   ├── Max Uses Per Customer
│   └── Minimum Purchase Amount
└── Store Restrictions (optional)

Step 1: Basic Information

Internal Name (Required)

A descriptive name for your team to identify this promo code.

Good Examples:

  • "Summer Sale 2025"
  • "New Customer Welcome - 15% Off"
  • "Black Friday Main Offer"
  • "Influencer Partnership - @fashionista"

Avoid:

  • "SUMMER25" (that's the code, not the internal name)
  • "Promo 1" (not descriptive)
  • "discount" (too generic)

Purpose:

  • Helps your team organize campaigns
  • Never shown to customers
  • Searchable in admin interfaces

Promo Code (Required)

The actual code customers enter at checkout.

Format Requirements:

  • 3-20 characters
  • Uppercase letters and numbers only (A-Z, 0-9)
  • No spaces, special characters, or lowercase

Good Examples:

  • "SUMMER25" (seasonal campaign, year)
  • "WELCOME15" (customer segment, discount amount)
  • "BOGO2024" (offer type, year)
  • "FASHION10" (influencer name/category, amount)
  • "FREESHIP" (clear benefit)

Invalid:

  • "summer25" (lowercase not allowed - will be auto-converted)
  • "SUMMER-25" (hyphens not allowed)
  • "25" (too short - minimum 3 characters)
  • "THIS-IS-A-VERY-LONG-CODE-2025" (too long - maximum 20 characters)

Naming Conventions:

  • Be Memorable: Easy for customers to type and remember
  • Be Clear: Hint at the benefit (FREESHIP, SAVE20, BOGO)
  • Include Context: Year, season, or campaign (SUMMER25, BF2024)
  • Keep It Short: 6-10 characters is ideal
  • Avoid Ambiguity: No similar-looking characters (0 vs O, 1 vs I)

Examples by Campaign Type:

  • Seasonal: "SPRING25", "FALL2024", "WINTER20"
  • Percentage Off: "SAVE10", "SAVE25", "OFF30"
  • Dollar Amount: "10OFF", "25DOLLARS"
  • Free Shipping: "FREESHIP", "SHIPFREE"
  • BOGO: "BOGO", "BOGOHALF"
  • New Customers: "WELCOME", "HELLO15", "FIRST20"
  • Influencer: "SARAH10", "ALEX20"

Active Status

Toggle to enable or disable the promo code.

Default: False (inactive)

Inactive (False):

  • Code cannot be used at checkout
  • Safe to set up and test before launching
  • Use to pause a campaign temporarily

Active (True):

  • Code is live and usable
  • Customers can apply it to orders
  • Subject to date range restrictions

Best Practice: Create codes as inactive, test them, then activate when ready to launch.


Step 2: Discount Effect

This defines what savings the promo code provides.

Discount Type Options

1. Percentage Off Order

Reduces the order total by a percentage.

Configuration:

  • Discount Value: Enter percentage (1-100)
    • Example: "15" = 15% off
    • Example: "25" = 25% off

Good For:

  • General sales and promotions
  • Loyalty rewards
  • Seasonal campaigns

Example:

  • 15% off summer sale: Value = 15
  • 25% off Black Friday: Value = 25

2. Fixed Amount Off Order

Reduces the order total by a specific dollar amount.

Configuration:

  • Discount Value: Enter amount in cents
    • Example: "1000" = $10.00 off
    • Example: "2500" = $25.00 off

Important: Amount must be in cents, not dollars.

  • $10 off → Enter "1000"
  • $25 off → Enter "2500"
  • $5 off → Enter "500"

Good For:

  • New customer incentives
  • Minimum purchase promotions
  • Flat discounts

3. Free Shipping

Removes shipping charges from the order.

Configuration:

  • No value needed (automatically applies free shipping)

Good For:

  • Cart abandonment recovery
  • Minimum order promotions
  • Customer appreciation

Note: Can be combined with minimum order requirements in "Applies To" section.

4. Buy X Get Y Free (BOGO)

Customer buys a certain quantity and gets additional items free.

Configuration:

  • Buy Quantity: Number of items customer must purchase
  • Get Quantity: Number of items customer gets free

Examples:

  • Buy 1 Get 1 Free: Buy = 1, Get = 1
  • Buy 2 Get 1 Free: Buy = 2, Get = 1
  • Buy 3 Get 2 Free: Buy = 3, Get = 2

Good For:

  • Inventory clearance
  • High-margin products
  • Volume sales

5. Buy X Get Y Discounted

Customer buys a certain quantity and gets additional items at a discount.

Configuration:

  • Buy Quantity: Number of items customer must purchase
  • Get Quantity: Number of items discounted
  • Get Discount Percentage: Discount on the "get" items (1-100)

Examples:

  • Buy 1 Get 1 Half Off: Buy = 1, Get = 1, Discount = 50
  • Buy 2 Get 1 at 25% Off: Buy = 2, Get = 1, Discount = 25

Good For:

  • Moderate promotions
  • Mix-and-match offers
  • Controlled discounting

Step 3: Application Scope (Applies To)

This defines what the discount applies to.

Scope Options

1. Entire Order (Default)

Discount applies to the entire order total.

Configuration:

  • Minimum Order Value (optional): Order must meet this threshold in cents
    • Example: "5000" = $50 minimum order

Good For:

  • General promotions
  • Loyalty rewards
  • Minimum spend incentives

Example:

  • 15% off orders over $50: Scope = Entire Order, Min = 5000 (cents)

2. Specific Products

Discount applies only to selected products.

Configuration:

  • Target Products: Select specific product documents

Good For:

  • Overstocked items
  • Featured products
  • Product launches

Example:

  • 20% off selected summer apparel

3. Specific Collections

Discount applies to all products in selected collections.

Configuration:

  • Target Collections: Select collection documents

Good For:

  • Category-wide sales
  • Seasonal collections
  • Brand-specific promotions

Example:

  • 25% off entire "Winter Collection"

4. Shipping Only

Discount applies to shipping costs only (typically for free shipping).

Configuration:

  • No additional settings

Good For:

  • Free shipping promotions
  • Shipping-specific discounts

Step 4: Valid Date Range

Controls when the promo code can be used.

Start Date & Time (Required)

When the promo code becomes active.

Format: Date and time (includes timezone from your system)

Examples:

  • Launch at midnight: "2025-06-01 00:00"
  • Launch at 9 AM: "2025-06-01 09:00"

End Date & Time (Required)

When the promo code expires.

Format: Date and time

Important: End date must be after start date (validated automatically)

Examples:

  • End at midnight: "2025-06-30 23:59"
  • End at 5 PM: "2025-06-30 17:00"

Planning Tips:

  • Flash Sales: Short duration (hours or single day)
  • Seasonal Campaigns: Multiple weeks or months
  • Ongoing Codes: Set far future end date
  • Limited-Time: Create urgency with tight windows

Step 5: Usage Restrictions

Controls how many times the code can be used.

Max Total Uses (Optional)

Maximum number of times this code can be used across all customers.

Leave blank: Unlimited uses Set value: Hard cap on total redemptions

Examples:

  • First 100 customers: Max Total Uses = 100
  • Limited flash sale: Max Total Uses = 50
  • Unlimited: Leave blank

Good For:

  • Limited inventory promotions
  • First-come-first-served offers
  • Budget-controlled campaigns

Max Uses Per Customer (Optional)

Maximum times a single customer can use this code.

Leave blank: Unlimited uses per customer Set value: Limit per customer

Examples:

  • One-time use: Max Uses Per Customer = 1
  • Once per month: Max Uses Per Customer = 1 (with monthly date ranges)
  • Unlimited: Leave blank

Good For:

  • New customer offers (1 use)
  • Preventing abuse
  • Fair distribution

Important: Requires customer identification (logged-in accounts)

Minimum Purchase Amount (Optional)

Minimum order value required to use this code (in cents).

Leave blank: No minimum Set value: Order must meet or exceed this amount

Examples:

  • $50 minimum: Enter "5000"
  • $100 minimum: Enter "10000"
  • $25 minimum: Enter "2500"

Good For:

  • Encouraging larger orders
  • Protecting margins on small orders
  • Tiered promotions

Note: This is different from "Minimum Order Value" in Application Scope. This is a global requirement.


Step 6: Store Restrictions (Optional)

Applicable Stores

Select which stores can honor this promo code.

Leave blank: Code works at all stores Select stores: Code only valid at chosen locations

Good For:

  • Store-specific promotions
  • Regional campaigns
  • Location-based marketing

Examples:

  • "Downtown Portland Only" promotion
  • "New Store Grand Opening" offers
  • Regional sales events

Step 7: Combination Settings

Allow Combination with Other Discounts

Whether this promo code can be stacked with other offers.

Default: False (no stacking)

False (Cannot Stack):

  • Code cannot be used with other promo codes
  • Code cannot combine with automatic discounts
  • Only one discount applies

True (Can Stack):

  • Code can be combined with other promotional codes
  • Code works alongside automatic discounts
  • Multiple savings apply

Caution: Allowing combinations can lead to unexpected deep discounts. Use carefully.

Examples:

  • Cannot Stack: "SAVE20" (20% off, exclusive)
  • Can Stack: "FREESHIP" (free shipping, works with other offers)

Step 8: Current Usage Tracking

Current Usage Count (Read-Only)

Automatically tracks how many times this code has been used.

Updated by: System increments on each redemption Used for: Monitoring campaign performance and approaching usage limits


Common Questions

"What's the difference between Internal Name and Promo Code?"

  • Internal Name: What your team sees ("Summer Sale 2025")
  • Promo Code: What customers enter ("SUMMER25")

Think of it as:

  • Internal Name = Campaign name for organization
  • Promo Code = Checkout code for customers

"Why must promo codes be uppercase?"

Uppercase makes codes:

  • Easier to read and communicate
  • Less prone to typos (no wondering about case)
  • Consistent across all platforms
  • Professional and clear

The system auto-converts to uppercase to prevent errors.

"What's the difference between 'Minimum Order Value' in Applies To vs. Usage Restrictions?"

They serve different purposes:

In Applies To (Application Scope):

  • Defines minimum for discount to apply to those items
  • Used with "Entire Order" scope
  • Example: "15% off orders over $50"

In Usage Restrictions (Minimum Purchase Amount):

  • Global requirement for using the code at all
  • Applies regardless of scope
  • Example: Code only works if cart total is $50+

You can use both together:

  • Usage Restriction: $50 minimum to use code
  • Applies To: Discount applies to entire order over $75

"How do BOGO offers work with variants?"

BOGO applies to quantities of items, not specific variants:

Buy 1 Get 1 Free:

  • Customer adds 2 units of any qualifying product
  • One is full price, one is free
  • Variants can mix (buy blue, get red free)

Scope matters:

  • "Specific Products": BOGO applies within those products
  • "Entire Order": BOGO applies to any items in cart
  • "Specific Collections": BOGO applies within collection

"Can I change a promo code after it's been used?"

Be cautious:

  • Code itself: Don't change (breaks customer bookmarks/shares)
  • Discount amount: Can adjust (affects future uses only)
  • Date range: Can extend or shorten
  • Active status: Can toggle on/off safely

Best Practice: Create a new code for significant changes rather than modifying active codes.

"What happens when usage limits are reached?"

Max Total Uses reached:

  • Code becomes invalid for all customers
  • Error message at checkout
  • Code remains in system (doesn't delete)

Max Uses Per Customer reached:

  • Code works for other customers
  • Specific customer gets error
  • Customer can use different codes

Recommendation: Monitor usage counts and deactivate or extend limits as needed.

"How does the system handle overlapping discount scenarios?"

If combination NOT allowed:

  • System applies best discount for customer
  • Only one promo code accepted
  • Automatic discounts may still apply based on settings

If combination allowed:

  • Discounts stack in order:
    1. Item-level discounts
    2. Order-level discounts
    3. Shipping discounts
  • Total savings calculated and applied

Naming Best Practices Summary

Internal Names

  • Descriptive and detailed
  • Include campaign context (season, year, audience)
  • Team-facing language
  • Don't use code as name

Promo Codes

  • UPPERCASE only (auto-converted)
  • 3-20 characters
  • Alphanumeric only (A-Z, 0-9)
  • Memorable and clear
  • Hint at benefit
  • No special characters or spaces
  • Not too short or too long
  • Avoid confusing characters (0 vs O)

Quick Checklist

Before activating a promo code, verify:

  • Internal name is descriptive for your team
  • Promo code meets format requirements (3-20 chars, uppercase, alphanumeric)
  • Promo code is unique (not already in use)
  • Discount effect is configured correctly
    • Type selected (percentage, fixed, free shipping, BOGO)
    • Values entered correctly (cents for fixed amounts!)
  • Application scope is set
    • Scope selected (order, products, collections, shipping)
    • Target items selected if applicable
  • Date range is configured
    • Start date is correct
    • End date is after start date
  • Usage restrictions are set (if desired)
    • Max total uses (optional)
    • Max uses per customer (optional)
    • Minimum purchase amount in cents (optional)
  • Store restrictions configured (if location-specific)
  • Combination setting is correct
  • Active status is OFF until ready to launch
  • Test the code before activating!

Campaign Examples

New Customer Welcome (15% Off)

Internal Name: "New Customer Welcome - 15% Off First Purchase"
Code: "WELCOME15"
Discount Effect: Percentage (15)
Applies To: Entire Order
Date Range: Open-ended (far future end date)
Usage Restrictions: Max Uses Per Customer = 1
Active: True
Allow Combination: False

Flash Sale (24 Hours, $25 Off $100+)

Internal Name: "Flash Sale June 2025 - $25 off $100"
Code: "FLASH25"
Discount Effect: Fixed Amount (2500 cents = $25)
Applies To: Entire Order, Min Order Value = 10000 (cents)
Date Range: June 15 00:00 - June 16 23:59
Usage Restrictions: None
Active: True
Allow Combination: False

Free Shipping (Always On)

Internal Name: "Free Shipping - Orders Over $50"
Code: "FREESHIP"
Discount Effect: Free Shipping
Applies To: Shipping Only
Date Range: Open-ended
Usage Restrictions: Min Purchase = 5000 cents ($50)
Active: True
Allow Combination: True (works with other offers)

BOGO (Buy One Get One Half Off)

Internal Name: "Summer BOGO - Buy 1 Get 1 Half Off T-Shirts"
Code: "BOGOHALF"
Discount Effect: Buy X Get Y Discounted (Buy=1, Get=1, Discount=50%)
Applies To: Specific Collection = "T-Shirts"
Date Range: June 1 - August 31
Usage Restrictions: None
Active: True
Allow Combination: False

Influencer Partnership

Internal Name: "Influencer @fashionista - 10% Off"
Code: "FASHION10"
Discount Effect: Percentage (10)
Applies To: Entire Order
Date Range: Open-ended
Usage Restrictions: None
Active: True
Allow Combination: True

Tips for Promo Code Management

Testing Codes Before Launch

  1. Create code with Active = False
  2. Configure all settings
  3. Create test order in staging/development
  4. Verify discount calculates correctly
  5. Check edge cases (minimum order, product restrictions)
  6. Activate when confident

Monitoring Active Campaigns

  • Check Current Usage Count regularly
  • Watch for approaching usage limits
  • Monitor redemption rates
  • Adjust date ranges if needed
  • Deactivate underperforming codes

Seasonal Campaign Planning

  • Create codes in advance
  • Set future start dates
  • Use consistent naming (SPRING25, SUMMER25, FALL25)
  • Plan overlap between campaigns
  • Archive expired codes

Preventing Code Abuse

  • Set Max Uses Per Customer for one-time offers
  • Use Min Purchase Amount to protect margins
  • Monitor unusual redemption patterns
  • Set Allow Combination = False for deep discounts
  • Link influencer codes to specific users

Managing Multiple Campaigns

  • Use descriptive Internal Names
  • Tag codes by campaign type
  • Document code purposes
  • Track performance separately
  • Deactivate when campaigns end (don't delete)

Was this page helpful?