Promotions and Discounts

Create promo codes, configure seasonal discounts, manage service-specific offers, and track promotion ROI.

Intermediate

Promotions and Discounts

The Promotions module lets you create discount codes, seasonal offers, and targeted promotions that customers can apply to estimates. Navigate to Admin > Marketing > Promotions to manage your promotions.

Screenshot placeholder
Promotions page showing a list of active and expired promotions

Promotions List

The main view displays all promotions as cards. Each card shows the promotion name, promo code, discount amount, status, validity dates, redemption count, and any service restrictions.

Status Indicators

StatusMeaning
ActiveThe promotion is live and can be redeemed
InactiveThe promotion has been manually deactivated via the toggle
ExpiredThe current date is past the Valid Until date
ScheduledThe current date is before the Valid From date

Each promotion card also displays an Auto-apply badge if that option is enabled, and a usage progress bar when a maximum usage limit is set.

Screenshot placeholder
Promotion card showing the promo code badge, status badge, discount amount, and usage progress bar

Creating a Promotion

  1. Click the + New Promotion button in the upper right corner.
  2. Fill in the promotion details in the form that appears.
  3. Click Create Promotion to save.

Required Fields

FieldDescriptionTips
Promotion NameA descriptive name for internal referenceUse a format like "Fall 2026 -- 15% Off" for easy identification
Promo CodeThe code customers enter to redeem the discountAutomatically converted to uppercase. Keep it short -- SPRING25 is better than SPRING-2026-PROMO-15PCT
Discount ValueThe numeric discount amountEnter 15 for 15% off, or 50 for $50 off

Discount Type

Choose between two discount types:

TypeHow It WorksBest For
Percentage (%)Reduces the estimate total by a percentage of the subtotalHigher-value services where the discount should scale with the job size
Flat ($)Subtracts a fixed dollar amount from the estimate totalConsistent, predictable offers -- "$50 off your next house wash"

Select the discount type by clicking either the Percentage (%) or Flat ($) button before entering the value.

Screenshot placeholder
New Promotion form showing the discount type buttons and value field

Validity Dates

FieldDescriptionDefault
Valid FromThe date and time the promotion becomes redeemableOptional -- if omitted, the code is valid immediately
Valid UntilThe date and time the promotion expiresOptional -- if omitted, the code has no expiration

Both fields accept date and time input. Setting a Valid From date in the future creates a scheduled promotion that activates automatically on that date.

Usage Limits

FieldDescriptionDefault
Max Total UsesThe maximum number of times the code can be redeemed across all customersUnlimited if left blank
Max Uses Per CustomerThe maximum number of times a single customer can use the code1

When a max total usage limit is set, the promotion card displays a usage progress bar showing the percentage consumed. The bar color changes from green (under 50%) to yellow (50-89%) to red (90% and above) as the limit is approached.

Service Restrictions

By default, a promotion applies to all services. To restrict it to specific services, click one or more service badges:

  • House Wash
  • Roof Wash
  • Driveway
  • Deck Wash
  • Fence Wash
  • Gutter Cleaning
  • Window Cleaning

When service restrictions are set, the promo code only works on estimates that include at least one of the selected services. If a customer applies the code to an estimate with no matching services, the system returns an error.

Screenshot placeholder
Service restriction badges with three services selected

Auto-Apply

Enable the Auto-Apply toggle to have the promotion automatically applied when a customer requests an estimate through the portal. This is useful for site-wide promotions or seasonal specials where you want every incoming lead to see the discounted price without needing a code.

When auto-apply is enabled, an Auto-apply badge appears on the promotion card for easy identification.


Managing Promotions

Activating and Deactivating

Each promotion card has a toggle switch in the upper right corner. Switch it off to deactivate a promotion without deleting it. Switch it back on to reactivate. Deactivated promotions show an Inactive status badge.

Deleting a Promotion

Click the Delete button on a promotion card. A confirmation dialog appears before the promotion is permanently removed. Deletion is irreversible -- if you want to temporarily disable a promotion, use the toggle instead.


Promotion Validation

When a promo code is applied to an estimate -- whether by a customer on the portal or by a sales rep in the admin panel -- the system runs five validation checks:

  1. Code exists -- the code must match an existing promotion for your organization.
  2. Promotion is active -- the promotion's is_active flag must be true (not toggled off).
  3. Date range is valid -- the current date must fall within the Valid From and Valid Until range. If no dates are set, this check passes automatically.
  4. Total usage limit not reached -- if a max total uses limit is set, the code must have remaining redemptions.
  5. Per-customer limit not reached -- if the customer's email is known, the system checks whether they have already used the code up to the per-customer limit.
  6. Service restrictions satisfied -- if the promotion is restricted to specific services, the estimate must include at least one of those services.

If any check fails, the system returns a specific error message:

ErrorMeaning
"Invalid promo code"The code does not match any active promotion
"Promo code is not yet active"The Valid From date is in the future
"Promo code has expired"The Valid Until date has passed
"Promo code usage limit reached"The max total uses limit has been hit
"You have already used this promo code"The customer has reached their per-customer limit
"Promo code does not apply to selected services"The estimate does not include any of the restricted services
Screenshot placeholder
Error message when an expired promo code is entered on an estimate

Using Promotions on Estimates

