Ticket Management
Ticket Management#
This guide covers how tickets work and how to manage them.
How tickets work#
Ticket generation#
Tickets are automatically generated based on the Generate Tickets On setting in WooCommerce → Settings → Raffle → General:
| Setting | When Tickets Are Created |
|---|---|
| Payment Complete | As soon as payment is received |
| Order Processing | When order moves to “Processing” status |
| Order Completed | When order is marked “Completed” (default) |
No tickets are created for:
- Pending orders (unless the trigger setting is met).
- Cancelled or refunded orders.
Ticket information#
Each ticket contains:
| Field | Description |
|---|---|
| Ticket Number | Unique identifier (e.g., 0001, RFL-0001, or A7X9B2) |
| Raffle | The raffle product |
| Holder Name | Person who holds the ticket |
| Purchaser Email | Email of person who bought |
| Recipient Email | Email of gift recipient (if gift) |
| Status | Active, Won, or Cancelled |
| Order ID | Associated WooCommerce order |
| Created Date | When ticket was generated |
Ticket number formats#
Configure in WooCommerce → Settings → Raffle:
| Format | Example | Use Case |
|---|---|---|
| Sequential | 0001, 0002, 0003 | Traditional raffle feel |
| Random | A7X9B2, K3M8P1 | Harder to predict patterns |
| Alphabet (Pro) | A01, A02 … B01, B02 | Popular UK competition style |
Additional options:
- Prefix: Add text before number (e.g., “RAFFLE-0001”)
- Suffix: Add text after number (e.g., “0001-VIP”), configured per product
- Starting Number: Begin from specific number
Customer view: my tickets#
Accessing tickets#
Customers find their tickets at: My Account → My Tickets
Ticket display#
Each ticket shows:
- Ticket number
- Raffle name (linked to product)
- Status (Active/Won/Cancelled)
- Date purchased
- View Order link
Ticket badges#
| Badge | Meaning |
|---|---|
| 🎁 Gifted | Customer bought this for someone else |
| 🎁 Received | Someone gifted this to the customer |
| ⭐ Won | This ticket won the raffle |
Filtering#
Customers can filter tickets by:
- Raffle: Select specific raffle.
- Status: Active, Won, All.
PDF download#
Click the PDF button to download:
- Professional PDF ticket with QR code.
- Includes all ticket details.
- QR code for validation at live events.
Admin view: raffle tickets#
Access: WooCommerce → Raffle Tickets
Ticket list#
View all tickets across all raffles:
- Ticket number
- Holder name
- Raffle product
- Order link
- Is Gift indicator
- Status
- Created date
Tabs#
The ticket list page has four tabs:
| Tab | Shows |
|---|---|
| All Tickets | Every ticket across all raffles |
| Winners | All winning tickets with quick actions |
| Claimed | Winners whose prizes have been claimed |
| Mass Refund | Mass refund tool and refunded ticket history |
The Winners tab includes quick Mark Claimed and Resend Notification buttons per row, plus a bulk claim action for selecting multiple winners at once.
The Mass Refund tab provides the mass refund tool for failed/cancelled raffles and shows refund method badges, payment status, and refund status for each refunded order. See Refund workflow below.
Search#
Use the search box to find tickets by:
- Ticket number
- Recipient name
- Recipient email
- Purchaser name
- Purchaser email
Search is available on all tabs (All Tickets, Winners, Claimed, Mass Refund) and respects the current tab filter.
Filtering#
Filter tickets by:
- Raffle: Select specific raffle product. Raffles are grouped by status (Active, Upcoming, Ended, Completed, Failed, Cancelled) for easy navigation.
- Status: Active, Won, Cancelled, All (on the All Tickets tab).
Export#
Click Export CSV to download filtered data. Export is available on all tabs:
- All Tickets / Mass Refund: Exports ticket data (ticket number, holder, status, order, date).
- Winners / Claimed: Exports winner data (raffle, ticket, name, email, prize tier, method, claimed status, date).
Status management#
Tickets automatically update:
| Order Status | Ticket Status |
|---|---|
| Completed | Active |
| Processing | Active (if Generate Tickets On is set to Processing) |
| Cancelled | Cancelled |
| Refunded | Cancelled |
Ticket reactivation#
If a cancelled order is restored (e.g., moved back to Processing or Completed), the associated tickets are automatically reactivated, provided the raffle hasn’t had winners drawn yet. This prevents having to re-purchase if an order was cancelled by mistake.
Tickets on order deletion#
When an order is permanently deleted (trashed), all associated tickets are automatically cancelled. This prevents orphaned active tickets.
Manual status change: Not currently supported (by design; this maintains integrity).
Ticket statuses explained#
Active#
- Default status for valid tickets.
- Eligible for winner selection.
- Customer can view in My Account.
Won#
- Set when ticket is selected as winner.
- Displayed with special styling.
- Shows position (1st, 2nd, etc.).
Cancelled#
- Set when order is cancelled/refunded.
- Not eligible for winner selection.
- Still visible in history but marked cancelled.
Order integration#
Order details (admin)#
Raffle orders show a special metabox:
- 🎟️ Raffle Tickets section.
- All ticket numbers for that order.
- Gift information (if applicable).
- Quick links to ticket management.
Order details (customer)#
In My Account → Orders → View Order:
- Ticket numbers listed per line item.
- Status indicators.
- Link to My Tickets page.
Cart quantity behavior#
Per-customer limits#
When a raffle has a Max Per Customer limit, the plugin enforces it across the entire flow:
- Product page: Quantity selector is capped at the limit.
- Cart page: Quantity is displayed as read-only (non-editable) for non-gift raffle items. This prevents customers from bypassing the limit.
- Server-side: Any attempt to increase quantity beyond the limit is automatically corrected.
Gift items#
Gift raffle items are exempt from per-customer limits because each ticket goes to a different person. Gift item quantities remain editable in the cart and are managed through the recipient fields at checkout.
Data integrity#
Security#
- Tickets cannot be manually created (only via orders).
- Ticket numbers are validated for uniqueness.
- Database constraints prevent duplicates.
Audit trail#
All ticket actions are logged:
- Creation
- Status changes
- Winner selection
- Validation/check-in
Troubleshooting#
Tickets not generated#
Check:
- Order status matches the Generate Tickets On setting (Completed, Processing, or Payment Complete).
- Product type is “Raffle”.
- No PHP errors in debug log.
Fix:
- Check WooCommerce → Settings → Raffle → Generate Tickets On to confirm the trigger.
- Complete or process the order to match the trigger.
- Check WooCommerce → Status for system issues.
Duplicate tickets#
This should never happen due to database constraints. If it does:
- Check database integrity.
- Contact support with details.
Missing tickets in my account#
Check:
- Customer email matches purchaser/recipient email.
- Customer is logged in.
- Order is completed.
Refund workflow#
When a raffle is cancelled or fails, you can refund ticket purchases individually or in bulk.
Cancelling a raffle#
Admins can cancel an active raffle from the product edit screen or via a quick action on the Tickets page. Cancelling stops ticket sales immediately and makes the raffle eligible for mass refund.
Mass refund#
- Go to the Mass Refund tab on WooCommerce → Raffle Tickets.
- Select the cancelled or failed raffle.
- A confirmation dialog shows the order count and total refund amount (including tax).
- Choose a refund method (see Refund methods below).
- Click Refund All. A live progress bar tracks the batch.
Selective refund#
Instead of mass refund, you can refund individual tickets:
- On the ticket list, select specific tickets using the checkboxes.
- Choose the Refund Selected bulk action.
- The refund modal shows the calculated partial refund amount per line item (including tax).
- Choose a refund method and confirm.
Refund methods#
Both the mass refund and selective refund modals present three refund method options via radio buttons:
| Method | When to use | What happens |
|---|---|---|
| Standard refund | Default. Creates a WooCommerce refund record. | Admin manually sends money back via bank transfer, cheque, etc. The order is marked for manual follow-up. |
| Refund via payment gateway | Orders paid with Stripe, PayPal, WooCommerce Payments, Square, or other gateways that support automatic refunds. | Money is returned automatically through the original gateway. Orders paid with offline gateways (BACS, COD, cheque) fall back to a manual refund record. |
| Refund to wallet | Requires the free TeraWallet (Wallet for WooCommerce) plugin to be installed and active. | The refund amount is credited directly to the customer’s wallet balance. Customers can reuse the credit for future purchases. Guest orders (no account) automatically fall back to standard refund since guests cannot hold wallet balances — an info notice explains this in the results modal. |
The wallet option only appears when TeraWallet is active. If TeraWallet is deactivated later, existing “Wallet Refunded” badges remain visible (they read from stored order meta), but the wallet radio option is hidden from future refund modals.
Manual Refund Tracker#
After processing, orders that require manual action (offline gateways or guest fallback) appear in a warning table with:
- Clickable order links
- Amounts and payment methods
- A Copy List button for exporting to spreadsheets
When wallet refund is selected and some orders fall back to manual due to being guest orders, an info notice explains why those specific orders need manual handling.
Refund status badges#
Each refunded order displays a color-coded badge on the Mass Refund tab:
| Badge | Color | Meaning |
|---|---|---|
| Gateway Refunded | Green | Automated refund completed via payment gateway |
| Wallet Refunded | Indigo | Refund credited to customer’s TeraWallet balance |
| Manual - Action Required | Amber | Offline payment or guest fallback, admin needs to send money manually |
| Manual - Done | Teal | Admin confirmed the manual refund is complete |
Click the Mark Done button on manual refund rows after sending money offline. This updates the badge and adds a WooCommerce order note for the audit trail.
Refund method filter#
On the Mass Refund tab, filter orders by refund status:
- Gateway Refunded
- Wallet Refunded
- Manual - Action Required
- Manual - Done
This helps quickly find orders still needing attention.
Refund email notifications#
When tickets are refunded, the plugin sends targeted email notifications:
- Ticket Refunded email: Sent to the ticket holder (purchaser or gift recipient) with the refunded ticket numbers, raffle name, refund amount, and reason. Gift recipients are notified at their own email address, not the purchaser’s billing email.
- Admin Mass Refund Summary: After a mass refund completes, the admin receives a summary email with the total orders refunded, amount, and any failures.
Both emails can be toggled on/off in WooCommerce → Settings → Raffle → Emails and fully customized (subject, heading, content) in WooCommerce → Settings → Emails.
Performance#
For stores with many tickets:
- Tickets are paginated (20 per page).
- Database queries are optimized.
- Consider limiting very large raffles.