Pro/Index
Raffle for WooCommerce Pro
Optional addon that adds interactive features for professional competition websites. The free plugin remains fully functional on its own — Pro adds new capabilities without locking or disabling any free features.
Features
| Feature | Description |
|---|---|
| Customer Ticket Picker | Visual grid for customers to choose their own ticket numbers |
| Lucky Dip | Random auto-select button with animation |
| Advanced Instant Win | Pre-selected winning tickets, separate IW prize config, hybrid mode (two chances to win) |
| Lucky Wheel / Spin to Win | Interactive HTML5 canvas prize wheel |
| Winner Reveal Page | Dramatic animated winner reveal with confetti for live streaming |
| Entry / Participant List | Public page showing participants with privacy controls and PDF export |
| Alphabet Ticket Format | Ticket numbers in A01-A99, B01-B99 letter+number format |
| Ticket Reservation | Hold selected tickets for a limited time to prevent checkout conflicts |
| IP Purchase Restriction | Limit ticket purchases per IP address to prevent multi-account abuse |
| Bonus Tickets | Auto-award extra draw entries based on quantity, early bird timing, or customer role |
| Reward Points (WooRewards) | Earn and redeem loyalty points on raffle tickets via MyRewards |
| Email PDF Ticket | Auto-attach PDF raffle tickets to WooCommerce order confirmation emails |
| Countdown & Badge Styles | 17 countdown + 9 badge visual styles with animations |
Scroll to see all columns →
Installation & License
Requirements
- Raffle for WooCommerce (free) 1.1.0 or higher
- WooCommerce 8.0+
- WordPress 6.0+
- PHP 7.4+
Activation
- Upload
raffle-for-woocommerce-proto/wp-content/plugins/. - Activate the plugin in Plugins → Installed Plugins.
- Go to WooCommerce → Settings → Raffle → License.
- Enter your license key and click Activate.
Development mode
For local development, add this to wp-config.php to bypass license checks:
define( 'RFWC_PRO_DEV_MODE', true );
Remove this before deploying to production.
License management
- Check License: Validates your key against the licensing server.
- Deactivate: Releases the activation so you can use the key on another site.
- Grace period: If your license expires, Pro features continue working for 14 days while you renew.
Architecture notes
Separation of concerns
The Pro plugin is a separate WordPress plugin (raffle-for-woocommerce-pro/) that depends on the free plugin via the Requires Plugins header. It hooks into the free plugin's action and filter system — no core files are modified.
Key principles
- Never disables free features — Pro only adds, never restricts.
- License-gated — Features only load when the license is valid (or dev mode is on).
- No frontend nags — No upsell messages visible to customers.
- Graceful degradation — Deactivating Pro does not break any existing raffle data.
- All classes prefixed
RFWC_Pro_— no conflicts with core. - Text domain:
raffle-for-woocommerce-pro(separate from the free plugin).
Core hooks used by Pro
| Hook | Type | Used by |
|---|---|---|
rfwc_loaded | Action | Bootstraps the entire Pro addon |
rfwc_admin_product_options | Action | All features: product panel fields |
rfwc_process_product_meta | Action | All features: save product settings |
rfwc_frontend_scripts | Action | Frontend asset enqueuing |
rfwc_ticket_generated | Action | Ticket Picker: assign picked numbers |
rfwc_after_ticket_display | Action | Advanced Instant Win: tier badges in My Account |
rfwc_instant_winner_created | Action | Advanced Instant Win: IW prize fulfillment routing |
rfwc_instant_win_evaluate | Filter | Advanced Instant Win: pre-selected ticket override |
rfwc_instant_win_prize_tier | Filter | Advanced Instant Win: tier assignment |
rfwc_instant_win_ticket_status | Filter | Advanced Instant Win: keep tickets active for hybrid mode |
rfwc_should_fulfill_prize | Filter | Advanced Instant Win: block core fulfillment for IW winners with separate config |
rfwc_mask_winner_name | Filter | Winner Reveal: name privacy masking |
rfwc_ticket_format_options | Filter | Alphabet Tickets: adds alphabet option to dropdowns |
rfwc_generate_ticket_number | Filter | Alphabet Tickets: generates letter+number strings |
rfwc_order_tickets_generated | Action | Ticket Reservation: cleanup reservations after order |
woocommerce_add_to_cart_validation | Filter | IP Restriction: validate IP limit before add-to-cart |
woocommerce_update_cart_validation | Filter | IP Restriction: validate IP limit on cart quantity update |
rfwc_order_tickets_generated | Action | Bonus Tickets: evaluate rules and generate bonus entries |
rfwc_ticket_cancelled | Action | Bonus Tickets: recalculate bonus on partial/full refund |
rfwc_tickets_sold_count | Filter | Bonus Tickets: exclude bonus from purchasable pool count |
rfwc_generate_ticket_number | Filter | Bonus Tickets: ticket numbering (respects alphabet format) |
lws_woorewards_core_pool_point_add | Filter | Reward Points: modify earning points (multiplier/disable) |
lws_woorewards_wc_order_trigger_order_done | Action | Reward Points: track current order during WooRewards processing |
lws_woorewards_wc_order_after_trigger_order_done | Action | Reward Points: clear tracked order after processing |
rfwc_order_tickets_generated | Action | Reward Points: award flat bonus points + record awarded amount |
woocommerce_get_item_data | Filter | Reward Points: cart earning preview |
woocommerce_order_status_cancelled | Action | Reward Points: refund awarded/redeemed points |
Scroll to see all columns →