Get Plugin

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

MethodHow It WorksUse Case
Standard RandomWordPress random functionSmall raffles, quick draws
Cryptographically SecurePHP's random_int()High-stakes raffles
Random.orgTrue randomness from atmospheric noiseProvably fair public draws
Scroll to see all columns →

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
  • 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
  • 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
  • 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.
  • 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.
  • 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.
  • 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.
  • 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
  • The rfwc_mask_winner_name filter (default false) masks the last name to an initial (e.g., "John D."). When enabled, city is also hidden automatically.
  • The rfwc_show_winner_city filter (default true) allows stores to disable city display globally.
  • The rfwc_show_winner_details filter (default true) 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:

TabShows
WinnersAll winners across all raffles
ClaimedWinners whose prizes have been claimed
Scroll to see all columns →
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

  • Raffle has active tickets
  • Raffle hasn't ended (if manual)
  • Number of winners ≤ active tickets

Winner not notified

  • Email address valid
  • Email not in spam
  • WooCommerce emails working
  • Check email logs

Random.org not working

  • API key is valid
  • API quota not exceeded
  • Internet connection stable