1. Documentation
  2. Plugins
  3. WooCommerce
  4. Extensions
  5. WooCommerce Box Office

WooCommerce Box Office

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

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


  1. Purchase the product from WooCommerce.com
  2. Download the ZIP file from your WooCommerce.com dashboard
  3. Go to Plugins > Add New > Upload and select the ZIP file you just downloaded
  4. Click Install Now and then Activate.
  5. Read on to learn how to setup and the product.

Creating tickets ↑ 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.
New ticket poduct option
Ticket option

Any product — simple, variable, physical, digital — designated as a ticket is unique.

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.

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.


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.

Ticket Printing

Tick the box if you want tickets to be printable by the ticket-holder. Using the editor, you have full control of ticket design by adding, deleting and reordering ticket fields/labels you specified in Ticket Fields.

Content of the ‘Ticket Printing’ tab

Once you have enabled printing and decided on ticket content, a ‘print ticket’ button becomes available on the ticket page for all ticket-holders.

Ticket Emails ↑ Back to top

Tick the box if you want ticket emails sent to the contact email address whenever a ticket is updated (more below). Using the editor, you have full control of email content by entering a subject and adding, deleting and reordering the fields/labels you specified in Ticket Fields.

Content of the ‘Ticket Emails’ tab

Info will be pulled from purchaser/ticket-holder input.

Selling tickets ↑ Back to top

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

On the single product page, a form is displayed based on ticket fields you defined:

Ticket form on single product page
Ticket form on single product page

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.

After purchase, a list of tickets can be seen on:

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

In each location, there is a link to the ticket edit page where it’s possible to alter info. The URL follows this format: [domain]/?ticket=edit&token=XXXXXXXXXXXXXXXXXXX

Each URL is unique to the ticket. While publicly accessible, the URL is only shared with the purchaser and then the purchaser can choose to share or not.

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.
Edit ticket page for ticket holder
Edit page for ticket-holder

As the site admin

WooCommerce Box Office adds a new item to your dashboard menu:

Tickets menu item

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
Edit ticket in admin dashboard

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.

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 toTickets > Tools.
  2. Open the ‘Email’ tab.
  3. Select which ticket product you want to email.
  4. Enter a subject line and content using the familiar WordPress content editor:
Ticket email tool

5. Preview or click “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.

Previously sent emails table

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 click 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.
Box Office export tool

3. Select which tickets you want to export from the dropdown. By default, they are all selected.
4. Click 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. Click on the Tickets tab.

Scanning tickets ↑ Back to top

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

Use the [scan_ticket] shortcode in a post/page to produce a scan ticket form.

Scan ticket form using [scan_ticket] shortcode
Scan ticket form with [scan_ticket] shortcode

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.

Shortcodes ↑ Back to top

[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 — Order by. Default is “date”
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="date" 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. The restricted content in between the shortcodes will only display if the URL contains ?token=x. The link for this can be generated in the ticket email with the {token} label. 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

FAQ ↑ Back to top

Why is there no barcode on the ticket? ↑ Back to top

You need to purchase and activate WooCommerce Order Barcodes, which is a separate extension.

What’s the difference between WooCommerce Box Office and Tickets for WooCommerce? ↑ 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.

What’s the difference between WooCommerce Box Office and WooCommerce 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.

Where do I add a date and time to the ticket?

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

Who can use the Create Ticket option? ↑ Back to top

Anyone with the manage_woocommerce user role capability can create Tickets.

Troubleshooting ↑ Back to top

Certain users are unable to scan tickets ↑ Back to top

The default permissions required to scan tickets are that the user has the ‘manage_woocommerce’ capability, but you can change this to anything you want (or even make it different per user).

If your user is unable to see the scan form or gets an error when you don’t think you should, then adding the following snippet to your theme’s functions.php file will enable ticket scanning permissions for all users (but you can edit it to process any requirements you like):

add_filter( 'woocommerce_box_office_scan_permission', 'modify_woocommerce_box_office_scan_permission' );
function modify_woocommerce_box_office_scan_permission( $has_permission ) {
  // Do any required permission checks here
  $has_permission = true;
  return $has_permission;

Questions and Support

Do you still have questions and need assistance? 

WooCommerce - the most customizable eCommerce platform for building your online business.

  • 30 day money back guarantee
  • Support teams across the world
  • Safe & Secure online payment