Promo codes let customers apply discounts at checkout. Each code can be configured with a discount type, validity window, usage limits, and advanced targeting rules to control exactly when and where it applies. The page also includes analytics cards and an AI-powered suggestion engine.
Dashboard overview
The top of the promo codes page shows four stat cards:
| Card | What it shows |
|---|---|
| Total Codes | Number of active promo codes |
| Total Redemptions | Combined usage count across all codes |
| Active Codes | Codes currently within their validity window |
| Expiring Soon | Codes approaching their expiry date |
A bar chart below the stats shows redemption trends over time.
Creating a promo code
- Click + New Promo Code.
- Enter the code (e.g., SUMMER25). Click the auto-generate button to create a random code.
- Add a description for internal reference.
- Choose the discount type:
| Discount type | How it works |
|---|---|
| % Discount | Percentage off the booking total (e.g., 25% off) |
| $ Discount | Fixed dollar amount off the booking total (e.g., $50 off) |
- Set the discount value (the percentage or dollar amount).
- Set the usage limit -- maximum total redemptions for this code.
- Set the expiry date -- the code is valid through the end of that calendar day in your store's timezone. A code that expires on July 21 still works all day on the 21st and stops at midnight local time, not at the start of the day.
You can also set an optional minimum spend (the pre-tax subtotal of rental plus add-ons a customer must reach before the code applies). Customers below the minimum are told how much more to add.
Advanced targeting
Fine-tune which bookings qualify for the discount using optional targeting fields:
| Targeting rule | Description |
|---|---|
| Location | Restrict the code to a specific location. Leave empty for all locations |
| Inventory | Apply only to certain inventory items. Select "All Inventory" or pick specific items |
| Day of week | Limit to specific days (e.g., Monday-Thursday for weekday-only discounts) |
| Exclude add-ons | When enabled, the discount applies only to the base rental price, not add-on items |
| Affiliate | Tie the code to a specific affiliate's tracking URL for attribution |
| ID.me verification | Require ID.me identity verification to use the code. Restrict to specific groups: Veteran, Active Duty, Reservist, Military Family, or Gold Star Family |
Affiliate-linked codes
When you select an affiliate from the dropdown, the code is automatically linked to their tracking URL. Bookings made with the code are attributed to the affiliate for commission purposes. Use the Generate Affiliate Code button to auto-create a code using the affiliate's name.
Flash offers
A flash offer is a regular promo code with a countdown timer attached. When a visitor opens your public booking page, an urgency banner appears at the top showing the offer text, the code to use, and a live countdown. The code only works while the timer is running, which creates a "book now" incentive without you having to babysit the promotion.
Any promo code becomes a flash offer the moment you set a flash timer on it. Everything else about the code (discount type and value, usage limit, expiry date, and all the targeting rules above) works exactly the same.
Turning a code into a flash offer
In the promo code form, fill in these two fields:
| Field | What it does |
|---|---|
| Flash timer (minutes) | The length of the countdown, in whole minutes. Setting any number above zero turns the code into a flash offer. Leave it empty for a normal promo code. |
| Flash banner text | The message shown next to the countdown, for example "Save $25 on your rental if you book in the next 2 minutes." Required for the banner to appear. |
Both fields must be filled in for the banner to show. A flash timer with no banner text will not surface an offer.
How the countdown behaves
- The countdown starts the moment a visitor's booking page loads the offer, not when you create the code. Each visitor gets their own fresh timer.
- The timer counts down in minutes and seconds and turns red in the final 30 seconds.
- The countdown keeps running as the visitor moves between pages in the same browser session, so navigating around your booking flow does not reset it.
- When the timer reaches zero, the banner disappears and the code stops working for that visitor.
What shows to customers, and enforcement
The banner displays your banner text, the code to enter at checkout, and the live countdown. The discount is applied only if the booking is submitted while the timer is still running. This is enforced on our servers, so a customer who copies the code and comes back later will be told the flash offer has expired, even though the discount amount is entered at checkout.
Only one flash offer is surfaced on the booking page at a time. An offer will not appear if it has expired, hit its usage limit, or (when the code is restricted to a specific location) does not match the location the visitor is booking. To end a flash offer early, clear the flash timer field to turn it back into a normal code, or delete the code.
Managing promo codes
The promo code table shows all codes with their key details:
| Column | Description |
|---|---|
| Code | The promo code string |
| Description | Internal description |
| Discount | Type and value (e.g., "25% off" or "$50 off") |
| Usage | Current redemptions vs. usage limit |
| Expiry | Expiration date |
| Status | Active, expired, or usage limit reached |
| Actions | Edit or delete the code |
Click Edit to modify any field on an existing code. Click Delete to permanently remove a code (requires the promo_delete permission).
AI suggestions
Click the AI Suggestions button to activate the AI recommendation engine. It analyzes your booking patterns -- slow days, seasonal dips, underperforming inventory -- and generates promo code suggestions that target those gaps.
Each suggestion includes:
- A recommended code name
- Discount type and value
- Targeting rules (days, inventory, dates)
- Rationale explaining why the suggestion was made
Review the suggestions and click Activate to create the code with one click.
Permissions
| Permission | Required for |
|---|---|
promo_create | Creating and editing promo codes |
promo_delete | Deleting promo codes |
Code limits
Your plan includes a maximum number of active promo codes, controlled by the maxDiscountCodes setting. The current limit is shown when you approach it. Deactivate or delete expired codes to free up slots.
Promo codes are case-insensitive, so SUMMER25 and summer25 both work. Track each code's redemption count and revenue impact from the table. Set codes to auto-expire so you do not have to remember to deactivate them. Combine promo codes with affiliate tracking for full attribution visibility.
Code not working at checkout -- Check that the current date falls within the valid window, the usage limit has not been reached, and the booking meets the targeting restrictions (location, inventory, day of week). If ID.me is required, the customer must complete verification first.
Hit the promo code limit -- Your plan has a maximum number of active codes. Deactivate or delete expired codes to free up slots, or contact support to increase the cap.
Discount not applying to add-ons -- If the "Exclude add-ons" flag is enabled on the code, add-on items are intentionally excluded from the discount.
Affiliate not getting credit -- Verify the affiliate is linked to the promo code in the targeting settings. The customer can either use the affiliate's tracking URL or enter the linked promo code -- both attribute the booking.
Flash offer banner not showing -- A flash offer appears only when both the flash timer (minutes) and the flash banner text are set, the code has not expired or hit its usage limit, and, if the code is location-restricted, the visitor is booking that location. Only one flash offer shows at a time.

