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:
- 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:
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.
- Raffle is marked as "Failed" with a descriptive reason
- Admin receives the draw-failed notification email
- Tickets are eligible for mass refund
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:
Order of selection
- System randomly selects winner pool
- First selected = 1st Prize
- Second selected = 2nd Prize
- And so on...
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.
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 |
- 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.
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
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