Discount codes for booking pages and tickets
Create discount codes, let customers redeem them on booking pages and at ticket checkout, prefill them with a campaign link, use free-ticket and 100% codes without payment, and review redemptions.
With discount codes you give customers a price reduction they type in themselves on your public booking page or when buying tickets — for example "SOMMER10" for 10% off, or "AUSSTELLER-BOE" for two free tickets. The discount is then stored per line item on the order and flows from there into the amount paid, the quote and the invoice.
Create a discount code
- Open Booking pages and switch to the Discount codes tab at the top.
- Click Create discount code.
- In the dialog, set:
- Code: 3 to 40 characters made of letters, digits, hyphen and underscore. The code is stored in capital letters and umlauts are converted ("FRÜHBUCHER" becomes "FRUEHBUCHER"). The dice button suggests a code for you. You can also add a label for you and your team ("Summer campaign").
- Discount: either percent (1 to 100%) or a fixed amount in euros, gross.
- Applies to: all pages or only specific ones (ticket pages included), plus all products or only specific ones.
- Limits (all optional): valid from/until, total redemptions, units per order and minimum order value.
- The Active switch decides whether the code applies right away. Then Save.
The list shows each code with its status — Active, Inactive, Expired, Used up or Scheduled —, its rule and "3 / 50 redeemed". Clicking a row opens the code view with every redemption: date, customer, page, discount, order total, and a link to the inquiry, the event or the Tickets tab.
Changes to a code only apply to new orders. Once an order has carried the code, its text can no longer be changed.
How the discount is calculated
- One code per order. A customer redeems at most one code.
- Price rules first, then the code. The pricing conditions of your page apply first and the code works on the result. A default discount stored on the customer stays separate and applies on the document as before.
- Percent is applied to every eligible line. A fixed amount is spread across the eligible lines, never beyond their total and never below €0; the discount comes out exact to the cent.
- Specific products only: only those lines get the discount. A package counts as one product, its components do not count individually. Surcharges from the menu configurator follow their main line.
- Minimum order value: it is measured on the goods value before the code. If the cart is below it, the code does not apply — the customer sees from which amount it does.
- Room rental is only discounted when it is a line in the customer's cart. Rentals added after submitting stay without discount.
Unit cap: free tickets and limited promotions
With Units per order the discount covers at most as many units as you enter — the most expensive units first. That turns "100% and 2 units" into a free-ticket code for exhibitors: the customer orders six tickets, two are free, he pays for four.
⚠️ The unit cap does not apply to per-guest, per-hour or per-kilometer billing. Those lines have no countable units; as soon as you set a unit cap they stay without discount. The dialog points this out at the field. If you need a reduction on such a line, leave the unit cap out and use a percentage or a fixed amount.
What the customer sees
The Enter discount code field only appears if at least one code is active for the page and the cart is not empty. It sits in exactly one place: in the webshop checkout, in the summary of the form or inquiry wizard, and on ticket purchases before paying.
- The customer types the code and clicks Redeem (or presses Enter).
- If the code applies, a label such as "SOMMER10 · 10% off" replaces the field, and the total shows the line Discount (SOMMER10). VAT and the grand total adjust. Remove takes the code out again.
- If the code does not apply (expired, used up, minimum order value not reached, no matching item), a clear message says why.
- On submit, Univents checks the code once more and recalculates the discount itself. If it has become invalid in the meantime, a notice with the new total and the button Continue without discount code appears — the customer never pays a different amount than the one shown.
On pages with online payment the customer pays the discounted amount. Amounts between €0.01 and €0.49 cannot be charged by Stripe; if a code would leave a remainder in that range, the page says so and the code does not apply.
Campaign link with a prefilled code
If you append ?code=SOMMER10 to the link of a booking or ticket page, the code is prefilled when the page opens and checked as soon as the field appears. This also works on embedded pages.
You get the finished link in the code list: ⋯ menu of the row, Copy link. If the code applies to several pages, you pick the page first. Handy for newsletters, social media or partners — the code view shows how often each campaign was redeemed. If you use Google Tag Manager, the events booking_submit and generate_lead additionally carry the code as coupon.
Free tickets and 100% codes: ordering without payment
When the total comes to €0.00, payment is skipped:
- Ticket pages: the button reads Order tickets for free. The tickets are issued and sent by email — even if you have not connected a payment account. A €0 ticket needs no payment connection.
- Booking pages with direct payment: the button reads Book for free, the payment step shows "No payment needed". The booking continues like a paid one — if the page has "Accept automatically on payment" switched on, it is accepted right away.
Careful with 100%: without a unit cap and without a redemption limit every order would be given away. The dialog warns you; always set a unit count or a limit on 100% codes.
How redemptions are counted
With Redemptions you limit how often a code can be used in total.
- For bookings and inquiries a redemption counts from submitting. If you reject the inquiry or the order is canceled, the redemption is free again.
- For tickets the redemption only counts with payment. Whoever starts checkout holds the code for up to 35 minutes ("In checkout" in the code view); if they abandon it or the Stripe session expires, the code is freed immediately. Meanwhile a second customer gets "This code has already been fully redeemed" if the limit would be reached.
- If someone whose hold had already expired still pays, the payment wins — the customer gets the tickets with the discount, even if the code is thereby slightly over its limit.
Deactivate: the emergency brake
If a code has fallen into the wrong hands (it suddenly shows up on Instagram), open the ⋯ menu of the row and choose Deactivate. It takes effect immediately for all new entries and orders — on every plan. Ticket buyers who are already in checkout keep their discount; orders already written stay as calculated. Activate switches the code back on, Delete removes it for good.
Discount code or gift voucher?
A discount code is not a balance. It lowers the price of an order (and with it the VAT), has no remaining amount and is not sold. It is not suitable for sold gift vouchers with a balance — there the voucher value would have to run as a means of payment instead of a price reduction.
Documents, tickets and reporting
- Inquiry pages: the automatic quote draft carries the discount per line as a line discount; its total matches the order total.
- Orders and events: the inquiry detail and the bookings show "Discount code SOMMER10 (−€12.50 at order)". The amount is the state at submit and does not change if you adjust lines later.
- Ticket sales: tickets bought with a code carry a label with the code in the Tickets tab; the ticket export has a Discount code column. On a return the discounted share is refunded, never more than was paid; for a €0 order you can only cancel.
- Copying an event: a copied event takes over the lines at list price without the code discount; the original stays unchanged.
Who can manage discount codes, and on which plan?
Discount codes belong to the Settings area: owners and admins have full access, custom roles follow the role matrix, crew accounts see no codes. Creating and changing is available from the Core plan; viewing, deactivating and deleting work on every plan. Every change appears in the activity feed.
Manage with the AI assistant
The AI assistant can create, change, list and deactivate discount codes — with the same rules as the dialog: "Create a code HERBST15 with 15% until the end of October for the webshop" or "The code SOMMER10 ended up on Instagram, switch it off now". The assistant only creates a 100% code after your explicit confirmation. You can also find the page by asking "Where do I find the discount codes?".
Frequently asked questions
Can a customer combine several codes? No, at most one code per order.
Why do I see no code field on my booking page? The field only appears if an active, valid code exists for the page — if the code only applies to other pages, it is invisible here. The cart must also contain at least one item. Event-form pages and the AI chat do not support discount codes.
A customer reports "code not valid" — what is the cause? Usually the period (the end is the last valid day, inclusive), the redemption limit, the minimum order value, or the products in the cart not belonging to the code. Open the code in the list: status and rules show the reason.
Why does the discount not apply to my per-guest lines? Because you set a unit cap — see the section “Unit cap: free tickets and limited promotions”.
How do I hand out free tickets without a code? Directly in the Tickets tab via Free tickets, see Ticket sales and admission with QR codes. Use a code when recipients should order on their own.