WD Events Tickets Plus
WD Events Tickets Plus adds lightweight paid ticketing to the WD Events ecosystem using Stripe Checkout.
It builds on WD Events Lite and WD Events Tickets to provide flexible multi-ticket event bookings, attendee management, Stripe payments and CSV exports directly inside WordPress without requiring WooCommerce or a large ticketing platform.
The plugin is designed for SMEs, webinars, workshops, conferences, networking events, clubs and community organisations.
Contents
Functional overview
Installation
Stripe configuration
Event settings
Ticket Types
Drag sorting ticket types
Shortcode
Booking flow
Limit per email address
Admin features
Testing checklist
Functional overview
- Stripe Checkout integration
- Free and paid ticket combinations
- Multiple ticket types per event
- Ticket-type capacity support
- Per-email ticket restrictions
- Ticket-type quantity limits
- Drag-sort ticket ordering
- Test and live Stripe modes
- Paid order records
- Attendee creation after successful Stripe webhook
- Paid attendee CSV export
- Manual admin check-in
- Email confirmation after payment
- Required field validation
- Builder-friendly shortcode output
- No WooCommerce dependency
Installation
- Install and activate WD Events Lite.
- Install and activate WD Events Tickets.
- Install and activate WD Events Tickets Plus.
Stripe configuration
Creating the required API keys
You can create publishable and secret keys yourself in your Stripe Dashboard:
- Click on Developers in the left bottom navigation
- Select API keys
- Click Create secret key to generate a new secret key
- Your publishable key is already displayed on the same page and can be copied
Each secret key you create will have a corresponding publishable key automatically available. Make sure to copy your secret key immediately after creation — it won’t be shown again for security reasons.
Settings page
Go to:
WordPress Admin → Settings → WD Tickets Plus
Test mode
For testing, add:
pk_test_...Test Publishable Keysk_test_...Test Secret Keywhsec_...Test Webhook Signing Secret
Live mode
For production, add:
pk_live_...Live Publishable Keysk_live_...Live Secret Keywhsec_...Live Webhook Signing Secret
Webhook endpoint
Add this endpoint in Stripe:
https://yourdomain.com/wp-json/wd-events-tickets-plus/v1/stripe-webhook
Event to listen for:
checkout.session.completed
Stripe test card
4242 4242 4242 4242
Use any future expiry date, any CVC and any postcode.
Important: Without the Stripe webhook:
- Payments may complete in Stripe
- Orders may be created in WordPress
- Attendees will not be created
- No confirmation email will be sent
Ensure the webhook is configured before going live.
Event settings
Go to:
WordPress Admin → Events → Edit Event
Enable:
- Enable Tickets Plus for this event
Once enabled:
- Multiple Ticket Types can be associated with the event
- The booking form is automatically generated
- Free and paid tickets can be mixed together
Ticket Types
Go to:
WordPress Admin → Events → Ticket Types
Create one or more Ticket Types and associate them with an event.
Examples:
- Early Bird
- Standard Ticket
- VIP Ticket
- Member Ticket
- Guest Ticket
- Sponsor Package
Each Ticket Type supports:
- Ticket name
- Price
- Description
- Limit per email address
- Ticket-type capacity
- Max per booking
- Active / inactive status
- Associated event
Example: member and guest tickets
Member Ticket
Price: 0.00
Limit Per Email: 1
Guest Ticket
Price: 5.00
Limit Per Email: unlimited
Drag sorting ticket types
Ticket Types can be reordered directly in:
WordPress Admin → Events → Ticket Types
Simply drag ticket rows into the required order.
The frontend booking form automatically follows the same order.
Useful for:
- Early Bird before Standard
- VIP above General Admission
- Member tickets above Guest tickets
- Gold / Silver / Bronze sponsor ordering
Shortcode
Add this to the single event template where the paid booking form should appear:
[wd_event_paid_ticket_form]
Booking flow
- User selects ticket quantities.
- User completes registration fields.
- Required fields are validated.
- Capacity and email limit checks run.
- User is redirected to Stripe Checkout.
- User completes payment.
- Stripe redirects the user back to the event page.
- Stripe webhook confirms payment to WordPress.
- The order is marked as paid.
- An attendee record is created.
- A confirmation email is sent.
Form validation
All paid ticket forms validate:
- Name
- Ticket quantities
- Ticket-type capacities
- Email booking limits
If validation fails:
- The form will not process
- The user is returned to the event page
- An alert message is displayed above the form
- No order is created
- No Stripe checkout is started
Limit per email address
Tickets Plus can restrict the number of tickets that can be booked using the same email address.
This is checked before Stripe Checkout is created.
The plugin checks:
- Existing attendees for the same event and email address
- Pending or paid orders for the same event and email address
- The requested ticket quantity
If the existing quantity plus requested quantity exceeds the configured limit, the booking is stopped and the user sees an alert.
Example alert:
This ticket type is limited per email address.
Example: club BBQ
Member Ticket:
Price: 0.00
Limit Per Email: 1
Guest Ticket:
Price: 5.00
Limit Per Email: unlimited
Admin features
Ticket Orders
Go to:
WordPress Admin → Ticket Orders
Orders include:
- Event
- Name
- Phone
- Ticket breakdown
- Quantity
- Amount
- Status
- Stripe session ID
- Linked attendee
- Stripe error response, if applicable
Attendees
Go to:
WordPress Admin → Attendees
Paid attendees include:
- Linked event
- Linked order
- Name
- Phone
- Ticket selections
- Ticket quantities
- Paid status
- Check-in status
- Check-in time
Manual check-in
Open an attendee and use:
- Mark as checked in
- Mark as not checked in
CSV export
Use the paid attendee CSV export to download:
- Name
- Event
- Phone
- Ticket selections
- Quantities
- Status
- Check-in status
- Check-in time
- Order ID
- Registration date
Error messages
The system may display:
- Please complete all required fields
- Please enter a valid email address
- Please enter at least one ticket
- Sorry, there are not enough places remaining
- Registration for this event has closed
- This ticket type is limited per email address
- Stripe configuration error
These appear above the form and prevent the booking from continuing.
What happens after booking
- An order is created
- The user is redirected to Stripe
- Payment is completed
- Stripe confirms the payment via webhook
- An attendee is created
- A confirmation email is sent
Email requirements
- Use a domain sender such as
[email protected] - Use an SMTP plugin or transactional mail provider
- Configure SPF
- Configure DKIM
- Configure DMARC where possible
Testing checklist
- Set the plugin to Test mode.
- Add Stripe test keys.
- Add the test webhook in Stripe.
- Create a test event.
- Enable Tickets Plus for the event.
- Create Ticket Types.
- Add ticket pricing.
- Optionally set email limits.
- Add
[wd_event_paid_ticket_form]to the event template. - Submit the form.
- Complete Stripe test checkout.
- Confirm order appears in WordPress.
- Confirm Stripe has the payment.
- Confirm attendee is created after webhook.
- Confirm confirmation email is received.
- Test manual check-in.
- Export paid attendee CSV.
- Test drag sorting of Ticket Types.
Production checklist
- Switch plugin to Live mode.
- Add live Stripe keys.
- Create live webhook in Stripe.
- Run a low-value live test payment.
- Confirm emails deliver correctly.
- Confirm attendee creation and check-in workflow.
- Confirm ticket limits behave correctly if used.
Performance notes
WD Events Tickets Plus follows the same lightweight approach as WD Events Lite.
- No WooCommerce dependency
- No embedded payment gateway loaded site-wide
- Stripe Checkout only loads when required
- Ticketing logic only runs where the ticket form is used