Dynamic Pricing
Dynamic Pricing#
Apply percentage discounts to ticket prices based on timing, quantity, or customer role. Every rule is a percentage off the regular price. There are no fixed-price rules and no price increases.
Pricing types#
Early bird#
A discount that applies until a set date and time.
- Set the discount percentage
- Set the end date
- The discount stops once the end date passes
Example: Regular price $100, Early Bird Discount 25%, ends 30 days before the event. Customers pay $75 until then.
Last minute#
A discount that applies from a set date and time onwards.
- Set the discount percentage
- Set the start date
- The discount starts once the start date passes
Example: Regular price $100, Last Minute Discount 20%, starts 3 days before the event. Customers pay $80 from then on.
Last minute pricing is a discount only. A late registration premium is not possible.
Quantity discounts#
Percentage tiers based on the number of tickets in the cart line.
Example tiers:
| Min | Max | Discount |
|---|---|---|
| 2 | 4 | 5% |
| 5 | 9 | 10% |
| 10 | (blank) | 15% |
See the note under Quantity discounts below about how these are applied.
Role-based#
A percentage discount per WordPress user role for logged-in customers. Guests pay the regular price.
Setting up pricing rules#
Where the fields are#
- Edit a ticket product
- Stay on the General tab of Product data
- Scroll to the Dynamic Pricing heading below the ticket and waitlist options
The fields only appear on products with Event Ticket ticked. Tick it and update the product first if the pricing options are missing.
Fields#
| Field | Description |
|---|---|
| Enable Early Bird | Turns early bird pricing on |
| Early Bird Discount (%) | 0 to 100 |
| Early Bird End Date | Date and time the discount ends |
| Enable Last Minute | Turns last minute pricing on |
| Last Minute Discount (%) | 0 to 100 |
| Last Minute Start Date | Date and time the discount starts |
| Quantity Discounts | Turns quantity tiers on |
| Quantity Tiers | Min, Max, and percentage for each tier. Leave Max blank for no upper limit |
| Role-based Pricing | Turns role discounts on |
| Role Discounts | One percentage field per role. Administrator is not listed |
Save the product after changing any field. Tiers with an empty Min or a 0% discount are dropped on save.
How rules combine#
Rules are checked in this order: early bird, last minute, quantity, role. The plugin keeps the single highest percentage among the active rules. Discounts do not stack and there is no best price calculation beyond that.
Example: Early bird 20% and a Customer role discount of 30% are both active. The customer gets 30% off, not 50%.
The discount is capped at 100%.
Early bird details#
- Active while the current time is before Early Bird End Date
- The product page shows an “Early Bird Price” badge with “Save X%”
- The discounted price is shown as a sale price against the regular price
- When the end date passes, the regular price returns with no message
Last minute details#
- Active once the current time is past Last Minute Start Date
- The product page shows a “Last Minute Price” badge with “Save X%“
Quantity discounts#
The quantity tiers are evaluated with the cart line quantity. When a tier applies, the line price is recalculated in the cart and a “Quantity Discount” label shows under the price. The product page shows the single-ticket price, so the tier discount appears once the tickets are in the cart.
There is no per-order fixed discount option.
Role-based pricing#
- Applies to logged-in users only
- Each of the user’s roles is checked; the highest matching percentage wins
- The product page shows a “Member Price” badge
- Administrators cannot be given a role discount
WooCommerce coupons#
The discount is applied through the product price filters, so coupons are calculated on the already discounted price.
Example: Regular price $100, early bird 20%, coupon 10% off. The customer pays $72.
Display#
Badges are printed on the single product page under the title. Label text is fixed: “Early Bird Price”, “Last Minute Price”, “Quantity Discount”, “Member Price”. There are no settings for these labels and no countdown timer.
Storage#
Rules are stored as product meta, not in the wp_emwc_pricing_rules table:
_emwc_enable_early_bird,_emwc_early_bird_discount,_emwc_early_bird_end_date_emwc_enable_last_minute,_emwc_last_minute_discount,_emwc_last_minute_start_date_emwc_enable_quantity_discount,_emwc_quantity_tiers_emwc_enable_role_pricing,_emwc_role_discounts
Variable products read the rules from the parent product.
Troubleshooting#
Wrong price showing#
- Check the rule dates. Dates are compared with the server’s current time
- Check the customer’s role if role pricing is on
- Clear any page cache. Prices are calculated on every request
Discount not applying#
- Confirm the rule’s checkbox is ticked and the percentage is above 0
- Remember only the highest active percentage applies
- Quantity tiers apply in the cart, not on the product page