Winner Selection
Winner Selection#
This guide covers how to select raffle winners, available methods, and prize fulfillment.
Overview#
Winners can be selected:
- Manually - Admin draws winners at any time
- Automatically - System draws when raffle ends (if enabled)
Manual winner selection#
Where to draw#
Edit your raffle product → scroll down to Winner Selection metabox
Drawing process#
-
Select Selection Method:
- Standard Random
- Cryptographically Secure
- Random.org (if API key configured)
-
Click Draw Winners
-
Confirm the selection
-
Winners are displayed immediately
Selection methods#
| Method | How It Works | Use Case |
|---|---|---|
| Standard Random | WordPress random function | Small raffles, quick draws |
| Cryptographically Secure | PHP’s random_int() | High-stakes raffles |
| Random.org | True randomness from atmospheric noise | Provably fair public draws |
Standard random#
- Uses
wp_rand()function - Perfectly adequate for most raffles
- Fastest method
Cryptographically secure#
- Uses
random_int() - Higher quality randomness
- Recommended for important draws
Random.org#
- Requires API key (free tier available)
- True random numbers from physical phenomena
- Provides audit trail for verification
- Best for high-value or public raffles
Setup Random.org:
- Get free API key at random.org/api
- Enter in WooCommerce → Settings → Raffle
Automatic winner selection#
Enable auto draw#
- Edit raffle product
- Go to Raffle Settings tab
- Check Automatically select winners when raffle ends
- Save product
How it works#
- WP Cron checks hourly for ended raffles
- When raffle end time passes:
- System draws winners automatically
- Uses cryptographically secure method
- Sends winner notifications
- Processes prize fulfillment
Early draw when sold out#
If all tickets sell out before the end date, you can have the draw happen immediately instead of waiting.
Enable globally: WooCommerce → Settings → Raffle → “Early draw when sold out”
Enable per-product: Edit raffle → Raffle Settings tab → “Early draw when sold out” checkbox (overrides global setting)
When the last ticket is purchased:
- System detects the raffle is sold out
- If early draw is enabled and auto-draw is on, a draw is scheduled immediately
- Winners are selected and notified without waiting for the end date
Minimum tickets threshold#
Set a minimum number of tickets that must be sold before the auto-draw can proceed. Useful for high-value prizes where you need a minimum return.
Configure: Edit raffle → Raffle Settings tab → “Minimum tickets for draw” field
- 0 (default): No minimum — draw runs with any number of tickets
- Example: Set to 50 on a 100-ticket raffle. If only 30 tickets sell by the end date, the raffle auto-fails instead of drawing winners. Tickets become eligible for mass refund.
When the threshold is not met:
- Raffle is marked as “Failed” with a descriptive reason
- Admin receives the draw-failed notification email
- Tickets are eligible for mass refund
Interaction with early draw: If both are configured, the minimum threshold must still be met before an early draw can proceed.
Requirements#
- WordPress cron must be working
- Site must receive regular traffic, OR
- Real cron job configured on server
Prize fulfillment#
Custom prize#
When winner is selected:
- Winner notification email sent
- Admin sees winner in product page
- Manual fulfillment required
Product prize#
When winner is selected:
- System creates $0 order for winner
- Order contains prize product(s)
- Winner receives order notification
- Admin processes/ships order normally
Order details include:
- Note indicating it’s a raffle prize
- Link to original raffle
Store credit#
When winner is selected:
- System checks for store credit plugin
- If available: creates store credit
- If not: creates coupon code
- Winner receives notification with credit/coupon details
Coupon features:
- One-time use
- Expires in 1 year
- Exact prize value
Multiple winners#
Prize tiers#
When multiple winners are configured:
- Each position can have different prizes
- 1st Prize, 2nd Prize, 3rd Prize, etc.
- System draws all winners at once
- Each receives appropriate prize
Configuration#
- Set Number of Winners (e.g., 3)
- Configure prizes for each tier:
- 1st Prize: Select product or set custom
- 2nd Prize: Different product or custom
- 3rd Prize: And so on…
Order of selection#
- System randomly selects winner pool
- First selected = 1st Prize
- Second selected = 2nd Prize
- And so on…
No duplicate winners: Same ticket cannot win multiple positions.
Unique winner enforcement#
Enable “Unique winners only” on a raffle product to prevent the same person from winning multiple prize tiers.
When enabled, the draw uses an iterative process:
- Select the 1st Prize winner randomly from the full ticket pool.
- Remove all tickets belonging to that winner from the pool.
- Select the 2nd Prize winner from the reduced pool.
- Repeat until all positions are filled or the pool is exhausted.
This ensures each user can only win one prize per draw, even if they hold many tickets.
Notes:
- If there are fewer unique ticket holders than prize tiers, the draw fills as many positions as possible and stops.
- The winner is identified by email address — the purchaser email for self-purchased tickets, or the recipient email for gift tickets.
- Unique winner enforcement applies to the end-of-raffle draw. Instant win evaluations are independent.
Instant Win#
Instant Win lets customers find out if they won at purchase time, without waiting for the raffle to end. Enable it per product with two modes: probability-based and guaranteed interval.
See the full Instant Win documentation for configuration details, modes, and examples.
Instant winners appear in the Winners tab alongside raffle-end winners, with “Instant Win” as the selection method.
Extend and relist raffles#
Admins can re-open a completed, failed, or cancelled raffle without creating a new product.
Extend#
Pushes the end date forward while keeping all data intact.
- Edit the raffle product.
- In the Winner Selection metabox, click Extend.
- Enter a new end date and time (must be in the future).
- Click Confirm.
What happens:
- The end date is updated.
- The terminal status (completed/failed/cancelled) is cleared.
- The raffle becomes active again.
- All existing tickets and winners remain.
- The action is logged to the activity trail.
Relist#
Resets the raffle for a fresh start.
- Edit the raffle product.
- In the Winner Selection metabox, click Relist.
- Enter a new end date and time.
- Click Confirm.
What happens:
- The end date is updated.
- All existing winners are cleared.
- The terminal status is cleared.
- Existing tickets remain active.
- The raffle becomes active again.
- The action is logged to the activity trail.
Use cases:
- Extend: Raffle ended but not enough tickets sold — give it more time.
- Relist: Raffle completed and prizes awarded — run a new round with the same product.
Winner display#
Admin view#
In product edit page:
- Winner Selection metabox shows all winners
- Ticket number, holder name, position
- Date selected
- Prize awarded
Frontend#
After raffle ends, the product page shows a winner announcement banner with:
- Winner’s Gravatar/profile picture (pulled from email via WordPress/Gravatar)
- Winner name
- Winner’s city (from WooCommerce billing data)
- Winning ticket number
- Prize tier medal (🥇🥈🥉)
- Claimed status
- Draw date
- Link to the raffle product
Privacy controls:
- The
rfwc_mask_winner_namefilter (defaultfalse) masks the last name to an initial (e.g., “John D.”). When enabled, city is also hidden automatically. - The
rfwc_show_winner_cityfilter (defaulttrue) allows stores to disable city display globally. - The
rfwc_show_winner_detailsfilter (defaulttrue) hides all winner details when disabled.
Display winners on any page#
Use the [raffle_winners] shortcode to embed the winner banner on any page, post, or landing page:
[raffle_winners id="123"]
[raffle_winners id="latest" show_avatar="true" show_city="true"]
[raffle_winners id="123" limit="3" show_link="false"]
See the Shortcodes documentation for full attribute reference.
Winner management#
Cross-raffle winner overview#
Go to WooCommerce → Raffle Tickets and use the tabs:
| Tab | Shows |
|---|---|
| Winners | All winners across all raffles |
| Claimed | Winners whose prizes have been claimed |
Each row in the Winners tab includes:
- Mark Claimed button: marks the prize as claimed, sends a Prize Claimed Confirmation email to the winner, and logs the action to the activity trail.
- Resend Notification button: re-sends the winner notification email.
Bulk claim: Select multiple winners using the checkboxes and use the bulk action to mark them all as claimed in one click.
You can also filter by raffle to focus on a specific draw.
Prize Claimed Confirmation email#
When an admin marks a winner’s prize as claimed (via the Winners tab, bulk action, or the product edit metabox), the winner receives a confirmation email. Configure this email in WooCommerce → Settings → Raffle → Emails and customize it in WooCommerce → Settings → Emails.
Redrawing winners#
Scenario: Winner is ineligible or declines
- Go to product edit page
- In Winner Selection metabox, click Clear & Redraw
- New winner(s) selected
- Previous selection logged
Note: Original winner notification already sent - handle appropriately.
Winner records#
All winner data stored:
- ID
- Raffle ID
- Ticket ID
- Position
- Prize Type
- Prize Details
- Notification status
- Fulfillment status
- Selection date
Notifications#
Winner email#
Recipients receive:
- Congratulations message
- Prize details
- What happens next
- Contact information
Email customization#
Go to WooCommerce → Settings → Emails:
- Raffle Winner Notification
- Customize subject, heading, content
- Enable/disable email
Best practices#
Before drawing#
- ✅ Verify raffle is ended (or ready to end)
- ✅ Check all orders are completed
- ✅ Review ticket count is accurate
- ✅ Prepare for prize fulfillment
During drawing#
- Consider recording/streaming for transparency
- Use Random.org for high-profile draws
- Have witnesses if valuable prizes
After drawing#
- Send notifications promptly
- Process prize fulfillment
- Update website/social media
- Keep records for disputes
Troubleshooting#
No winners selected#
Check:
- Raffle has active tickets
- Raffle hasn’t ended (if manual)
- Number of winners ≤ active tickets
Winner not notified#
Check:
- Email address valid
- Email not in spam
- WooCommerce emails working
- Check email logs
Random.org not working#
Check:
- API key is valid
- API quota not exceeded
- Internet connection stable