WooCommerce Integration
WooCommerce Integration
If you already run a WooCommerce store or want to use WooCommerce’s extensive payment gateway ecosystem, Tickets Please can route all paid ticket purchases through WooCommerce’s cart and checkout. Tickets are synced as WooCommerce products, orders flow through WooCommerce’s standard pipeline, and attendee records are created automatically when orders complete. This page explains how the integration works and how to configure it.
Enabling the Integration
Tickets Please detects WooCommerce automatically when both plugins are active. The integration activates on the plugins_loaded hook by checking class_exists( 'WooCommerce' ).
To enable or disable the WooCommerce integration:
- Go to Events > Settings > Integrations.
- Toggle WooCommerce Integration on or off.
- Click Save Settings.
When enabled, paid tickets are sold through WooCommerce instead of the built-in checkout. RSVP tickets are not affected and continue to use the Tickets Please RSVP system regardless of this setting.
Product Sync
When you create a paid ticket in Tickets Please, the integration automatically creates a corresponding WooCommerce Simple Product. This sync is bidirectional:
| Ticket Field | WooCommerce Product Field |
|---|---|
| Ticket title | Product name |
| Ticket price | Product regular price |
| Ticket status (publish/draft/trash) | Product status |
Two meta fields maintain the link between the ticket and its WooCommerce product:
- On the ticket:
_tec_wc_product_idstores the WooCommerce product ID - On the product:
_tec_ticket_idstores the Tickets Please ticket ID
Stock Management
WooCommerce stock management is intentionally disabled for ticket products (manage_stock is set to false). Tickets Please manages capacity at the ticket level, not through WooCommerce’s stock system. This approach avoids conflicts and ensures capacity is tracked consistently whether tickets are sold through the frontend, REST API, or admin.
Lifecycle
When you trash a ticket in Tickets Please, the corresponding WooCommerce product is also trashed automatically. Restoring the ticket restores the product. Permanently deleting the ticket permanently deletes the product.
Cart and Checkout
When WooCommerce integration is active, the Add to Cart button on event pages adds the synced WooCommerce product to the WooCommerce cart. Each cart item carries metadata identifying the source event and ticket:
tec_event_id— the event post IDtec_ticket_id— the ticket post ID
Tickets Please validates capacity on every cart update. If a ticket sells out while items are in the cart, the buyer sees a notice and the unavailable items are removed.
Checkout Compatibility
The integration supports both WooCommerce checkout experiences:
- Block Checkout (default in WooCommerce 8+): Hooks into
woocommerce_store_api_checkout_order_processed, which receives the fullWC_Orderobject. - Classic Checkout: Hooks into
woocommerce_checkout_order_processed, which receives the order ID as an integer.
Both hooks trigger the same attendee creation logic. You do not need to configure anything differently based on your checkout type.
Gravity Forms on Checkout
If your tickets have Gravity Forms attached for attendee data collection, the integration renders per-attendee Gravity Forms fields on the WooCommerce checkout page. Because the Gravity Forms rendering requires classic form HTML elements, Tickets Please automatically replaces the WooCommerce Block Checkout with the classic checkout shortcode when Gravity Forms fields are present.
Order Processing
When a WooCommerce order containing ticket products is completed, Tickets Please processes it automatically:
- Attendee creation — one
tec_tc_attendeerecord is created for each ticket line item, multiplied by quantity. Three General Admission tickets produce three attendee records. - Order linking — each attendee stores the WooCommerce order ID in
_tec_wc_order_idfor cross-referencing. - Capacity update — the ticket’s available capacity is decremented.
- Confirmation email — the buyer receives a Tickets Please confirmation email in addition to the standard WooCommerce order email.
Order Status Mapping
WooCommerce order status changes propagate to attendee statuses:
| WooCommerce Order Status | Attendee Status |
|---|---|
| Completed | Completed |
| Refunded | Refunded |
| Cancelled | Cancelled |
When an order is fully refunded through WooCommerce, all associated attendees are marked as refunded and their capacity is restored to the ticket pool.
Using WooCommerce Payment Gateways
With the integration active, buyers pay through whatever payment gateways you have configured in WooCommerce. This gives you access to WooCommerce’s full payment gateway ecosystem, including:
- Stripe (via WooCommerce Stripe Payment Gateway plugin)
- PayPal (via WooCommerce PayPal Payments plugin)
- Square, Authorize.net, Braintree, and many others
Configure your payment gateways under WooCommerce > Settings > Payments as you normally would. Tickets Please does not interfere with payment gateway configuration when WooCommerce integration is active.
When to Use WooCommerce vs. Built-in Checkout
| Scenario | Recommended Approach |
|---|---|
| You already have a WooCommerce store | WooCommerce integration |
| You need a payment gateway not built into Tickets Please | WooCommerce integration |
| You sell both physical products and event tickets | WooCommerce integration |
| You only sell event tickets and want a simpler setup | Built-in checkout |
| You want the fastest possible checkout experience | Built-in checkout |
You can switch between the two approaches at any time from Events > Settings > Integrations. Existing orders and attendees are not affected by toggling the integration.
Common Questions
Do I need WooCommerce for RSVP events? No. RSVPs are free and handled entirely by Tickets Please. WooCommerce is only involved in paid ticket sales.
Can I sell tickets and regular products in the same WooCommerce cart? Yes. Ticket products appear in the WooCommerce cart alongside any other products. The buyer checks out once and Tickets Please processes the ticket line items from the combined order.
What happens if I deactivate WooCommerce? The integration disables gracefully. Existing attendees and orders remain in the database. You can switch to the built-in checkout for future sales, or reactivate WooCommerce to resume the integration.
Are ticket products visible in my WooCommerce shop page?
By default, yes. If you want to hide them from the shop catalog, you can set the product visibility to “Hidden” or use a WooCommerce filter to exclude products with the _tec_ticket_id meta.
Can I use WooCommerce coupons for ticket purchases? Yes. Standard WooCommerce coupons apply to ticket products like any other product. You can create percentage or fixed-amount discounts.
Does the integration support WooCommerce subscriptions? No. Ticket products are created as Simple Products. Subscription-based ticketing (e.g., season passes) is not currently supported through this integration.
Next Steps
- Payment Gateways — configure Tickets Please’s built-in payment gateways instead
- Cart & Checkout — understand the built-in cart and checkout flow
- Order Confirmation — what buyers see after completing a purchase