Activity Markups
What you earn on every activity you sell, and the most flexibly scoped of the three markup screens.
| Section | Pricing |
| Panel route | /admin/activity-markups |
| Access needed | Activities → Markups → View list |
Choose one scope
Add markup asks what the markup should apply to. Choosing a scope clears the other selections, so decide first.
| Scope | Applies to |
|---|---|
| All activities | Everything without a more specific match |
| Locations | One or more countries or cities |
| Categories | One or more categories or sub-categories |
| Category + location | Both together |
| Activities | One or more specific activities |
| Booking options | Specific booking options of a single activity |
Two rules the form enforces:
- Activities cannot be combined with categories or locations. Pick one lane.
- Booking-option scope requires exactly one activity selected, so you can then pick among its options.
One markup per selection
Selecting several values saves one markup for each of them, all with the same type and amount. Three activities give three markups; Category + location gives one markup for every category and location pair, so two categories in three cities give six. The list then shows each one as its own row, to edit or delete separately.
An activity or booking option the supplier no longer lists is refused when you save, and nothing is created.
The markup itself
| Field | Accepts |
|---|---|
| Markup type | Percentage (0–100) or Fixed amount |
| Markup amount | A number, 0 or more. Required |
Price preview
Once an activity is selected, a Price preview appears below the markup fields. For one booking option on one date, it shows what your markup does to the price of each traveller type, and it updates as you type, before you save.
| Column | Shows |
|---|---|
| Base price | The supplier's price your markup is added to |
| With your markup | The base price plus the markup you entered |
| Minimum selling price | The lowest price the supplier allows. A dash means there is none |
| Customer pays | The price with your markup, or the minimum selling price when that is higher |
Use Booking option and Date to check another price. When several activities are selected, Activity switches between them. The preview is available for the Activities and Booking options scopes, the two that name an activity.
When the price with your markup is below the supplier's minimum selling price, the customer pays the minimum and the row is marked Raised to minimum. A smaller markup does not lower that price.
The preview is an estimate for the selected date, based on the supplier's price. Markups applied by other parties are not included.
Specificity
Every markup is labelled with its specificity, and that is what decides which one applies:
Generic → Country → City → Category → Product
| Specificity | Applies to |
|---|---|
| Generic | Every activity booking without a more specific match |
| Country | Bookings in that country, unless something narrower matches |
| City | Bookings in that city, unless a category or product scope matches |
| Category | Bookings whose product is in that category, unless a product scope matches |
| Product | That one product, or specific booking options of it |
A booking-option markup is labelled Product in the list, but it is more specific than a markup on the whole activity, so for that booking option it wins.
They never stack. A product markup completely replaces the generic one for that product. If two markups are equally specific, the one created most recently applies.
Conflicts
When any markup you are saving has exactly the same scope as one you already have, the panel does not silently create a duplicate. Nothing is saved yet: it lists every conflicting markup the new ones would replace, and asks you to confirm with Replace conflicts. Cancel leaves everything as it was.
Read that list before confirming — it is the clearest view you get of what your current scoping actually covers.
The list
| Column | Shows |
|---|---|
| Scope and Value | What it applies to |
| Specificity | Generic, Country, City, Category or Product |
| Type | Percentage or Fixed |
| Amount | The value |
| Created | When |
When the supplier stops listing the activity, booking option or category a markup is scoped to, its Value reads Name unavailable instead of a name. Hover over it for the reason. The markup has no effect while the item is unlisted, and the name shows again once the supplier lists it.
Search the list, edit or delete per row, or select several and delete in bulk. Deleting permanently removes the markup; the next-broadest markup takes over for the bookings it covered.
Editing
Edit markup opens the same form, filled in with the markup's scope and amount. Saving works like adding a markup. Keep the scope, and the panel shows the markup you are editing as a conflict: confirm with Replace conflicts. Change the scope, and a new markup is saved while the original stays in the list for you to delete.
Future bookings only. Existing orders keep their sold price.
What customers see
Search results and checkout show the marked-up price. On the order details you get a full price breakdown plus a profit distribution panel showing cost, sale and margin for that booking.
Scenarios
A baseline plus two exceptions
One All activities markup at your standard rate. One Categories markup for a category you buy well in. One Activities markup for a single product you are pushing.
A city where you want to be cheap
A Locations markup naming that city, at a lower rate. Everything else keeps the baseline.
One expensive booking option on an otherwise cheap activity
A Booking options markup: select the activity, then its options.
Questions
Can I combine activities with a category? No — the form refuses. Use one or the other.
I selected several activities and booking options greyed out. Booking-option scope needs exactly one activity.
I edited a markup and now I have two. You changed its scope. Editing saves the new scope as a new markup and leaves the original in place; delete the one you no longer want.
A markup's value says Name unavailable. The supplier is not listing that item right now, usually because it stopped selling it. The markup does nothing until the supplier lists it again; delete it if you no longer need it.
Which markup applied to this booking? Open the order and read its price breakdown and profit distribution.
Can I mark up by supplier? Not by supplier — by product, category, location or booking option.
I set a small markup, but the customer price is much higher. The supplier's minimum selling price applied. Open the markup and check the Price preview: a row marked Raised to minimum sells at the minimum, whatever your markup.