TECHNICAL DOCUMENTATION

RWD Raffle Theme

Installation, configuration and operating reference for every raffle website template built on the RWD Raffle Theme core. One manual, whichever design you bought.

Document
RWD-DOC-THEME
Revision
r1.0
Applies to
All RWD raffle themes
Platform
WordPress + WooCommerce
Updated
28 Sep 2026
§ 01

Overview

#

The RWD Raffle Theme is the core behind every raffle website template in our store. Each template is a different design on the same engine, so everything in this manual applies to whichever theme you run: the same settings, screens, pages and behaviour.

The theme sits on top of WooCommerce and the WooCommerce Lottery plugins. The plugins own the competition mechanics (tickets, reservations, answers, instant wins, draws). The theme owns the design, the player journey, compliance tools and everything an operator needs to run a UK prize draw site. It never edits plugin files, so plugin updates stay safe.

System architecture: WordPress, WooCommerce, lottery plugins, the RWD Raffle Theme and optional add-ons WORDPRESS 6.3+PHP 7.4+ · SITE TIME WOOCOMMERCECART · CHECKOUT · ORDERS · EMAILS WOOCOMMERCE LOTTERY LOTTERY PICK NUMBER RWD RAFFLE THEMEDESIGN · PLAYER JOURNEY · PRIZES · COMPLIANCE · SAFER PLAY · ADMIN SPIN WHEEL SCRATCH CARDS LEADER BOARD LIVE FEED
FIG. 1 Stack. Solid layers are required; dashed boxes are optional add-ons that plug into the theme.
Naming convention

Some admin menus and Customizer sections start with your theme's own name. In this manual that name is written as ‹Theme›, e.g. Appearance›Customize›‹Theme› Home. The admin menu can also be renamed to your business name (see § 11).

§ 02

Requirements

#
ComponentVersionStatusPurpose
WordPress6.3+RequiredCore platform. Rafflie AI assistant needs 7.0+.
PHP7.4+ (8.x rec.)RequiredServer runtime.
WooCommerceLatestRequiredBasket, checkout, orders, payments and emails.
WooCommerce Lottery (WPGenie)LatestRequiredThe lottery product type, ticket limits, draw dates and draws.
WooCommerce Lottery Pick Number (WPGenie)LatestRequiredSkill questions, pick-your-numbers, lucky dip and instant wins.
TeraWalletLatestOptionalPlayer wallet and automatic site-credit prizes.
SSL certificate—RequiredPayments, logins and the age gate cookie.
Server cron—RequiredCloses and relists competitions on time. See § 07.

If a required plugin is missing, the theme shows an admin notice naming it. The front end keeps working but competition features are hidden until the plugin is active.

§ 03

Installation

#
  1. Install the plugins. Plugins›Add New: install and activate WooCommerce, then WooCommerce Lottery, then WooCommerce Lottery Pick Number. Run the WooCommerce setup wizard and set the currency to GBP.
  2. Set the site time. Settings›General → Timezone: London. Every countdown, draw date, spending-limit period and email uses this time.
  3. Upload the theme. Appearance›Themes›Add New›Upload Theme: choose the theme .zip from your account downloads and click Activate.
  4. Activate the licence. ‹Theme››Theme License: paste the licence key from your order email. See § 04.
  5. Import demo content (recommended on a new site) from the same screen. See § 05.
  6. Set permalinks. Settings›Permalinks → Post name, then Save.
  7. Work through the first-run checklist in § 06.
Staging first

On a live shop, install on a staging copy first. One licence covers the live domain plus localhost and staging.

§ 04

Licence & updates

#

The licence is signed and tied to your domain. It unlocks theme updates, the demo importer and support for the licence period.

Screen‹Theme››Theme License
Scope1 live site. Localhost and staging don't use a seat.
StatusShown at the top of the WordPress dashboard: active, expiring soon, expires within 48 hours, expired, or problem.
ChecksRe-checked automatically in the background. Use Check licence to refresh now.
UpdatesDelivered through Dashboard›Updates like any theme while the licence is active.
Moving domainDeactivate on the old site first, then activate on the new one. You can also manage sites from My Account.
RenewalRenews yearly. If it lapses the site keeps working; updates and support pause until renewed.
§ 05

Demo content

#

‹Theme››Theme License → Import demo content. Keep the page open while it runs; large imports take a few minutes.

Creates

  • Pages: Home, Competitions, Winners, Entry List, My Account, legal pages
  • Header and footer menus
  • Demo competitions with categories and instant wins
  • Winner records
  • Theme settings and legal copy

Behaviour

  • Safe to re-run: existing demo items are updated, not duplicated
  • Competitions need WooCommerce and both lottery plugins active
  • Replace demo images, prizes and dates before launch
  • Delete demo winners before going live. The theme never shows invented winners on a live site
