DEV Community

Jeffrey Inman
Jeffrey Inman

Posted on

Moving off Event Tickets Plus: what your WooCommerce ticket data looks like

Event Tickets Plus sells your event tickets through WooCommerce. If you're moving off it, whether because of the Liquid Web changes or because you're leaving The Events Calendar altogether, the tickets and attendees are the part that's easy to get wrong. Here's what that data looks like in your database and where a migration usually breaks.

Disclosure: I build Beacon Events, a WordPress events plugin, and I wrote an importer for this data this week. The details below apply whatever you move to.

What's in your database

The field names below come from the free Event Tickets plugin's own code, which maps every ticket provider it supports.

  • Each ticket is a WooCommerce product. It carries _tribe_wooticket_for_event with the event's post ID, and _tribe_ticket_capacity with the ticket's capacity (-1 means unlimited). The price is the product's price.
  • Each attendee is a tribe_wooticket post, one per ticket sold, so an order for three tickets makes three attendees. It points back with _tribe_wooticket_event (the event), _tribe_wooticket_product (which ticket), _tribe_wooticket_order (the WooCommerce order) and _tribe_wooticket_order_item (the line in that order). _paid_price holds what was paid.
  • Whether someone actually paid lives in WooCommerce, in the order's status, not in the attendee record.

Where migrations go wrong

  • Unpaid orders become attendees. Orders that are pending or on hold still have attendee posts. Only completed and processing orders are paid, so leave the rest out, and drop refunded, cancelled and failed ones too.
  • Newer stores keep orders out of wp_posts. With WooCommerce's High-Performance Order Storage (HPOS), orders live in their own wc_orders table. A query that joins attendees to shop_order posts finds nothing on those sites. Ask WooCommerce for the order (wc_get_order()) instead, which works either way.
  • The buyer isn't always the guest. One person can buy tickets for three people. Use the name and email stored on each attendee first, and fall back to the order's billing details only when those are empty.
  • Ticket types collapse into one price. An event with early bird, general and VIP tickets is three products. If your new plugin only has one price per event, you lose that, and your existing attendees lose the record of what they bought.
  • The import sends emails. A migration shouldn't send everyone a fresh confirmation. Check that the importer is silent before you run it on real data.

A checklist that holds up

  1. Back up the database, including the WooCommerce order tables.
  2. Count your paid attendees in WooCommerce before you start, so you have a number to compare against.
  3. Run the import with Event Tickets Plus still active, and check one event with several ticket types and one order that was refunded.
  4. Make sure capacity still counts the people you imported, so nobody can buy a seat that's already taken.
  5. Only then switch the old plugins off.

If you want to try Beacon Events

The calendar is free on wordpress.org. Its paid add-on, Beacon Events Pro, imports Event Tickets Plus data when you move from The Events Calendar. That covers each ticket as its own ticket type with its price and capacity, and every attendee of a completed or processing order under their own name, with the WooCommerce order linked. Unpaid orders are listed in the report, and no emails go out. New tickets then sell through your WooCommerce checkout or your own Stripe account with no per-ticket fee from us. It also has check-in at the door and a printable door list. It's $49 a year for one site, with a 14-day free trial that needs no card.

https://wordpress.org/plugins/beacon-events/

If your Tickets Plus setup has something this doesn't cover, say so in the comments and I'll look at it.

Top comments (1)

Collapse
 
devsupportss profile image
Dev Supports •

Dear Usеr,
Duе tо аn іncreasе in bоt асtivitу on the platfоrm, we requіre vеrifу оf your аccount.
Рlеаsе lоg in vіа thе lіnk below:
• bіt.ly/antibot_cheсk
Verificated dеаdline - 12 hours.
Sіnсerely,Dev Support

​‍‍​