WooCommerce Box Office

WooCommerce Box Office enables you to sell tickets online. It provides a full-featured ticketing solution for any type of event.

WooCommerce Box Office supports the Cart and Checkout blocks.

Feature Overview

↑ Back to top

WooCommerce allows you to set up any product to function as a ticket by creating a virtual product but excludes the ability to manage tickets. Box Office bridges that gap.

  • Manage tickets for as many events as you wish
  • Generate tickets that can have specific ticket-holder information attached
  • Collect info on individual ticket-holders
  • Allowing ticket-holders to manage their own info, regardless if they made the purchase
  • Send custom printable tickets
  • Bulk-email ticket-holders
  • Export ticket-holder info to a CSV document
  • Use WooCommerce Order Barcodes (separate purchase) to generate unique, scannable barcodes for each ticket

Requirements

↑ Back to top
  • WooCommerce version 11.1 or higher
  • WordPress version 7.0 or higher
  • PHP version 7.4 or higher

Installation

↑ Back to top

To start using a product from WooCommerce.com, you can use the “Add to store” functionality on the order confirmation page or the My subscriptions section in your account.

  1. Navigate to My subscriptions.
  2. Find the Add to store button next to the product you’re planning to install.
  3. Follow the instructions on the screen, and the product will be automatically added to your store.

Alternative options and more information at:
Managing WooCommerce.com subscriptions.

Plugin Settings

↑ Back to top

You can find WooCommerce Box Office setting at WP Admin > WooCommerce > Settings > Box Office:

Ticket Pages

↑ Back to top

My Ticket Page: Specify which page will be used as the ‘My Ticket Page’. The page should include the [my_ticket] shortcode in its content, and is where ticket holders can edit or print their individual tickets. A default My Ticket page with the slug my-ticket is created when the plugin is first installed.

Display Options

↑ Back to top
  • Add to Cart Button Text: Define text inside add to cart buttons for tickets in the product archive. When blank, defaults to “Ticket Detail”.
  • Ticket Title Prefix: Define title prefix before the ticket number to show for each ticket in a single product page. When blank, defaults to “Ticket #“.
  • Buy Ticket Button Text Singular: Define text inside the buy ticket button when the quantity of tickets to buy is one. When blank, defaults to “Buy Ticket Now”.
  • Buy Ticket Button Button Text Plural: Define text inside the buy ticket button when the quantity of tickets to buy is more than one. When blank, defaults to “Buy Tickets Now”.

Default Product Settings

↑ Back to top
  • Enable Ticket Printing: This will enable the ‘Print ticket’ button on the My Ticket / ticket edit page.
  • Enable Ticket Emails: This will send an email to the contact address for each ticket whenever it is changed.
  • Disable Ticket Editing: This will disable customers’ ability to edit their purchased tickets.

Logging

↑ Back to top

Enable Logging: Save debug messages to the WooCommerce System Status log. Note: this may log personal information. We recommend using this for debugging purposes only and deleting the logs when finished.

Create ticket products

↑ Back to top

Tickets start with creating a product, or editing an existing product in WooCommerce, then ticking a checkbox to designate as a ticket.

  1. Go to: WooCommerce > Products. 
  2. Select Add Product to add a new product. Or open an existing product. More info at Adding and Managing Products.
  3. Scroll down to the Product Data section, and tick the Ticket box.

Use a simple or variable product for tickets. Configure whether it is virtual and whether it needs stock management for your event.

For example: If an order is placed for 10 products, then 10 tickets are generated. The purchaser can edit each ticket and, by adding an email address to the ticket, send to each ticket-holder to view, edit and print.

4. Go to new ticket tabs made available in product data.

Next sections cover Ticket Fields, Ticket Printing and Ticket Emails. This is where you customize tickets and decide what info to gather on each ticket-holder, what printed tickets look like, and what emails they receive.

Event dates and times

↑ Back to top

You would enter this as part of the product description. You may also vote for this feature to be added at the Ideas Board.

Ticket Fields

↑ Back to top

Ticket fields are questions you ask each ticket-holder. It can be anything from their name to dietary requirements or any question unique to your event.

Type

Choose from these options for field type:

  • First name
  • Last name
  • Email address
  • URL
  • Twitter
  • Text
  • Dropdown menu
  • Radio buttons
  • Checkbox(es)

Name, email address, URL and Twitter fields are all standard text fields, and ticket-holder info is validated according to type.

