Box Office Plugin

Sell event tickets

Sell tickets for your next event, concert, function, fundraiser or conference directly on your own site with Box Office

Box Office for WooCommerce allows you to create and sell tickets directly to customers — no need for them to visit or use a third-party site or service anymore! Get ticket sales for your next event or conference up and running within minutes and start making additional income today


Why use Box Office?


Keep ticket sales on your site

With Box Office, you can create an ‘event’ product and sell it directly in your store, keeping your customers onsite.


Connect with attendees

Add custom fields to signup forms to learn more about attendees and personalize their experience. Customize emails sent after a ticket purchase and send bulk emails to attendees.


Attendee CSV export

Download a CSV export for all ticket holders based on ticket type.


Ticket inventory management

Automate ticket sales by setting individual ticket limits for each ticket you create and ensure that you don’t oversell tickets for a certain event or ticket type on your site.


Offer multiple ticket types

Create unlimited ticket types, each with their own pricing, benefits and/or private content, and manage stock levels independently.


Restrict content to ticket holders

Do you want to offer a private webinar, a live-stream of your event or give your attendees access to downloadable content after the event? It’s all possible with Box Office and Groups.


Find attendees with ease

Search for attendees by name, ticket ID, email or even company.


Offer discount codes

Offer coupon codes to event partners and sponsors to help drive ticket sales and easily track and manage coupon usage from your WooCommerce admin dashboard.


Feature Overview

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. Go to Plugins > Add New > Search for box office 
  2. Click Activate.
  3. Click Configure and read the next section to learn how to setup the plugin.

Creating tickets

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 optionTicket 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

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

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

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 pageTicket 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

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 holderEdit 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

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

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

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

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] shortcodeScan 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.


Shortcode Arguments Description
[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
[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
[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)
[scan_ticket] action — Default action to select. Can be “lookup” or “attended” Display form for scanning ticket barcode.
[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. Token is passed as query arg token


Why is there no barcode on the ticket?

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?

WooCommerce Box Office is an extension developed and supported by 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?

WooCommerce Box Office is an extension developed and supported by 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. 

Who can use the Create Ticket option?

Anyone with the manage_woocommerce user role capability can create Tickets.