Answers.Body: <p>I would approach this roughly as follows:</p>
  
  <p>Early bird registration fees can be handled either through the standard pricing options or using a price set. given that you want to have the additional banquet option using a price set would be the way to go, and simply set the start and end dates for your price fields accordingly.</p>
  
  <p>All of the participant roles that you have defined can be handled in one of two ways: Either register all of these people via the back end so that you have control over whether they pay or not. Or, if you want them to register themselves through the website then set up suitable discount codes (using the CiviDiscount extension) and distribute those codes accordingly.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-25T18:19:25.507Z
Answers.Text: This is how I would go about it... **Attendees:** "early bird" and late registrations handled through a price set or just price options. This is standard CiviCRM as you mentioned. No sign-in required.
  
  **Speakers & Staff:** I would assign speakers and staff logins and have them login to access their no-charge registration option. I would use a little PHP/jQuery to customize the event registration page to allow for this. If they are logged in, show the Speakers & Staff rate, if not don't. **What I can't quite figure out is how to provide the 2 free registrations for sponsors.**
Answers.UserDisplayName: Andrew Wasson
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-25T18:37:25.593Z
Answers.Text: @AndrewWasson our goal in this site is to have multiple answers per question, so I'd encourage you to write this as an answer rather than a comment.
Answers.UserDisplayName: Coleman
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-25T20:33:12.020Z
Answers.Text: Hi Coleman. I'm commenting to provide angles and tips and not to take away from full answers that others are submitting. I believe this is the way the exchanges are supposed to be used.
Answers.UserDisplayName: Andrew Wasson
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-26T12:33:04.313Z
Answers.Text: @AndrewWasson I agree there is nothing wrong with comments, but since SE [wants us to have 2.5 answers per question](http://area51.stackexchange.com/proposals/77367) I thought I'd encourage  you to expand your comments into an answer since they are almost complete enough to be one :)
Answers.UserDisplayName: Coleman
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-27T22:43:25.387Z
Answers.Text: Yes, good call... I missed that part about 2.5 answers per question. I'll do that then. Thanks.
Answers.UserDisplayName: Andrew Wasson
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-25T18:06:47.097Z
Answers.LastActivityDate: 2015-03-25T18:06:47.097Z
Answers.UserDisplayName: Graham
Answers.Body: <p>We have just done something similar using price sets, CiviDiscount and Fancy Participant Listing to pull detailed results per option. We haven't used php or css to do anything to pretty up the booking form or show/hide options etc. If you have the skillset that would be infinitely better. We are using Drupal 6.</p>
  
  <p>Our event is over three days with conference sessions, exhibition, and two gala evenings. We invite Members and Suppliers (exhibitors and sponsors). Members get one sponsored delegate per member institution, suppliers get a mix of freebies dependant on whether they are Platinum, Gold etc. </p>
  
  <p>We found it easier to create three 'events' and registration forms</p>
  
  <ol>
  <li>Register to exhibit (book your stand/booth)</li>
  <li>Register to attend as a supplier delegate</li>
  <li>Register to attend as an exhibitor delegate</li>
  </ol>
  
  <p><strong>Attendees:</strong>  Options for early bird and standard prices. We opted to show both but you can choose to enable/disable them as appropriate. We issue CiviDiscount codes to cater for the sponsored delegates.</p>
  
  <p><strong>Speakers, staff and Committee members</strong>: We issue CiviDiscount codes.</p>
  
  <p><strong>Special arrangements</strong>: We created admin only options accessible by staff and committee volunteers via the backend for the inevitable 'special' arrangement someone needs but you don't want everyone to know about. </p>
  
  <p><strong>Exhibitors and sponsors</strong>: we use CiviDiscount to provide free or reduced fees.</p>
  
  <p>Fancy Participant Listing is invaluable in helping us pull the data out of Civi into a (somewhat complex) Master Spreadsheet that ties into the event budget, rooming lists, flights info, numbers of delegates per event etc.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-28T19:52:18.297Z
Answers.Text: Davy, That looks like a great approach. Were you able to provide 2 tickets per sponsor on varied levels of the Sponsor price set?
Answers.UserDisplayName: Andrew Wasson
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-29T20:37:01.603Z
Answers.Text: Here is a quick overview of our sponsor packages:  PLATINUM gets 2 x Full Conference Delegates (single b/b Accommodation + both evening functions, delegate gift) plus 1 x Day Conference Delegate (no Accommodation).
Answers.UserDisplayName: Davy Ivins
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-29T20:55:36.740Z
Answers.Text: PLATINUM sponsors were given one discount code for the Full Package benefits and a second code for the Day delegate. The Full Package code could be used twice. The Day Delegate code expired after one use.  This resulted in us needing lots of codes - we found it easier to create one set and then copy them as often as needed in phpMyAdmin.
Answers.UserDisplayName: Davy Ivins
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-05-19T20:38:27.880Z
Answers.Text: What is referred to here as "Fancy Participant Listing" is likely the "Fancy Participant Search" that's part of the "Event Helper" CiviCRM extension https://civicrm.org/extensions/event-helper
Answers.UserDisplayName: Young-Jin Kim
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-28T07:21:56.473Z
Answers.LastActivityDate: 2015-03-28T07:21:56.473Z
Answers.UserDisplayName: Davy Ivins
Answers.Body: <p>I've (finally) had some time to work a bit more on this issue and I've managed to get the registration scheme pretty close to how I'd like for it to work.</p>
  
  <p>I've set it up using price sets. I created 3 radio fields, each one containing:</p>
  
  <ul>
  <li>Attendee</li>
  <li>Platinum Vendor</li>
  <li>Gold Vendor</li>
  <li>Silver Vendor</li>
  <li>Bronze Vendor</li>
  </ul>
  
  <p>One radio set is for Early bird, one for regular registration, and one for late registration.</p>
  
  <p>I created a single checkbox field for inviting an extra banquet guest, and included a profile containing a "Participant Role" field.</p>
  
  <p>I'm using hook_civicrm_buildAmount to insert JavaScript and alter the event prices. I use JS to hide the "Participant Role" field, and change it to the appropriate value when the user selects an option from the price set.</p>
  
  <p>So if a user selects any of the vendor options, JS sets the value of the "Participant Role" field to "Vendor". I also set and hide the "Register Additional Participants" field based on the selected value.</p>
  
  <p>I then use hook_civicrm_buildAmount to hide vendor options for additional participants. If the initial user selected either "Platinum" or "Gold" vendor, I set the "Attendee" price to $0.00.</p>
  
  <p>Our administrative assistant will be registering volunteers, speakers, and staff manually.</p>
  
  <p>I've still got a kink or two to work out in terms of flow control, but this will suit my needs. </p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-04-14T16:39:16.757Z
Answers.LastActivityDate: 2015-04-14T16:39:16.757Z
Answers.UserDisplayName: Squishus Tyrannicus
Answers.Body: <p>This is how I would go about it... </p>
  
  <p><strong>Attendees:</strong> "early bird" and late registrations handled through a price set or just price options. This is standard CiviCRM as mentioned by Graham. No sign-in required. </p>
  
  <p><strong>Speakers &amp; Staff:</strong> I would assign speakers and staff logins and have them login to access their no-charge registration option. I would use a little PHP/jQuery to customize the event registration page to allow for this. If they are logged in, show the Speakers &amp; Staff rate, if not don't. </p>
  
  <p><strong>provide the 2 free registrations for sponsors:</strong> It looks to me like this could be dealt with inside of the price set as well. I would create a field for the price set called "sponsorship" or something else that makes sense. I'd probably use radio buttons and create several entries for Gold, Silver, Bronze, etc... and I would set the participant count to 2. </p>
  
  <p><strong><em>Note:</strong> I haven't tested the 2 free registration part so that might need some tuning up.</em></p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-28T00:41:35.793Z
Answers.Text: I like the idea of using participant count to essentially allocate additional seats, and depending on the use case it could work. It would be nice to have a feature, perhaps within the CiviDiscount extension, that could handle this. Recently I wanted to offer a discount to each additional place booked (e.g. first person charged at 50, each additional person on the same booking charged at 30), and there's no way that I can see to handle it and collect the data on the people using those free/discounted places other than by handing out discount codes or writing custom code.
Answers.UserDisplayName: Graham
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2015-03-28T00:22:07.667Z
Answers.LastActivityDate: 2015-03-28T00:22:07.667Z
Answers.UserDisplayName: Andrew Wasson
Body: <p>My organization will be hosting a large conference in a couple of months. For this event, we need several kinds of participant roles. Some of these roles will have special conditions. I have laid them out below.</p>
  
  <p>We'll need:</p>
  
  <ul>
  <li>Attendees
  <ul>
  <li>We'll need "early bird" and late registrations.</li>
  </ul></li>
  <li>Speakers
  <ul>
  <li>No fee for speakers</li>
  </ul></li>
  <li>Staff
  <ul>
  <li>No fee for staff</li>
  </ul></li>
  <li>Several vendor tiers
  <ul>
  <li>Platinum
  <ul>
  <li>Most expensive tier. Comes with 2 free registrations.</li>
  </ul></li>
  <li>Gold
  <ul>
  <li>Less expensive tier. Comes with 2 free registrations.</li>
  </ul></li>
  <li>Silver
  <ul>
  <li>Less expensive tier. Comes with 1 free registration.</li>
  </ul></li>
  <li>Bronze
  <ul>
  <li>Least expensive tier. Comes with 1 free registration.</li>
  </ul></li>
  </ul></li>
  </ul>
  
  <p>We're also offering a banquet during this event. Each registrant needs the option to be able to bring +1 to the banquet for an extra fee.</p>
  
  <p>How can I go about creating this registration scheme?</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2015-03-25T17:14:25.407Z
Comments.Text: Early Bird and late registrations can be taken care of via price sets (Home » CiviCRM » Administer CiviCRM » Price Sets). That's pretty common stuff and works well. You'll want to create a price set for your event and then create price set fields for Early Bird and Late, dictated by the times that they are active on and expire on.
Comments.UserDisplayName: Andrew Wasson
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2015-03-30T12:22:26.743Z
Comments.Text: Hey all. Thanks for the guidance! I just wanted to let y'all know that I haven't up and run off on this thread. I've just been busy and haven't had the opportunity to try out any suggestions. I'm hoping to find the time to try some of these suggestions out in the next couple of days . Thanks again.
Comments.UserDisplayName: Squishus Tyrannicus
Tags: <civievent><registration>
Title: how do I best configure this complex event registration scheme?
ThreadText: # how do I best configure this complex event registration scheme?
  
  (Asked by: username_0 on 2015-03-25)
  
  My organization will be hosting a large conference in a couple of months. For this event, we need several kinds of participant roles. Some of these roles will have special conditions. I have laid them out below.
  
  We'll need:
  
  * Attendees
    + We'll need "early bird" and late registrations.
  * Speakers
    + No fee for speakers
  * Staff
    + No fee for staff
  * Several vendor tiers
    + Platinum
      - Most expensive tier. Comes with 2 free registrations.
    + Gold
      - Less expensive tier. Comes with 2 free registrations.
    + Silver
      - Less expensive tier. Comes with 1 free registration.
    + Bronze
      - Least expensive tier. Comes with 1 free registration.
  
  We're also offering a banquet during this event. Each registrant needs the option to be able to bring +1 to the banquet for an extra fee.
  
  How can I go about creating this registration scheme?
  
  **Tags:** civievent, registration
  
  > **Comments:**
  > **username_1**: Early Bird and late registrations can be taken care of via price sets (Home » CiviCRM » Administer CiviCRM » Price Sets). That's pretty common stuff and works well. You'll want to create a price set for your event and then create price set fields for Early Bird and Late, dictated by the times that they are active on and expire on.  
  > **username_0**: Hey all. Thanks for the guidance! I just wanted to let y'all know that I haven't up and run off on this thread. I've just been busy and haven't had the opportunity to try out any suggestions. I'm hoping to find the time to try some of these suggestions out in the next couple of days . Thanks again.  
  
  ---
  
  ## 4 answers
  
  ### Answer by username_2 on 2015-03-25. Score: 5
  
  I would approach this roughly as follows:
  
  Early bird registration fees can be handled either through the standard pricing options or using a price set. given that you want to have the additional banquet option using a price set would be the way to go, and simply set the start and end dates for your price fields accordingly.
  
  All of the participant roles that you have defined can be handled in one of two ways: Either register all of these people via the back end so that you have control over whether they pay or not. Or, if you want them to register themselves through the website then set up suitable discount codes (using the CiviDiscount extension) and distribute those codes accordingly.
  
  > **Comments:**
  > **username_1**: This is how I would go about it... **Attendees:** "early bird" and late registrations handled through a price set or just price options. This is standard CiviCRM as you mentioned. No sign-in required.  **Speakers & Staff:** I would assign speakers and staff logins and have them login to access their no-charge registration option. I would use a little PHP/jQuery to customize the event registration page to allow for this. If they are logged in, show the Speakers & Staff rate, if not don't. **What I can't quite figure out is how to provide the 2 free registrations for sponsors.**  
  > **username_3**: @AndrewWasson our goal in this site is to have multiple answers per question, so I'd encourage you to write this as an answer rather than a comment.  
  > **username_1**: Hi username_3. I'm commenting to provide angles and tips and not to take away from full answers that others are submitting. I believe this is the way the exchanges are supposed to be used.  
  > **username_3**: @AndrewWasson I agree there is nothing wrong with comments, but since SE [wants us to have 2.5 answers per question](http://area51.stackexchange.com/proposals/77367) I thought I'd encourage  you to expand your comments into an answer since they are almost complete enough to be one :)  
  > **username_1**: Yes, good call... I missed that part about 2.5 answers per question. I'll do that then. Thanks.  
  
  ---
  
  ### Answer by username_4 on 2015-03-28. Score: 3
  
  We have just done something similar using price sets, CiviDiscount and Fancy Participant Listing to pull detailed results per option. We haven't used php or css to do anything to pretty up the booking form or show/hide options etc. If you have the skillset that would be infinitely better. We are using Drupal 6.
  
  Our event is over three days with conference sessions, exhibition, and two gala evenings. We invite Members and Suppliers (exhibitors and sponsors). Members get one sponsored delegate per member institution, suppliers get a mix of freebies dependant on whether they are Platinum, Gold etc.
  
  We found it easier to create three 'events' and registration forms
  
  1. Register to exhibit (book your stand/booth)
  2. Register to attend as a supplier delegate
  3. Register to attend as an exhibitor delegate
  
  **Attendees:** Options for early bird and standard prices. We opted to show both but you can choose to enable/disable them as appropriate. We issue CiviDiscount codes to cater for the sponsored delegates.
  
  **Speakers, staff and Committee members**: We issue CiviDiscount codes.
  
  **Special arrangements**: We created admin only options accessible by staff and committee volunteers via the backend for the inevitable 'special' arrangement someone needs but you don't want everyone to know about.
  
  **Exhibitors and sponsors**: we use CiviDiscount to provide free or reduced fees.
  
  Fancy Participant Listing is invaluable in helping us pull the data out of Civi into a (somewhat complex) Master Spreadsheet that ties into the event budget, rooming lists, flights info, numbers of delegates per event etc.
  
  > **Comments:**
  > **username_1**: Davy, That looks like a great approach. Were you able to provide 2 tickets per sponsor on varied levels of the Sponsor price set?  
  > **username_4**: Here is a quick overview of our sponsor packages:  PLATINUM gets 2 x Full Conference Delegates (single b/b Accommodation + both evening functions, delegate gift) plus 1 x Day Conference Delegate (no Accommodation).  
  > **username_4**: PLATINUM sponsors were given one discount code for the Full Package benefits and a second code for the Day delegate. The Full Package code could be used twice. The Day Delegate code expired after one use.  This resulted in us needing lots of codes - we found it easier to create one set and then copy them as often as needed in phpMyAdmin.  
  > **username_5**: What is referred to here as "Fancy Participant Listing" is likely the "Fancy Participant Search" that's part of the "Event Helper" CiviCRM extension https://civicrm.org/extensions/event-helper  
  
  ---
  
  ### Answer by username_0 on 2015-04-14. Score: 3
  
  I've (finally) had some time to work a bit more on this issue and I've managed to get the registration scheme pretty close to how I'd like for it to work.
  
  I've set it up using price sets. I created 3 radio fields, each one containing:
  
  * Attendee
  * Platinum Vendor
  * Gold Vendor
  * Silver Vendor
  * Bronze Vendor
  
  One radio set is for Early bird, one for regular registration, and one for late registration.
  
  I created a single checkbox field for inviting an extra banquet guest, and included a profile containing a "Participant Role" field.
  
  I'm using hook\_civicrm\_buildAmount to insert JavaScript and alter the event prices. I use JS to hide the "Participant Role" field, and change it to the appropriate value when the user selects an option from the price set.
  
  So if a user selects any of the vendor options, JS sets the value of the "Participant Role" field to "Vendor". I also set and hide the "Register Additional Participants" field based on the selected value.
  
  I then use hook\_civicrm\_buildAmount to hide vendor options for additional participants. If the initial user selected either "Platinum" or "Gold" vendor, I set the "Attendee" price to $0.00.
  
  Our administrative assistant will be registering volunteers, speakers, and staff manually.
  
  I've still got a kink or two to work out in terms of flow control, but this will suit my needs.
  
  
  ---
  
  ### Answer by username_1 on 2015-03-28. Score: 2
  
  This is how I would go about it...
  
  **Attendees:** "early bird" and late registrations handled through a price set or just price options. This is standard CiviCRM as mentioned by username_2. No sign-in required.
  
  **Speakers & Staff:** I would assign speakers and staff logins and have them login to access their no-charge registration option. I would use a little PHP/jQuery to customize the event registration page to allow for this. If they are logged in, show the Speakers & Staff rate, if not don't.
  
  **provide the 2 free registrations for sponsors:** It looks to me like this could be dealt with inside of the price set as well. I would create a field for the price set called "sponsorship" or something else that makes sense. I'd probably use radio buttons and create several entries for Gold, Silver, Bronze, etc... and I would set the participant count to 2.
  
  ***Note:*** I haven't tested the 2 free registration part so that might need some tuning up.
  
  > **Comments:**
  > **username_2**: I like the idea of using participant count to essentially allocate additional seats, and depending on the use case it could work. It would be nice to have a feature, perhaps within the CiviDiscount extension, that could handle this. Recently I wanted to offer a discount to each additional place booked (e.g. first person charged at 50, each additional person on the same booking charged at 30), and there's no way that I can see to handle it and collect the data on the people using those free/discounted places other than by handing out discount codes or writing custom code.  
  
  ---
  
  