§ 06

First-run checklist

#

Do these before taking the first payment. The dashboard's Launch checklist ticks most of them off automatically from your settings.

TaskWhere
01Business details for the legal pages‹Theme››Business & Legal
02Logo, menus and site iconAppearance›Customize / Appearance›Menus
03Two lottery cron jobsHosting control panel. See § 07
04Payment gateway (Stripe, PayPal, etc.)WooCommerce›Settings›Payments
05Test email and SMTP‹Theme››Email Settings
06Age gate and exit page‹Theme››Age Gate
07Default spending limitSpending Limits›Settings
08Prize claim recipientsPrize Claims›Settings
09Custom admin login URLSettings›Permalinks → Login slug
10Voluntary Code checklist‹Theme››Compliance
11Social profiles‹Theme››General & Social
12Place a real test order end to endFront end
§ 07

Cron jobs

#

WooCommerce Lottery needs two server cron jobs so competitions end exactly on time and relist automatically, even when nobody is visiting the site. WordPress's built-in cron only runs on page visits, so it isn't enough on its own.

JobURLScheduleCron
Finish ended competitions/?lottery-cron=checkEvery minute* * * * *
Automatic relisting/?lottery-relist=trueEvery hour0 * * * *
cron command (example)
wget -q -O - "https://yourdomain.co.uk/?lottery-cron=check" >/dev/null 2>&1

The Cron jobs box on the WordPress dashboard detects your host (cPanel, Plesk, DirectAdmin, hPanel, SiteGround, Cloudways, Kinsta and others), shows the exact commands for your domain and step-by-step instructions, and turns green once each job has run. No cron screen on your hosting? Use a free external service such as cron-job.org with the URLs.

§ 08

Competitions

#

A competition is a WooCommerce product with the type Lottery. Create one at Products›Add New → Product data: Lottery. Set a featured image and gallery for the prize.

Field reference

FieldTabEffect
Ticket price / sale priceGeneralPrice per entry. Sale price shows as a reduced price.
Max ticketsLotteryTotal entries. Drives the progress bar and sold-out state.
Min ticketsLotteryDraw fails if fewer are sold by the end date.
Max tickets per userLotteryPer-player limit, enforced in the popup, basket and checkout.
Start date / End dateLotteryStart is optional (future competitions show a countdown). End is the draw time, in site time.
Number of winnersLotteryMain-draw winners.
Pick numbers / RandomPick NumberLet players choose tickets, or assign random numbers (lucky dip). Numbers are held while in the basket.
Alphabet / TabsPick NumberLetter tickets (e.g. A12) and tabbed number grids for large draws.
Skill question & answersPick NumberMultiple-choice question checked before a ticket can be added. Optionally only correct answers enter the draw.
Instant winsPick NumberWinning ticket numbers with prizes. The theme adds an image upload per instant prize.
Live draw detailsTheme boxLive draw link, streaming platform and time shown in the buy box.
Bundles & discountsTheme boxQuantity tiers (e.g. 10 for £9), Buy X Get Y free and a minimum quantity.
FeaturedCatalog visibilityFeatured competitions rotate in the home page hero slider.
CategoryProduct categoriesCreates a filter pill on the Competitions page.

Lifecycle

  1. ScheduledBefore start date. Countdown to open.
  2. LiveOn sale. Progress bar and draw countdown.
  3. Sold outAll tickets sold, waiting for the draw.
  4. EndedClosed by cron. Winner drawn or failed on min tickets.

Paid orders for entries complete automatically because entries are digital. Cash on delivery orders are left alone. Public "Lottery" wording from the plugins is replaced with "Competition" across the site.

§ 09

Pages & templates

#

Theme pages are matched by their slug. Keep these slugs; change the titles freely.

PageSlugRenders
Homefront pageHero slider, game grid, ending soon, how it works, live wins, winners, charity and trust strips.
Competitions/competitions/Filter pills, sort, load more. Spin wheel and scratch card tabs when those add-ons are active.
Winners/winners/Winners archive with categories, sort and a Live Winners tab.
Entry List/entry-list/Entry Lists hub (Live / Drawn) and a public list per competition. Set to noindex.
Leader Board/leaderboard/Monthly leaders (Leader Board add-on).
My AccountWooCommerceDashboard, entries, prizes, wallet, spending limit, games, details.
Basket / CheckoutWooCommerceBranded basket and two-column raffle checkout.
Privacy Policy/privacy-policy/Legal pages filled from Business & Legal settings. The free entry route is /terms-conditions/#free-entry.
Terms & Conditions/terms-conditions/
Terms of Use/terms-of-use/
Acceptable Use Policy/acceptable-use-policy/

