Resources · Feature guides
Setting up WooCommerce ticketing for Site Calendar Pro
Sell event tickets through WooCommerce so every order flows through your existing cart, checkout, tax rules and reporting. Covers gateway choice, configuration, a real test purchase, and a refund.
- You'll need: Site Calendar Pro licence, WooCommerce 8.0+, a working payment gateway
- Estimated time: 15 minutes
- Difficulty: Intermediate — assumes a working WooCommerce shop
Why use WooCommerce?
If you already run an online shop with WooCommerce, you can sell event tickets through the same cart and checkout your customers already know. Every ticket sold creates a real WooCommerce order — with stock control, tax handling, coupons, multiple payment methods, and reporting all flowing through the system you already have.
If events are the only thing you sell, Stripe direct is lighter to set up. WooCommerce makes sense when you're already invested in its ecosystem — for instance, you sell physical goods or memberships and want tickets to live alongside them.
Before you start
You should have ready:
woocommerceinstalled and activated, version 8.0 or later- At least one WooCommerce payment method enabled and tested (Stripe, PayPal, GoCardless, Cash on Delivery — any gateway that lets you complete a real checkout)
- WooCommerce currency and tax settings already configured under WooCommerce → Settings
- Site Calendar Pro 1.1.1.1 or later installed and activated (see Installing Site Calendar Lite and Pro and Activating your Pro licence)
Site Calendar Pro doesn't override WooCommerce's payment, tax or email systems — it sits on top and feeds tickets into the existing flow.
Step 1 — Choose WooCommerce as the payment gateway
In WordPress admin, go to Site Calendar → Settings → Tickets. At the top of the tab you'll see a Payment gateway selector. The options shown depend on what's installed:
- Stripe — always available
- WooCommerce — appears when WooCommerce 8.0+ is active
- Both — lets you pick the gateway per-event in the event editor (advanced)
Select WooCommerce.
While you're on this tab, confirm the other settings:
- Currency — should match what your WooCommerce shop already charges in. Site Calendar Pro auto-detects this from your WordPress locale (GBP for en_GB, USD for en_US, etc.).
- VAT rate and Tax inclusive — UK sites default to 20% inclusive. Adjust if you're outside the UK or don't charge VAT on tickets.
Click Save Settings at the bottom of the page.
Step 2 — Add a paid ticket to an event
Go to Site Calendar → Events and either edit an existing event or click Add New. Scroll to the Tickets meta box and click Add ticket.
For a test, fill in:
- Label:
Standard entry - Price:
1.00(keeps the test cost under £1 / $1 / €1) - Capacity:
5 - Max per order:
2
Click Update on the event.
Step 3 — Do a real test purchase
Open the event's public page in an incognito browser. The Register form on the event page will show your ticket with a quantity selector and a Buy tickets button. Click it.
What happens next:
- Site Calendar Pro creates a hidden, virtual WooCommerce product for the ticket type behind the scenes
- The product is added to the WooCommerce cart
- You're redirected to the standard WooCommerce checkout page
Complete the checkout with a real card (or your gateway's test card if it supports one). After payment, you should land on the WooCommerce thank-you page.
Then verify all five of the following happened:
- The WooCommerce order appears in WooCommerce → Orders with status "Processing" or "Completed"
- The order has order meta linking it back to the event (look for
_pcal_event_idand an order number formattedPCAL-NNNNNNlikePCAL-000142) - The customer receives the standard WooCommerce order confirmation email
- The customer also receives the Site Calendar branded ticket email with QR-coded PDF attached
- An attendee record appears in Site Calendar → Attendees linked to the event by order number
Step 4 — Verify the linked WooCommerce product was created
Open Products → All Products in WordPress admin. The hidden product Site Calendar Pro created for your test ticket should now exist.
You may need to adjust the visibility filter — by default WooCommerce may hide catalog-hidden items from the products list. Look for a "Visibility" filter dropdown above the table and include "Hidden" if needed.
Click the new product to inspect it:
- Product name matches the ticket label
- Regular price matches the ticket price
- Virtual is ticked (no shipping prompt at checkout)
- Catalog visibility is set to Hidden (won't appear on shop pages or search)
- A custom field
_pcal_ticket_idlinks the product back to the source ticket
Step 5 — Refund the test purchase
To clean up after the test:
- Open the order in WooCommerce → Orders
- Click Refund
- Refund the full amount
Site Calendar Pro listens for the WooCommerce refund event and:
- Marks the matching attendee record as
refunded - Restores capacity to the event automatically
- Records refund metadata against the attendee post (refund ID, refunded_at, refunded_by)
The hidden WooCommerce product stays in place — it's reusable for future purchases of the same ticket type. There's no need to delete it manually. If you trash the event, the product remains as an orphan; clean it up by filtering products by Hidden visibility and deleting any whose linked ticket post has been deleted.
What WooCommerce unlocks
Once tickets flow through WooCommerce, every shop feature you already have applies to events too:
- Coupons — create discount codes (early bird, member rate, comp) under Marketing → Coupons
- Tax rules — apply VAT, GST or sales tax using WooCommerce's standard tax tables
- Multiple payment methods — Stripe, PayPal, Apple Pay, Klarna and bank transfer all in one flow
- Reports — ticket revenue shows up in WooCommerce → Reports alongside merchandise
- Refund automation — partial refunds, refund-on-cancellation rules and accounting exports work as standard
- Subscription tickets — pair with WooCommerce Subscriptions to sell season passes or recurring memberships that include event access
Per-event gateway override (advanced)
If you set the global gateway to Both in Step 1, the event editor gains a per-event Payment gateway field. Use this when you want most events to use one gateway but a specific event to use the other — for example, all club fixtures use WooCommerce (where the rest of your shop lives), but a one-off charity gala uses Stripe direct because it needs to deposit into a separate bank account.
If left empty, the event falls back to the site-wide global setting.
Troubleshooting
"Buy tickets button is missing on event pages"
Two possible causes. (1) The WooCommerce gateway isn't active — check Site Calendar → Settings → Tickets and confirm "WooCommerce" is the selected gateway. (2) The ticket has no price, or capacity is set to zero — the button only appears when a sellable ticket exists.
"WooCommerce option isn't shown in the gateway selector"
WooCommerce isn't active. Go to Plugins, confirm WooCommerce is installed and activated, and that it's version 8.0 or later. The gateway selector only lists WooCommerce when class_exists('WooCommerce') is true.
"Order placed but no Site Calendar attendee record created"
Open WooCommerce → Status → Logs and look for entries from pcal-woo or related. The most common cause is a stalled WooCommerce action scheduler — go to WooCommerce → Status → Scheduled Actions and check the queue isn't backed up. Resume it if needed.
"Customer receives WooCommerce email but not the Site Calendar ticket email"
Usually an SMTP rate-limit when two emails fire simultaneously. Check WP Mail SMTP → Email Log for the Site Calendar ticket email. If logged as Sent but not received, check the customer's spam folder. If logged as Failed, the error message identifies the cause — typically missing sender-domain authentication (SPF/DKIM).
"No WooCommerce product appeared after I saved the ticket"
Expected. Products are created lazily on first purchase, not at ticket save time. To see the product appear, complete a test purchase first (Step 3 above), then revisit Products → All Products.
"Refunded order didn't release event capacity"
Confirm the refund was processed via WooCommerce's own Refund button (which fires the woocommerce_order_refunded hook), not by manually editing the order status to "Refunded." Site Calendar Pro listens for the refund event hook, not the status change.
"I edited the WooCommerce product price and it reset back"
This is expected. The product is a mirror of the ticket — Pro re-syncs the price, name, and description from the ticket on every purchase. Edit the ticket in the event editor; the product follows.
What's next
- Creating your first event — full walkthrough of the event editor
- Setting up Stripe payments — the alternative gateway
- Branded confirmation emails — make ticket confirmations match your brand identity
- QR-code door check-in — scan attendees in at the venue using the mobile scanner
