I'm working on setting up an event there are 2 ticket types: individual tickets are $20 each Table of 8 is $130

So a person might purchase 1 ticket at 20 or 2 at 40 or a table of 8 for 130. However many tickets they purchase I need to collect the names.

I'm using Drupal 7 and have webform so that's an option. I've never set up an event like this in Civi so struggling a little bit to make it work.

  • That's a good use case for webform_civicrm! Happy to share some examples - do you need just Names or would you like to generate Contact records for them? Commented Apr 10, 2017 at 20:17
  • Please do. I've been trying to set something up with webform civi but surely there's an easier way than what I'm doing.
    – frTommy
    Commented Apr 10, 2017 at 20:18
  • Contact records
    – frTommy
    Commented Apr 10, 2017 at 20:45
  • Ok got a working example for you - posting some screenshots shortly. Commented Apr 11, 2017 at 15:09
  • Hi - I've also added what the conditionals would look like to hide/show appropriate number of Guest fields - based on the # tickets that is selected; Commented Apr 12, 2017 at 0:21

1 Answer 1


Definitively a good use case for webform_civicrm! I've drafted an example for you - here's the screenshots:

  1. I always use webform, webform_civicrm, webform_validation modules

  2. In CiviCRM: create Event - it really needs nothing other than a Type, Role, Title - (if needed) a limit on the number of participants; mine is a Public Event (not sure that's needed - but 99% of my Events are public so I made that default); Leave everything else blank (Fees, Online registration tabs - not needed). This is what it looks like:

enter image description here 3. In CiviCRM: make sure you have a Contribution Page that has a Payment Processor installed that you'd like to use. It can be a page completely not related to the Fundraising Event.

  1. In Webform: View (see below) - for Transparency I'm showing a lot of fields here that you could hide if you like:

enter image description here

  1. If you toggle to Five Tickets: (a Table is $40 -> so $8/each Participant):

enter image description here

  1. Conditionals are the key thing in making this happen:

enter image description here

  1. Here's the checkout for a Table: enter image description here

  2. And in CiviCRM: 5 Contact Records -> all Contacts registered as Participants in the Event:

enter image description here

  1. Things to keep an eye on: Guest Contacts -> duplicate records; First Name + Last Name + Email address would be good if using unsupervised rule (no logged in user); You can make your own rule and use that for your Guest Contacts too. What duplicate rules work best for you really depends on your specific CiviCRM;

  2. I typically add relationships - easy with webform_civicrm to give all Guests a Relationship to Primary Contact.

  3. UPDATE: adding in conditionals to show the number of Guests fields: This properly toggles the fields from Primary Contact + Guest 1 (in case two tickets is selected) to Primary Contact + Guest 1 + 2 + 3 + 4 (in case five tickets are selected) - I find it easier to go about it with isn't shown.

enter image description here

  • Would you do a screenshot of the Civicrm part of the webform especially the Event and Contribution part. So there's not any way to make the guest fields update automatically to the number of tickets chosen? For instance rather than radio buttons have a drop down for number of tickets and then that many guest fields appear?
    – frTommy
    Commented Apr 11, 2017 at 15:54
  • For sure you can do that - you just need more Conditionals to hide the Guest fields that should not be shown depending on what ticket number is set at. Commented Apr 11, 2017 at 16:04
  • So I added additional conditionals but get an error when saving. I posted the screenshots to the original question.
    – frTommy
    Commented Apr 11, 2017 at 19:57
  • Right you can only have one action per webform element; You need to do an OR - if tickets = 1 or tickets = 2 or .... tickets = 7 then Guest8 is not shown Commented Apr 11, 2017 at 20:57
  • 1
    In D7-> you need webform_layout module; in D8 -> you can use the baked in flexboxes Commented May 22, 2019 at 16:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.