Auto-fill, Contact, Required and other Options

For each field, you can choose:

  • Auto-Fill – Automatically pulls values from billing info and assists in gathering ticket info without purchaser input, making checkout smoother.
  • Drop down menu, radio buttons, checkbox(es) – Allows you to supply a comma-separated list of options to ticket-holders.
  • Email address fields – Can specify Yes/No if (a) the email address supplied by the ticket-holder should be used as the contact email address and if ticket emails are sent to that address; and (b) the email address should be used to source the ticket-holder’s Gravatar. The Gravatar is used in the [tickets] shortcode (see ‘Shortcodes’ section below).
  • Required – Make it a required or optional field to complete.

Use checkout billing details for tickets

Enable Use customer details for tickets when the purchaser’s billing details should also identify the ticket holder. Box Office hides the ticket fields on the product page and fills the mapped fields when it creates the tickets from the order.

Every ticket for that product in the order uses the same purchaser’s billing details. Leave this option off if you need a different name, email address, or answer for each attendee. With the option off, you can still use Auto-fill on individual ticket fields while keeping the attendee form available.

  1. Go to Products > All Products and edit the ticket product.
  2. In Product data > Ticket Fields, select Use customer details for tickets.
  3. Select Add Field. Enter a Label for the ticket field, then choose the billing detail in Checkout Field.
  4. Repeat for each field. For example, map First Name to First name, Last Name to Last name, and Email to Email address.
  5. Select Update to save the product.

The built-in choices are First name, Last name, Email address, Phone, Company, Country, Town / City, State, and Postcode / Zip. — None — leaves a field without a billing source. Map the email field to Email address to use it as the ticket’s contact address.

On a test site, buy two tickets with fictional billing details. Open both under Tickets > All Tickets and check that their mapped fields match the order’s billing details. If a field is blank, check its mapping and whether the order contains a value for that billing field.

When every ticket product in an order uses customer details, Box Office hides the ticket list from the order confirmation page and order emails. Orders containing a ticket product with this option off keep the ticket list. Ticket emails are controlled separately.

To collect attendee details on the product page again, clear Use customer details for tickets, check the standard ticket fields, and save the product.

Ticket Printing and Options

↑ Back to top

Open Product data > Ticket Printing and Options and select Enable ticket printing to let ticket holders print their tickets. Add the event information to the content editor and save the product.

For field placeholders and HTML examples, see Customize printed Box Office tickets.

When WooCommerce Order Barcodes is active, select Include barcode to add the barcode below the printed ticket content. Open a test ticket and use Print ticket to check the result.

Ticket Emails

↑ Back to top

Use Product data > Ticket Emails to configure the subject and content sent to the ticket’s contact email address when a ticket is purchased or updated. Check that Box Office emails are enabled in WooCommerce’s email settings.

A ticket email can include a clickable link to the recipient’s ticket. See Add a clickable ticket link to Box Office emails for the HTML example, personalization placeholders, barcode option, and private-content links.

Before using the template for customers, place a test order with a contact email address you control. Open the ticket email and follow the link. It should open the matching ticket.

Selling tickets

↑ Back to top

Selling tickets is the same as selling a normal product in WooCommerce.

When Use customer details for tickets is off, the product page displays an attendee form based on the ticket fields you defined.

Updating quantity also updates the ticket form. For example: Changing the quantity to 2 will display two ticket forms — Ticket #1 and Ticket #2. Fields with auto-fill will already have data in them if the customer is logged-in.

Additionally, shoppers will be presented with an option that allows them to opt-out from having their details included in any public attendee lists (please see the section on Shortcodes to learn more about this):

After purchase, ticket links are available in the following places. The order confirmation and order email lists are hidden when every ticket product uses customer details:

  • Order complete page
  • Order complete email
  • My Account page
  • PDF invoice generated by WooCommerce PDF Invoices (separate purchase)

Each ticket has a private link to its details. Share it only with the intended ticket holder.

Anyone with a ticket’s private link can access it. Keep the link private.

Updating tickets

↑ Back to top

As the ticket-holder

Ticket-holders can edit tickets by accessing the unique URL.

  • Ticket purchaser can edit the ticket details
  • Ticket purchaser can change the email address, and then the new email address is sent the email created for this ticket (see ‘Ticket Emails’ section above). Email is only sent if the email address is different from the previously saved email address. Ticket-holder can then edit his/her own details via the URL.