Menus: Appearance›Menus has two locations, Primary Menu (header) and Footer Menu. Both show sensible fallback links until you assign your own.

§ 10

Customizer reference

#

All front-end options are in Appearance›Customize with a live preview.

SectionControls
‹Theme› HomeEvery home page section: hero, game grid, ending soon, how it works steps, live wins, winners, trust tiles, page banners.
‹Theme› Competitions & CardsCard style (Classic / Compact) per location, cards per row per device, image ratio, show sold out, keep ended competitions visible, after add-to-basket behaviour.
‹Theme› Winner CardsHorizontal, Stacked or Overlay winner cards for home and Winners page.
‹Theme› Entry ListsPublic name format (e.g. "Jordan M." or full name) and entry list text.
‹Theme› My AccountAccount menu labels, subtitle, help box title and help page.
‹Theme› CharityCharity strip title and logos (or name badges), each with an optional link.
‹Theme› LegalAnnouncement strip, company notice, responsible play notice, postal entry URL.
‹Theme› Spinwheel / Scratch CardsHome grid titles and colours (add-ons).
‹Theme› Leader BoardTitles, text and button (add-on).
Live FeedOn/off, title, count, refresh interval, cards per screen per device (add-on).
§ 11

Admin screens

#
ScreenPurpose
DashboardOperator dashboard: licence status, launch checklist, cron monitor, guides and support.
Dashboard›Ask RafflieAI assistant for "how do I" questions, drafting competitions and prize images. Every change needs your approval and can be undone.
‹Theme››General & SocialSocial profiles; rename the admin menu to your business name.
‹Theme››Theme LicenseLicence activation, status and demo import.
‹Theme››Business & LegalCompany name and number, addresses, contact email, data manager, policy dates.
‹Theme››ComplianceVoluntary Code checklist and footer badge.
‹Theme››Age Gate18+ confirmation and exit page.
‹Theme››Email SettingsTest email, SMTP, From name/address, Reply-To.
‹Theme››Winner EmailsWinner notification email template.
Prize ClaimsClaim Log, Settings, Site Credits and Site Credit Settings.
Spending LimitsLimit increase requests and default limit settings.
WinnersWinner records: photo, quote, prize, category, ticket, draw date.
Appearance›Discount ColoursColours for bundle and offer banners.
Users›ProfilePer-player spending limits, locks and change log.
§ 12

Player journey

#
  1. BrowseHome, Competitions page, cards with live countdowns.
  2. EnterCompetition page or quick entry popup: quantity, bundles, skill question.
  3. BasketSlide-out drawer and branded basket. Limits checked.
  4. CheckoutDOB check (18+), terms, free entry notice, any gateway.
  5. Thank youTicket numbers per competition, instant win pop-up, games ready to play.
  6. AccountEntries, prizes and claims, wallet, spending limit.

Checkout rules

  • Date of birth required, 18+ checked in the browser and on the server, remembered for returning players
  • Phone number follows the WooCommerce phone setting
  • Order notes removed; summary shows "20 entries" wording
  • All WooCommerce hooks kept: Stripe, PayPal, wallet and express buttons work

Quick entry

  • Basket button beside Enter Now on every card
  • Pick-your-numbers competitions hand off to the full page
  • After adding: open the drawer or show a notice (Customizer)
  • Ticket limits checked in the popup, drawer and basket
§ 13

Prizes & site credit

#

Every prize a player wins (main draw, instant win, spin wheel, scratch card) appears in My Account › My Prizes with its claim status.

Prize typeClaimAdmin
CashForm collects bank details (masked in emails and lists).Prize Claims›Claim Log: filter, search, set status (submitted, amended, completed, rejected) and optionally email the player.
PhysicalForm collects a delivery address.
Site creditNo claim. Paid to the TeraWallet balance automatically.Prize Claims›Site Credits

Site credit ledger

  • Prize names like "£5 Site Credit" are detected and credited
  • One permanent ledger row per win: never paid twice
  • Paid only once the order is paid
  • Failed credits retry hourly
  • Large or unclear amounts are held for review
  • Refunded or cancelled orders are flagged, with a reverse option
  • Scan past instant wins for missed credits
  • Competition, spin and scratch credits in one log
§ 14

Entry lists & draws

#
  1. Competition ends. The cron job closes it at the end date (site time).
  2. Run your draw. Use the public entry list or the CSV export (streamed in chunks, fine for 100k+ entries).
  3. Mark the winner. On the entry list, reveal the entry's details, email the winner and mark them in one step. Winner marks can be removed from the competition's Draw winners box.
  4. Publish. Marking a winner creates a Winners draft. Add a photo and quote, then publish.

