How to Create Event Ticket PDFs with QR Codes for WooCommerce

Sell a conference pass, a workshop seat or a show ticket as a normal WooCommerce product, and let PDF Invoice for WooCommerce + Drag and Drop Template Builder (plugin slug pdf-for-woocommerce, by add-ons.org) turn every paid order into an event ticket PDF: the event name, the attendee, a unique ticket number and a QR code for check-in, attached to the order emails and downloadable from My Account. This guide builds the ticket on A5 landscape from a blank template, connects it to paid orders and shows what the customer receives. The shipping label guide explains the QR code element in more detail.

Video tutorial

1. What the Ticket Contains

BlockContentMerge tags
Event“ADMIT ONE”, the event name taken from the ordered product, the date and venueDynamic Field for Elementor Forms Pro + static date/venue text
Attendee & ticketAttendee name and email, ticket number, quantity, amount paid and datePIERLUIGI CIPRIANI, [email protected], TKT-8448, 1, 19.00, USD, August 28, 2026
QR codeThe ticket number, scannable with any phone at the doorTKT-8448 inside the Qrcode element
ConditionsEntry rules, refund policy, contact[email protected], https://add-ons.org

Set up the product first: create a simple, virtual product for the event with the date and venue in its short description, so the shop page and the ticket say the same thing.

The event product page WooCommerce Growth Summit 2026 General Admission with date, time and venue in the short description
The event as a virtual WooCommerce product.

2. Build the Ticket Template

Builder note: a new element is inserted just above the element you drop it on (the first element of an empty row is simply added). So create the footer first and drop every other block onto it; they slide in above the footer in the order you add them.

Step 1: New template, A5 landscape

Go to PDF Templates → New Template, name it Event Ticket, click Settings PDF and set Orientation to Landscape and Paper Size to A5 (148 × 210 mm). A5 fits a pocket when folded once and prints two per A4 sheet.

The Settings PDF panel of the new Event Ticket template with Landscape orientation and A5 paper size
Settings PDF → Landscape, A5.

Step 2: Conditions (footer)

Drag a Text/HTML element into the empty row and type the entry conditions in a small font:

Present this ticket, printed or on your phone, at the entrance. One scan per ticket. Non-refundable.
Questions: [email protected] · https://add-ons.org
The footer Text element selected with the entry conditions in the Editor panel
The conditions line, 10 px.

Step 3: Event block

Drop a Text/HTML element onto the footer. It lands above it. Type:

ADMIT ONE
Dynamic Field for Elementor Forms Pro          ← 26 px bold
14 March 2026 · 9:00–17:00 · Harbor Convention Center, Seattle

Dynamic Field for Elementor Forms Pro prints the name of the first product in the order, so the ticket always carries the event the customer bought.

The event Text element selected: ADMIT ONE, the product name merge tag in 26 px bold and the date and venue
The event block. The canvas shows the sample order, the Editor the merge tag.

Step 4: Attendee and ticket number

Drop another Text/HTML element onto the footer:

Attendee: PIERLUIGI CIPRIANI · [email protected]
Ticket No: TKT-8448 · Qty: 1 · Paid: 19.00 USD on August 28, 2026
The attendee Text element selected with the billing name, email, ticket number, quantity and amount merge tags
The attendee block: who, which ticket, how many, what was paid.

Step 5: QR code

Drop the Qrcode element onto the footer. Set its Content to TKT-8448 and the Width to 120 px. The code is rendered on your server into the PDF, so it works offline and in emailed files.

The Qrcode element selected with TKT-8448 as its content and width 120
Qrcode element: content = ticket number, width 120 px.

Click Save.

The finished Event Ticket template in the builder: event block, attendee block, QR code and conditions
The finished ticket template with the sample order.

3. Generate the Ticket for Paid Orders

Go to WooCommerce → Settings → PDF → Add new PDF:

The PDF setting for the event ticket: label Event ticket, template Event Ticket, file name ticket-TKT-8448, statuses Processing and Completed, attached to the processing, completed and order details emails, My Account download for processing and completed
The event ticket setting.
FieldValueWhy
LabelEvent ticketButton label in the admin, the orders list and My Account.
PDF TemplateEvent TicketThe template from section 2.
PDF Nameticket-TKT-8448e.g. ticket-TKT-1788.pdf
Enable when order statusProcessing, CompletedThe paid statuses; unpaid orders never get a ticket.
Attachment toProcessing order, Completed order, Order detailsThe ticket travels with the order confirmation and can be re-sent from the order screen.
PasswordoptionalProtect tickets for exclusive events; share the password separately.
Allow My Account invoice downloadOnly for specific order statuses → Processing, CompletedCustomers can re-download the ticket any time.
The PDF settings list with the Event ticket row
The ticket next to the other documents.

4. What the Customer Receives

After checkout the order becomes Processing (or Completed for virtual products with automatic completion). At that moment the ticket is generated and attached to the confirmation email. It is also available in My Account → Orders and on the order page.

My Account Orders list with an Event ticket button next to the completed order
My Account → Orders: the Event ticket button.
The My Account order page with the Event ticket download link
The order page lists the ticket download.
The generated A5 landscape event ticket: ADMIT ONE, WooCommerce Growth Summit 2026 General Admission, date and venue, attendee Nami Joan, ticket number TKT-1788, quantity, amount paid, a QR code and the conditions
The generated ticket for order #1788.

In the admin, the order screen has the ticket in the PDF box with Download, Preview and Regenerate, and Order actions → Send order details to customer re-sends it.

The PDF box on the order screen with the Event ticket entry
Order screen → PDF box → Event ticket.

5. Check-in at the Door

  • Scan the QR code with any phone camera or a barcode app: it returns the ticket number TKT-1788.
  • Export the paid orders (WooCommerce → Orders → filter Processing/Completed) to a sheet before the event and tick each ticket number as it is scanned; the quantity on the ticket tells you how many people it admits.
  • For automated check-in, encode the order URL instead (https://add-ons.org/my-account/view-order/8448/) so staff can open the order on a phone and mark it with an order note.

6. Tips

  • One ticket per order: the plugin generates one PDF per order. Print the quantity on the ticket (as above) or ask for one order per attendee if every person needs an individual code.
  • Attendee names: if you collect attendee names with a checkout-fields plugin, print them with .
  • Several events: the setting applies to every paid order. Keep tickets in a dedicated event store, or disable the setting outside the sales period; the product name on the ticket always matches what was bought.
  • Design: add an Image element with the event artwork above the event block, or a background image in Settings PDF; keep the QR code at least 100 px wide for reliable scanning.
  • Regenerate: after editing the template, click Regenerate on an order to rebuild its ticket; emails attach the stored file.

7. Frequently Asked Questions (FAQ)

Is the QR code unique?

It encodes the order number, which WooCommerce never reuses, so every ticket has a unique code. Add the order date or the customer ID to the content if you want a longer code.

Can I generate one ticket per seat?

Not from one order: the plugin creates one PDF per order. Use quantity on the ticket, or sell one ticket per order.

Does the ticket work on a phone?

Yes. The PDF is emailed and downloadable from My Account; the QR code scans from the screen.

Can I stop tickets for other products?

The current conditional logic compares generic fields, not products. Keep the ticket setting enabled only while you sell tickets, or run the event shop as a separate store.

Can I add the attendee’s photo or a seat number?

Seat numbers can come from an order meta field (checkout field plugins) with ; photos are not supported.