In the Estimate Builder (Admin)

When building an estimate in the admin panel, look for the Promo Code field. Enter the code and the system validates it in real time. If valid, the discount is applied to the estimate total and appears as a visible line item so the customer can see the savings on their proposal.

On the Customer Portal

Customers can enter a promo code when requesting an estimate through your public portal. The validation runs the same checks described above. If the code is valid, the discount is applied to the generated estimate.

Auto-Applied Promotions

If a promotion has auto-apply enabled, it is automatically included on estimates generated through the portal without the customer needing to enter a code.

Screenshot placeholder
Promo code field on the estimate builder with a discount applied and showing as a line item

Distributing Promo Codes

Through Marketing Campaigns

Include your promo code in email or SMS campaigns using the {{promo_code}} merge field. This inserts the code directly into the message body. See Marketing Campaigns for details on creating campaigns.

Through Direct Messages

Send the code to specific customers through the messaging inbox. This works well for personalized offers to high-value or at-risk clients.

Through External Channels

  • Social media -- post the code on your business profiles with a clear expiration date.
  • Print materials -- add the code to flyers, door hangers, yard signs, or vehicle wraps.
  • Google Ads or landing pages -- include the code in ad copy or on dedicated landing pages.

Seasonal Promotion Strategies

Spring Cleaning Special

Create a percentage discount (10-15%) with a Valid From date at the start of March and Valid Until at the end of April. Target dormant customers who have not had service in 6+ months using a marketing campaign with the "By Last Service Date" audience filter.

Holiday Lights Early Bird

Offer a flat dollar discount ($50-$100 off) for holiday light installations booked before October 15. Restrict the promotion to the holiday lights service. Use auto-apply so portal visitors see the discount automatically.

Referral Reward

Create a promotion code that each referring customer can share. Set the max uses per customer to 1 and the max total uses to match your budget. Distribute through the referral request win-back template.

End-of-Season Clearance

Offer a larger discount (20-25%) for the last two weeks of your busy season to fill remaining capacity. Set a tight Valid Until date to create urgency.


Win-Back Promotions

Win-back promotions combine a discount code with a targeted campaign to re-engage dormant customers. The recommended workflow:

  1. Create the promotion -- set up a promo code with a reasonable discount (10-15%) and an expiration date 30 days out.
  2. Create a campaign -- use the "We Miss You!" or "Seasonal Reminder" win-back template from the Marketing page.
  3. Link the promo code -- include the {{promo_code}} merge field in your email and SMS templates.
  4. Set the audience -- the win-back templates come pre-configured to target dormant customers, but you can adjust the filters.
  5. Send and monitor -- track redemptions on the Promotions page and campaign conversions on the campaign detail page.

Tracking Promotion ROI

Redemption Tracking

Each promotion card displays the Redemptions count -- the number of times the code has been applied to an estimate. If a max total uses limit is set, it shows as a fraction (e.g., 12/50) with a visual progress bar.

Measuring Effectiveness

To evaluate whether a promotion is driving profitable business:

  1. Check the redemption count on the promotion card. This tells you how many customers used the code.
  2. Cross-reference with campaign stats if you distributed the code via a marketing campaign. The campaign detail page shows conversions -- customers who booked a service after receiving the campaign.
  3. Calculate the discount cost. Multiply the average discount per estimate by the number of redemptions to get your total discount spend.
  4. Compare against revenue. Look at the total revenue from jobs that used the promo code. If revenue minus discount cost is positive, the promotion generated net-positive results.

Key Metrics to Track

MetricHow to CalculateWhat It Tells You
Redemption RateRedemptions / times the code was sharedHow compelling the offer is
Conversion RateBooked jobs from promo / total redemptionsWhether the discount converts browsers to buyers
Cost Per AcquisitionTotal discount given / number of new customers acquiredThe marketing cost of winning each new customer
Lifetime Value RatioAverage customer lifetime value / cost per acquisitionWhether the promotion pays for itself over time

Best Practices

  • Set expiration dates. Urgency drives action. A promotion with no end date does not motivate customers to act now.
  • Limit total usage. Scarcity increases perceived value. "First 20 customers" works better than "unlimited."
  • Keep codes simple. Customers type these on their phones. SPRING25 is better than SPRING-2026-PROMO-15PCT. Use uppercase letters and short numbers.
  • Use service restrictions strategically. Restrict discounts to services you want to promote or fill capacity for, rather than discounting your most profitable offerings.
  • Set per-customer limits. The default of one use per customer prevents abuse. Only increase this for loyalty-style programs.
  • Track ROI. Calculate whether the revenue from promo-driven jobs exceeds the discounts you gave. A promotion that generates $10,000 in revenue at a $1,500 discount cost is a strong return.
  • Deactivate instead of deleting. If a promotion is underperforming, toggle it off rather than deleting it. This preserves the redemption history for analysis.
  • Pair promotions with campaigns. A promo code without distribution has no impact. Always pair a new promotion with a marketing campaign or direct outreach.
  • Do not stack discounts. CE Pro applies one promo code per estimate. This prevents customers from combining multiple offers, protecting your margins.
  • Test with auto-apply sparingly. Auto-apply is powerful but reduces revenue on every portal estimate. Use it only for limited-time, high-impact promotions.

Was this article helpful?

Still need help? Contact support