Public entry lists show names in your chosen format and never show email addresses. They load 25 rows at a time with counts cached, and are kept out of search results.

§ 15

Safer play & compliance

#

Safer play

  • Player limits: daily, weekly, monthly or yearly
  • Take a break: lock the account for a set time
  • Site-wide default limit
  • Requests to raise a limit are queued for review
  • Enforced at add to basket, basket, classic and block checkout, and express payment buttons
  • Age gate works behind page caching

Legal

  • Enter business details once; every legal page fills in
  • Missing details show as [Company number] placeholders for admins
  • Free postal entry clause linked from checkout and every competition
  • Voluntary Code checklist: when every requirement is confirmed you can show a footer badge; unticking any item removes it

Legal shortcodes

ShortcodeOutput
[pg_legal key="company_name"]A business detail. Keys: company_name company_number registered_address trading_address postal_address email data_manager privacy_updated aup_updated website. Add link="1" to link emails and the website.
[pg_legal_url page="terms"]URL of a legal page: privacy terms use aup contact. link="1" outputs a link.
[pg_legal_link page="privacy"]A ready-made link to a legal page.

The theme gives you tools, not legal advice. Have your terms reviewed for your own business.

§ 16

Email

#

Every WooCommerce email uses the theme's branded header, footer and layout, with competition wording instead of shop wording (tickets, spins, scratch cards or a mix).

EmailSent when
Entry confirmationOrder completed. Ticket cards per competition, draw date, instant wins, next steps.
Order receivedOrder processing.
Instant winInstant prize won (guests included).
WinnerYou mark a draw winner. Template in ‹Theme››Winner Emails.
Prize claimPlayer submits a claim (player and prize team) and on status change.
Password reset / WalletStandard WooCommerce and TeraWallet events, branded.

Anything you type in WooCommerce›Settings›Emails is used as-is. Noisy default lottery emails are switched off on setup; you can turn any back on there.

Deliverability

Set up SMTP in ‹Theme››Email Settings and send a test. Force a single From address so no plugin sends from a different one, and set a Reply-To for player replies.

§ 17

Security & login

#
  • Custom login URL. Settings›Permalinks → Login slug. wp-login.php then returns a 404. Bookmark the new address.
  • Branded login screen with an access warning and support contacts.
  • Players are unaffected. They log in, register and reset passwords on My Account.
  • Rafflie is sandboxed. It can't delete content or touch orders, payments, customer data, limits, claims or credits.
Locked out?

If you lose the custom login address, contact support. We'll give you the one-line setting that turns the custom URL off temporarily.

§ 18

Performance & caching

#

Built to scale

  • Designed for competitions with 100,000+ entries
  • Database paging and cached counts on entry lists
  • Instant prize data loaded only when a popup opens
  • Scripts and styles load only on pages that need them
  • Inline SVG icons, no icon font, no page builder

Page caching

  • Countdowns, age gate, entry lists and prize popups work behind full page caching
  • Exclude Basket, Checkout and My Account from the cache (most cache plugins do this for WooCommerce automatically)
  • Don't cache ?lottery-cron or ?lottery-relist URLs
§ 19

Add-ons

#

Add-ons are separate plugins built around the theme. When active, the theme styles them and adds them to the home page, Competitions page, basket, thank-you page, My Account, My Prizes and emails with no shortcodes.

Add-onAdds
Spin WheelSpin wheel games: home grid and tab, own Competitions tab, spin page, prize grid, "Your spins are ready", My Account page, win emails.
Scratch CardsInstant-play scratch cards with the same integration points.
Leader BoardAnimated monthly leaders on the home page and a Leader Board page.
Live FeedReal-time winners ticker under the home hero; [rwd_live_feed] shortcode for any page.
§ 20

Troubleshooting

#
SymptomCause / fix
Competition didn't close at the end timeCron jobs not running. Check the dashboard Cron jobs box; it turns green when both run.
Countdowns or draw times are an hour outSet Settings›General → Timezone to London, not a UTC offset.
Legal pages show [Company name]Fill in ‹Theme››Business & Legal.
Emails not arrivingSend a test from ‹Theme››Email Settings; the error is shown if it fails. Set up SMTP.
Site credit not paidOrder not yet paid, amount held for review, or TeraWallet inactive. Check Prize Claims›Site Credits and run Find missed credits.
Theme update not showingLicence inactive or expired. Check ‹Theme››Theme License.
Competitions page 404sRe-save Settings›Permalinks and check the page slug is competitions.
Player can't add ticketsPer-player limit reached, spending limit reached, competition not started or already sold out. The notice says which.
§ 21

Support

#
Licences & downloadsMy Account
HoursUK working days. We usually reply the same day.

When you contact us, include your domain, theme version (Appearance›Themes) and the steps to reproduce the problem.