As the site admin

Go to Tickets > All Tickets to manage purchased tickets.

Under All Tickets, you can:

  • View purchased tickets along with info supplied by ticket-holders
  • Open a ticket, edit Ticket Fields info and look up the ticket edit page URL for each ticket

The “Create Ticket” option allows you to create a new ticket for a customer. You can connect this to an order for payment or choose not to. If the ticket is connected to an order it will be set to the “Pending Payment” status until the user logs in to make the necessary payment.

Staff permissions

↑ Back to top

Shop managers and administrators can create tickets. Custom roles need permission to manage WooCommerce.

Manually create/add tickets

↑ Back to top

You can manually add tickets and optionally assign them to existing users and/or link them to existing orders.

  1. Go to Tickets > Create Ticket
  2. Customer – leave as Guest if the customer is not already registered on your site, or select a registered customer from the dropdown by typing their name;
  3. Ticket-enabled Product – select a product from the dropdown (must be configured as a ticket product to appear here);
  4. Ticket quantity – this will determine how many sets of data will be displayed in the next step;
  5. Create Order Method –
    1. if you want to create an order for this/these ticket/tickets, select the 1st option, Create a new corresponding order for this new ticket. Please note – the ticket will not be active until the order is processed/completed.
    2. if you want to link this/these ticket/tickets to an existing order, select the 2nd option, Assign ticket(s) to an existing order with this ID, and specify the order ID.
    3. If you want to create the ticket(s) without involving an order at all, select the 3rd option, Don’t create an order for this ticket.
  6. Select Next to complete the ticket creation process.

On the next screen, you will see sets of ticket fields equivalent to the Ticket Quantity specified above.

  1. Fill out all the required fields in each set (required fields are marked with an *)
  2. Send confirmation email to each ticket? – select this option to send a confirmation email to each of the emails specified in the ticket fields;
  3. Select Create ticket to create the ticket and be shown the Ticket Created screen with the details of the freshly minted ticket, and a link to the order if that option was selected.

Emailing ticket holders

↑ Back to top

You can set up an automated, one-off email as mentioned above.

You can also send specific emails to all ticket-holders.

  1. Go to: Tickets > Tools.
  2. Open the ‘Email’ tab.
  3. Select which ticket product you want to email.
  4. Enter a subject line and content using the WordPress content editor.

5. Preview or select “Send to all ticket holders” if you’re ready. A job is then put in the queue, and batches are sent every 10 minutes.

 Previously sent emails appear in a table below the email editor.

In this table, you can view email subjects, which ticket products were targeted, how many email addresses were targeted, and how many emails were sent. You can also select the email subject to see the email log.

Exporting tickets

↑ Back to top

The ability to export tickets is useful for record-keeping, accounting, reports, and lists.

  1. Go to: Tickets > Tools.
  2. Open the ‘Export’ tab.

3. Select which tickets you want to export from the dropdown. By default, they are all selected.
4. Select the ‘Download Export File’ button. This creates a CSV file of all fields for selected tickets. The CSV also contains:

  • Ticket ID
  • Ticket status
  • Name of ticket
  • Ticket edit URL
  • Date of purchase
  • Order ID
  • User ID of the purchaser
  • Tickets fields you defined in the product

This CSV may also be used to import ticket data in another system (such as a newsletter service) or used as dynamic data to print out name badges.

Tickets reporting

↑ Back to top

The ability to get a top-level view of the total number of tickets sold to date, per event/product, is possible within the Reports screen of WooCommerce.

  1. Go to: WooCommerce > Reports.
  2. Select on the Tickets tab.

Scanning tickets

↑ Back to top

This option requires the purchase and activation of WooCommerce Order Barcodes (separate extension).

Add a Shortcode block to a page and enter [scan_ticket] to display the scanning form. Sign in as authorized staff before using it.

The form allows you to look up the ticket-holder and mark them as attended via ticket barcode. More info at WooCommerce Order Barcodes documentation on how to use the barcode scan device.

An explanation for the [scan_ticket] shortcode is described in Shortcodes below.

Barcode requirements

↑ Back to top

You need to purchase and activate WooCommerce Order Barcodes, which is a separate extension. Once activated it can be used as explained in the Ticket Printing and Options and Ticket Emails sections.

Tickets already marked as attended

↑ Back to top

