-
Notifications
You must be signed in to change notification settings - Fork 2
Products overhaul #77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
mschrumpf
wants to merge
42
commits into
main
Choose a base branch
from
products-overhaul
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
42 commits
Select commit
Hold shift + click to select a range
67ee072
create directory for products, move products.md there, rename to inde…
mschrumpf e37086f
fix broken links
mschrumpf 3890648
fix broken links
mschrumpf 3c14387
fix more broken links
mschrumpf 166af48
fix more broken links
mschrumpf 65c08c6
add .pages; move "Mixed taxation" to taxes.md, edit and expand
mschrumpf 0b9f674
discounts.md: overhaul chapter on early bird tickets
mschrumpf ea8191e
fix formatting
mschrumpf 5059c54
overhaul section on combination products, add screenshot
mschrumpf 58bfcf3
add explanation of check-in rule logic
mschrumpf b66c5a6
overhaul section on add-ons and bundles
mschrumpf 3c23ea9
overhaul section on add-ons and bundles
mschrumpf 97fa71a
start overhauling section on group discounts
mschrumpf 316efb7
overhaul section on discounts
mschrumpf 9c3dabc
overhaul section on minimum order amount
mschrumpf f035999
create sessions.md; move "workshops at a conference" there; overhaul …
mschrumpf 21d15d8
sessions.md: start overhauling option b
mschrumpf db012ba
sessions.md: overhault option c and intro
mschrumpf 67c48c4
overhaul restricted-audience.md
mschrumpf b02aa8e
index.md: improve section on mixed taxation
mschrumpf 388c996
fix formatting
mschrumpf cb3cbd7
add screenshots for sessions.md
mschrumpf 11d5994
minor corrections
mschrumpf 1de36e9
discounts.md: implement comments
mschrumpf 8892a6b
taxes.md: implement comments
mschrumpf 194f760
sessions.md: implement comments
mschrumpf 565c598
rewrite section on categories; make it clear that categories are opti…
mschrumpf ccf652e
rewrite section on categories; make it clear that categories are opti…
mschrumpf 282c029
overhaul ### Time slots , #### Creating slots, and #### Enabling the …
mschrumpf 9056e99
overhaul section #### Check-in
mschrumpf 81b60f5
overhaul section ### Season tickets and #### Option A: Memberships an…
mschrumpf b88bbe6
overhaul #### Option B: All-access in a single pass
mschrumpf 7e725b1
small corrections
mschrumpf 23d9509
add and update screenshots; improve instructions on creating time slo…
mschrumpf 028f458
add and update screenshots
mschrumpf 7fd9edd
add missing word
mschrumpf 266e149
Apply suggestions from code review
mschrumpf 50a0569
Update docs/guides/products/discounts.md
mschrumpf 242110f
Update docs/guides/products/discounts.md
mschrumpf 93b6c29
discounts.md: Implement comments
mschrumpf 148fa14
index.md: implement comments
mschrumpf d26672f
Explain difference between cross-selling and add-on products
mschrumpf File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
nav: | ||
- ... | index*.md | ||
- ... |
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Restricted audience | ||
|
||
Not all events are for everyone. | ||
Sometimes, there is a good reason to restrict access to your event or parts of your event only to a specific, invited group. | ||
There are several ways to implement this with pretix. | ||
This article will guide you through all of them. | ||
|
||
## Option A: Required voucher codes | ||
|
||
You can use vouchers to make a product (or multiple products) only available to a select group of invited guests. | ||
Refer to [Vouchers: Exclusive product availability](../vouchers.md#exclusive-product-availability) for detailed instructions. | ||
|
||
## Option B: Order approvals | ||
|
||
If you do not know individual members of your audience already, but still want to restrict it to a certain group, e.g. people with a given profession, edit your admission products and check the box next to "Buying this product requires approval". | ||
Customers will be able to place an order for such a product, but cannot proceed to payment without you having approved the order. | ||
|
||
Navigate to :navpath:Your event → :fa3-shopping-cart: Orders → All orders: and manually approve or decline each order that contains a product that requires approval. | ||
Once you have done that, the customer will receive an email notifying them that their order has been approved and they can proceed to payment. | ||
|
||
The main downside of this approach is that your customers will have to interact with the ticket shop twice: once for placing the order, and once for paying. | ||
On the other hand, it gives you control over who attends the event for each individual order. | ||
|
||
## Option C: Registered customers & memberships | ||
|
||
You can restrict your event to a certain group by requiring a membership for purchasing a ticket. | ||
Refer to the article on [customer accounts](../customer-accounts.md) for instructions on how to set this up. | ||
You can find more information on granting and requiring memberships under [season tickets](index.md#option-a-memberships-and-multiple-tickets). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
# Sessions | ||
|
||
Your event may be made up of several smaller events ("sessions") with more limited capacities, with attendees being able to pick and choose which of these sessions they want to attend. | ||
If you are planning a conference with multiple workshops, a celebration with a variety of activities, or a similar event, you may need a way to control access to those sessions. | ||
pretix offers you several methods to do this: simply adding a mandatory question to be asked with every order, add-on products with fixed time slots, or a plugin with advanced functions for variable time slots. | ||
This article will guide you through all three of them. | ||
|
||
If your event's schedule is small and straightforward, all sessions are included in the basic admission price, and you do not need to keep track of who attends which session, you should use [questions](sessions.md#option-a-questions). | ||
|
||
If your event's schedule is large, you have deviating prices for some of the sessions, or each session can only be attended by a limited number of people, you should use [add-on products](sessions.md#option-b-add-on-products-with-fixed-time-slots). | ||
|
||
If the above conditions apply and you also have sessions with varying start and end times that cannot be neatly organized into time slots because of overlap, you should use the [agenda constraints plugin](sessions.md#option-c-add-on-products-with-variable-time-slots). | ||
|
||
If you are not planning sessions that all take place within the scope of one big main event, but a series of events that can be attended individually, refer to our article on [event series](../event-series.md) instead. | ||
|
||
## Option A: Questions | ||
|
||
If you are only offering a limited number of sessions and are not faced with a realistic risk of overcrowding in any of them, you can create a multiple-choice question. | ||
Customers will be prompted to answer this question while placing their order. | ||
This has the upside of making it easy for users to change their mind later on. | ||
It can also be set up fairly quickly. | ||
However, this method will not allow you to restrict the number of attendees signing up for a given session. | ||
It will also not allow you to charge extra for any of the sessions. | ||
|
||
 | ||
|
||
In order to set up a question, navigate to :navpath:Event → :fa3-ticket: Products → Questions: and click the :btn-icon:fa3-plus:Create a new question: button. | ||
Under "Question", add text for each language that your shop uses. | ||
This text will be displayed to the customer while they are making their purchase. | ||
The "Question" could read something like: "Which workshop do you want to attend in the 10 AM time slot?" | ||
|
||
For "Question type", select "Choose one from a list". | ||
For "Products", select every product during the purchase of which the question should be asked—typically, this wil apply to any basic admission product for your event. | ||
If you check the box next to "Required question", then your customers will be forced to make a choice here. | ||
Your ticket shop will not allow them to proceed without making a selection. | ||
Click :btn-icon:fa3-plus:Add a new option: and add an answer option for each session that is going to be offered at your event. | ||
|
||
## Option B: Add-on products with fixed time slots | ||
|
||
If you are offering a large number of sessions, are working with space constraints at your venue, or want to charge extra for at least one of the sessions, then you should use add-on products with fixed time slots. | ||
This section tells you how to do that. | ||
|
||
First, create at least one basic admission product for your event and a category for add-on products. | ||
Then, create a new product for your first time slot. | ||
Add it to the add-on category you just created, select "Product with multiple variations" and set the price to zero. | ||
Open the "Variations" tab and create one variation for each session taking place within that time slot. | ||
Repeat these steps for each time slot and session at your event. | ||
|
||
For illustrative purposes, assume you are hosting a conference with workshops that can only be attended by a maximum of 20 people. | ||
The schedule looks like this: | ||
|
||
| Time | Room A | Room B | | ||
|---------------------|------------|--------------------------------| | ||
| Wednesday morning | Lecture | | | ||
| Wednesday afternoon | Workshop A | Workshop B | | ||
| Thursday morning | Workshop C | Workshop D (€20 additional charge) | | ||
|
||
In addition to the basic admission products for this conference, you also have to create the following products: | ||
|
||
- A category called "Workshops" with the box next to "Products in this category are add-on products" checked | ||
- A free product called "Wednesday afternoon" in the "Workshops" category with two variations: | ||
- Workshop A | ||
- Workshop B | ||
- A product called "Thursday morning" in the "Workshops" category with two variations: | ||
- Workshop C (free) | ||
- Workshop D (€20) | ||
- One quota for each additional product (workshop), each with a total capacity of 20 | ||
|
||
 | ||
|
||
After you have created these categories, products, and quotas, edit your basic admission tickets and open the :btn:Add-ons: tab. | ||
Add an add-on from the "Workshops" category with "Minimum number" of 0 and a "Maximum number" of 2 and click the :btn:Save: button. | ||
This enables your customers to choose which of the workshops they want to attend. | ||
It also allows you to track planned attendance numbers through the quotas for each workshop. | ||
|
||
## Option C: Add-on products with variable time slots | ||
|
||
<!-- md:hosted --> | ||
|
||
If the sessions at your event have overlapping start and end times and cannot be neatly organized into time slots, you can solve this issue with the "Agenda constraints" plugin. | ||
One example for a schedule which would necessitate the use of the agenda constraints plugin is the following: | ||
|
||
| Time | Room A | Room B | | ||
|-------------|-------------------------|--------------------------| | ||
| 09:00-11:00 | Talk 1 | Workshop 1 (first half) | | ||
| 11:00-13:00 | Talk 2 | Workshop 1 (second half) | | ||
| 14:00-16:00 | Workshop 2 (first half) | Talk 3 | | ||
| 16:00-18:00 | Workshop 2 (second half | Talk 4 | | ||
|
||
In this example, Workshops 1 and 2 are twice as long as the talks. | ||
Thus, it makes no sense to implement this schedule with add-on products as described under [option B](sessions.md#option-b-add-on-products-with-fixed-time-slots). | ||
This would either result in customers having to book each half of the workshops individually, or in allowing them to book combinations of overlapping sessions which they cannot attend. | ||
You can handle more complicated schedules like this one with the agenda constraints plugin. | ||
|
||
In order to activate that plugin, navigate to :navpath:Your Event → :fa3-wrench: Settings → Plugins: and open the :btn:Features: tab. | ||
Search for the "Agenda constraints" plugin in the list and click the :btn:Enable: button next to it. | ||
|
||
 | ||
|
||
Create a category for session tickets and check the box next to "Products in this category are add-on products". | ||
Create a product for each individual session, add it to the sessions category and switch to the :btn:Additional settings: tab. | ||
Use the fields "Start date" and "End date" to define the span of time in which the session is taking place. | ||
Create a quota for each of the session add-on products, with the total capacity of the quota reflecting the maximum number of attendants for each session. | ||
|
||
Edit the basic admission tickets for your event and open the :btn:Add-ons: tab. | ||
Add an add-on from the sessions category with a "Minimum number" of 0 and a "Maximum number" equal to or greater than the largest possible number of workshops a guest can attend. | ||
Click the :btn:Save: button. | ||
|
||
This enables your customers to choose which of the workshops they want to attend. | ||
The "Start date" and "End date" you defined for each add-on product will restrict which combinations of sessions your customers can book. | ||
You can limit planned attendance numbers through the quotas for each workshop. | ||
|
||
!!! Note | ||
|
||
The agenda constraints plugin is currently only available on pretix Hosted. | ||
If you are interested in using it with pretix Enterprise, please contact [email protected]. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.