Coupons
The Coupons screen, headed Discount Coupons, is where you create the codes a buyer types on your event's ticket page. There is one list per event, and the screen exists only for events selling through Sway Tickets.
Open the screen
- Open Manage, then click your event.
- Click Coupons in the sidebar, under Tickets & Shop.
If the event does not sell through Sway, the list is replaced by Sway Tickets is not enabled, a line explaining that coupons discount Sway ticket sales, and an Open event settings button. Turn the switch on in Settings → Main, save, and come back. See Event settings.
Access is split in two. View coupons opens the screen; without it the sidebar row is greyed out rather than hidden. Manage coupons is what draws the buttons: with viewing alone, every card is readable and there is no Add Coupon, no Export CSV and no menu on the cards.
Create a discount
Before the first coupon exists the screen reads No discount coupons yet, with a Create First Coupon button that opens the same form as Add Coupon.
- Click Add Coupon.
- Fill in Coupon Name. This is the label you will recognise the coupon by in the list.
- Fill in Coupon Code. This is what the buyer types. Letters are capitalised as you type, and only A-Z, 0-9, the underscore and the hyphen are accepted.
- Optionally write a Description. Its placeholder calls it an internal description, and the public never sees it.
- Pick a Discount Type: Percentage (%) or Amount (€).
- Enter the value in the field beside it. A percentage is a whole number from 1 to 100. An amount is in euros and cannot go below 1.
- Optionally set Min Order (€), Max Uses and an Expiration Date. Each has its own section below.
- Leave Status on Active, or set it to Inactive to prepare a code without opening it yet.
- Click Create Coupon.
The new card appears at the top of the grid immediately.
Codes are unique across the whole of Sway, not only across your event. The
Code already exists message under the field is checked against this event's
own coupons alone, so a code another organiser has taken elsewhere passes that
check and is refused when you press Create Coupon. The refusal names the code
and asks for a different one, and it is written in English whatever language the
interface is in. Prefixing codes with something of your own, along the lines of
DOUR26-PRESS, avoids the round trip.
Fifty coupons per event. Past that the create button is replaced by a disabled one reading Limit Reached (50/50).
Choose between the two discount types
| Type | Value you enter | What the buyer gets |
|---|---|---|
| Percentage (%) | A whole number, 1 to 100 | That share taken off the order |
| Amount (€) | Euros, from 1 upward | That flat amount taken off the order |
Four things are true of both:
- The discount applies to the order, not to each ticket. A €5 code on a basket of four tickets takes €5 off the basket, once.
- The percentage is worked out on the total the buyer pays, service fee included. The order summary shows the deduction on its own line.
- Sway's service fee does not shrink with it. The fee is worked out from the ticket prices before the code is applied, so the discount comes off your side of the sale.
- A code that brings the total to zero skips payment entirely. No card is asked for, the order is created and the tickets are issued.
Every coupon applies to every ticket type. The Applies to row on each card reads All products, and there is no control for narrowing it. Restricting a discount to a single tier is not available.
Set an expiry
- Open the create form, or the ⋮ menu on a card and then Edit.
- Click the Expiration Date field and pick a date and a time.
- Click Create Coupon or Update Coupon.
The hint under the field states the rule: Leave empty for no expiration. A small ✕ inside the field clears a date already set.
Once the date has passed the card's pill turns to Expired, the Expires row turns red and checkout refuses the code, telling the buyer it has expired. Nothing else happens: the coupon stays in the list and works again as soon as you give it a later date. The date shown on the card is written in a French format, day then short month, in every interface language.
Limit how many times a code can be used
Max Uses caps redemptions. Leave it empty for no cap, which is what its
Unlimited placeholder means and what the ∞ on the card shows. The Usage
row counts redemptions against that cap.
A use is counted when the order is created, meaning on a completed payment or on a free order. Someone who applies the code and then abandons the payment page consumes nothing, so the count never runs ahead of your sales.
Once the cap is reached, checkout refuses the code and tells the buyer its usage limit has been reached. Max Uses stays editable, so raising it puts the code back in service. Setting it below the number already redeemed does the opposite and exhausts the code at once.
Set a minimum order
Min Order (€) refuses the code under a certain basket size. Its placeholder
spells out the neutral value, 0 = no min, and the card grows a Min order row
only when one is set. A buyer below the threshold is told the amount they need to
reach.
Set it against ticket value. The check that decides at payment compares your minimum with the tickets alone, service fees excluded, while the total the buyer reads on the page includes them. A minimum sitting within a fee's width of a ticket price can therefore be accepted on the page and refused at payment. Round down and leave room.
Edit a coupon
- Click the ⋮ on the card, then Edit.
- Change what you need.
- Click Update Coupon.
The code, the discount type and the discount value cannot be changed after creation. The three fields are greyed out and the form says so: Discount type and value cannot be changed after creation. To offer a different amount, create a second coupon and deactivate the first.
Everything else stays editable: the name, the description, Min Order (€), Max Uses, the Expiration Date and Status.
Turn one off, copy it, or remove it
The ⋮ menu on each card carries the rest.
Deactivate takes the coupon out of service at once, with no confirmation step. The pill turns to Inactive and checkout stops accepting the code. Activate puts it back.
Duplicate opens the create form pre-filled from the coupon, with _COPY
appended to the code, (Copy) appended to the name, no expiry date and Status
on Inactive. Nothing is written until you press Create Coupon, so give it
a code you would actually print first.
The last entry in the menu changes with usage:
| The coupon has | The menu offers | What you confirm |
|---|---|---|
| Never been redeemed | Delete | Delete Coupon, confirmed with Delete Permanently |
| Been redeemed at least once | Archive | Archive Coupon, behind a Coupon in use notice naming the count, confirmed with Archive |
Archiving deactivates the coupon and leaves it in the list. That is deliberate: orders already paid refer to it, and removing the record would take that history with it.
Export the list
Export CSV appears once the event has at least one coupon and you can manage
them. It downloads coupons_event_<id>.csv, one row per coupon in the list,
inactive and archived ones included, under the headings Name, Code,
Type, Value, Min Order, Max Uses, Current Uses, Expires
At, Active and Created At.
Those headings are fixed English, and so are the words in the cells: Percentage or Fixed for the type, Unlimited for an uncapped Max Uses, Never for no expiry, Yes or No under Active. None of it follows the language of the interface, so a colleague working in French or Ukrainian downloads this same English file. The two date columns do not agree with each other either. Created At is written day before month, French style, in your own computer's timezone, while Expires At is the stored moment exactly as it is held, in UTC. Read that column as UTC rather than as the clock time you typed into the form.
What the buyer sees
On the event's ticket page, beside the order summary, there is a Promo code field with an OK button. An accepted code confirms itself, adds a line to the summary showing the amount deducted, and can be taken off again with the ✕ beside it.
A refused code is explained in place, and the reason is specific: the code is not found or is inactive, it has expired, it has reached its usage limit, the order does not reach the minimum (the message names the amount), or the code is not valid for this event. Repeated attempts are rate limited. Codes are matched in upper case, so buyers may type them however they like.
Where the surrounding settings live
| To change | Go to |
|---|---|
| Whether the event sells through Sway at all | Settings → Main, see Event settings |
| How many tickets one order may hold (Max qty / order) | Tickets |
| Who can see or manage coupons | The event's Permissions screen, see Manage Permissions |
| Where the money lands | Connect payouts |
Orders that used a code, and the discount applied to each, are listed on the event's Orders screen. The event dashboard is the quickest read on how sales are going overall.
Below this list, a separate Ambassadors section carries the personal codes of the people who relay your events, with a Sync ambassador codes button that opens them here at a discount you set for this event. They are kept apart from the list above on purpose, and are set up on the promoter page: see Ambassadors. A code that works on every event you are paid for, with no ambassador attached, is a promoter coupon.
Ticket Types
Create ticket types in the Sway web app: price, capacity, multi-ticket bundles, sale windows, status badges and what the amber pending figure counts.
Presales
Run a presale in the Sway web app: collect registrations on a public link, then email each registrant a unique code that unlocks a hidden ticket.