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:
- Item-level discounts
- Order-level discounts
- 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
- Create code with Active = False
- Configure all settings
- Create test order in staging/development
- Verify discount calculates correctly
- Check edge cases (minimum order, product restrictions)
- 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)