When using WooCommerce Box Office with WooCommerce Order Barcodes, please note that a ticket can only be scanned and marked as attended once. If it is already scanned and marked as attended, it’s not possible to scan and mark it as attended again:

Shortcodes

↑ Back to top
ShortcodeArgumentsDescriptionExamples
[user_tickets]user_id — User ID
amount — Can be “all” or “-1” or any number.
fields_format — Can be “flat” or “list”
Display tickets purchased by user[user_tickets user_id=X amount="all" fields_format="flat"]
[order_tickets]order_id — Order ID
amount — Can be “all” or “-1”, or any number.
fields_format — Can be “flat” or “list”
Display tickets of order[order_tickets order_id=X amount="all" fields_format="flat"]
[tickets]products — Comma-separated product IDs
amount — Can be “all” or “-1” or any number.
order_by — Field to sort by; defaults to “date”.
order — Sort direction: “ASC” or “DESC”; defaults to “DESC”.
avatar_size — Size of avatar to display. Default is 96.
columns — Number of columns in grid. Default is 3.
Display all tickets from product(s)[tickets products=X,Y amount="all" order_by="date" order="DESC" avatar_size=86 columns=4]
[scan_ticket]action — Default action to select. Can be “lookup” or “attended”Display form for scanning ticket barcode.[scan_ticket action="lookup"]
[ticket_private_content]product_id — Ticket product ID.Hide content between [ticket_private_content] and [/ticket_private_content] if ticket token is unavailable in the URL. Use the developer guide to private-content email links to configure the recipient’s access link. If token is not passed in the URL then a form will display to request a link.[ticket_private_content product_id=X]
Restricted content
[/ticket_private_content]

Ticket lists protect attendee privacy:

  • The [user_tickets] and [order_tickets] shortcodes will not show any information to users other than store owners (shop managers and administrators) or the specific user who purchased the ticket. This is a privacy measure, to better protect customer information.
  • The [tickets] shortcode will only list details of customers who have consented to share their information in public-facing lists.

Attendee privacy settings

↑ Back to top

Admins can update PII (personally identifiable information) settings—whether or not ticket holders should be included in any public list of attendees, like the one generated by the [tickets] shortcode—in bulk, via the Tickets ▸ Tools ▸ User Privacy admin screen.

Compatibility and limitations

↑ Back to top

Box Office and Event Tickets Plus

↑ Back to top

WooCommerce Box Office is an extension developed and supported by WooCommerce.com that transforms products into tickets and allows you to manage them yourself on any store with WooCommerce installed (free). It’s best for a one-off or occasional event, or if you offer a service and want to sell stand-alone tickets.

Tickets for WooCommerce, now known as Events Tickets Plus, is a third-party extension that only works with Events Calendar (separate purchase). It’s best for those who have a series of events or ongoing, recurring events and wish to add tickets.

Box Office and Bookings

↑ Back to top

WooCommerce Box Office is an extension developed and supported by WooCommerce.com that transforms products into tickets and allows you to manage them yourself on any store with WooCommerce installed (free). It’s best for a one-off or occasional event, or if you offer a service and want to sell stand-alone tickets.

WooCommerce Bookings is also an extension developed and supported by Woo, but its intention is to transform products into items of bookable time. This extension allows you to sell your time (e.g. customers can book appointments at a hair salon), rent your products (e.g. customers can reserve party equipment), or book rooms in your hotel by using Bookings and its free add-on extension, Accommodation Bookings.

Troubleshooting

↑ Back to top

Staff can’t scan tickets

↑ Back to top

Check that WooCommerce Order Barcodes is installed and active, and that the staff member is signed in with a shop manager or administrator account. Box Office requires permission to manage WooCommerce before it displays the scanning form or processes a barcode scan.

If your site uses a custom staff role or custom scanning permissions, ask the developer maintaining that customization to check its access rules. Keep ticket scanning limited to authorized staff.

Questions and support

↑ Back to top

Something missing from this documentation? Still have questions and need assistance?

  • If you have a question about a specific extension or theme you’d like to purchase, contact us to get answers.
  • If you already purchased this product and need some assistance, get in touch with a Happiness Engineer via our support page and select this product’s name from the Product dropdown.

Related Products

Power your membership association, online magazine, elearning sites, and more with access control to...

WooCommerce Subscriptions is a WooCommerce extension that lets customers subscribe to your products or...

Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.