DreamCar Owner's Handbook
TICKET #11,893DRAW POSITION 4,117 OF 6,200

How Dream Car
Competitions works

A plain-English guide to the website and admin panel: how customers join and buy, how ticket numbers are picked, how live draws are recorded, and what you control as the owner.

Version 1.016 Oct 2026dreamcarcompetitions.comPrepared for Mark
01 · The platform at a glance

What runs your website

Two applications on your own server, one database, and a few trusted services for payments, bot protection and email.

CustomerPhone or computer
WebsitePages, cart, checkout, admin paneldreamcarcompetitions.com
APIAll the rules: tickets, payments, drawsapi.dreamcarcompetitions.com
DatabaseEvery record, in one placeNeon PostgreSQL
Krystal + CoolifyYour server. Runs both apps, renews SSL automatically, deploys updates.
StripeCard payments and refunds. Confirms each payment to the API.
Cloudflare TurnstileBot protection on sign-up, admin login and the contact form.
Email & KlaviyoOrder emails and marketing journeys.
Currency

Everything is priced and charged in GBP. Customers can view prices in EUR or USD; those are conversions refreshed every 6 hours, for display only.

02 · Accounts & membership numbers

Every customer gets a permanent number

Joining

  • Name, email, mobile and password; confirm 18+ and the Terms; pass the captcha.
  • A 6-digit code is emailed to confirm the address.
  • Emails are case-insensitive: Name@Gmail.com and name@gmail.com are one account.
  • A mobile number is required before paying.

Membership number

#27 Given automatically when the account is created. Shown on the account page, the admin list and the official draw list.
  • Permanent. It never changes, even when an admin edits the account.
  • Never recycled. If #27 is disabled or deleted, #27 is never given to anyone else.
Launch

Numbers can restart from #1 once, before launch, as part of removing all test customers. After launch they are never reset. See the launch checklist.

03 · Competitions

The six stages of every competition

The website never picks a winner. Your team draws live; the system locks the entries and records the result.

1

Create

Prize, price, number of tickets, dates, skill question, instant wins.

Admin
2

Sell

Customers buy until the end time or until it sells out.

Automatic
3

Close & lock

Sales stop. The official list of eligible entries is frozen.

Admin
4

Live draw

You pick a number live on Facebook or YouTube with an external generator.

You
5

Record

Enter the number. The system shows the ticket and customer. Confirm.

Admin
6

Publish

Winner appears on the site and gets the winner email.

Admin
Status

Active

Live and on sale between its start and end time.

Status

Launching soon

Visible with a countdown. Sales locked.

Status

Draft / hidden

Not visible to customers.

A competition counts as ended when its end time passes or it sells out. The admin team then gets a notification to close and lock entries.

04 · Buying tickets

From basket to tickets

Cart

Held 10 min

Tickets in the cart are held so nobody else can take them while the customer browses.

Checkout

Reserved 35 min

Tickets are reserved while the customer pays by card or wallet.

Paid

Tickets issued

Only after Stripe confirms payment. Random numbers are assigned and emailed.

Not paid

Released

Abandoned or failed payments release the tickets automatically.

No overselling

Tickets available = total − sold − currently reserved. Even if hundreds of people buy at once, a competition can never sell more tickets than it has.

Bundle discounts

Per competition in the basket. No promo codes yet.

1–9 tickets
0%
10–24
10%
25–49
15%
50 or more
20%

The competition page currently advertises different tiers. See decision 6.

The skill question

Correct

Tickets are eligible for the main draw.

Wrong

Tickets are still issued and paid for, but marked ineligible and left out of the official draw list.

Minimum 1 ticket per purchase; the selector allows up to 500 at a time. No per-customer maximum yet.

05 · Ticket numbers

Random, unique, permanent

Numbers are picked at random from the whole competition, not handed out in order. A buyer of 10 tickets in a 15,000-ticket competition might receive:

#11,893#402#7,215#14,068#3,551 #9,940#1,187#12,604#5,322#8,079
A 250-ticket competition, seen from above
UnsoldAlready soldThis purchase

Why a number can never repeat

  • Numbers are assigned only after payment succeeds.
  • While an order is being processed, that competition is locked in the database. Two orders at the same moment are handled one after the other.
  • The database refuses to store the same number twice in one competition, as a final safety net.
  • Each competition has its own secret key that scrambles the order, so the next number can't be guessed.
Tested

15 orders placed at the same instant: every ticket unique, stock count exact.

Fixed

2024 Audi RS6 Avant Carbon Black, Rolex Daytona Platinum (Ice Blue Dial) and 2024 Mercedes-AMG G63 Magno were created before random numbering existed, so their earlier tickets were sequential. From now on, every purchase in these three receives random unsold numbers too. Tickets already sold keep their numbers, because customers already hold them.

06 · Instant wins

Prizes hidden inside the ticket pool

Set up

Choose prizes

Add instant-win prizes, how many of each, and the sales % at which they switch on.

Trigger

Numbers hidden

At that %, the system secretly picks winning numbers from tickets not yet sold.

Match

Instant win

When a new ticket matches, the win is recorded on the spot. Customer and admins are told.

Fulfil

Your team

You arrange the prize. It is not paid into the wallet automatically.

The Instant Wins admin page lists every winning number, whether it has been won, by whom and when.

07 · Live draws & winners

You draw live. The system keeps the record.

Admin → Draw Console. Here is a worked example of a competition that did not sell out.

Tickets in competition
15,000
Sold · correct answer
6,200

of 6,240 sold; 40 answered wrongly

Official draw list
1–6,200

ordered by ticket number

Official draw list (extract)
Draw positionTicketMember
1#3#108
2#9#61
………
4,117#11,893#452
………
6,200#14,996#233

Download as CSV before going live.

On the live stream
4,117Your random-number generator, range 1–6,200
PreviewAdmin types 4,117 → system shows ticket #11,893, member #452, name and masked email.
ConfirmResult is stored permanently with the video link.
PublishWinner goes live on the site and receives the winner email.
Locked

Locking stops all sales instantly and can't happen while a customer is mid-payment. A payment that arrives afterwards issues no tickets: wallet payments go straight back to the wallet, card payments are flagged for refund.

Mistakes

A confirmed result can't be edited. To correct one, an admin voids it with a written reason; the frozen list stays the same and a new result can be recorded.

Permanent draw record

Every draw keeps: total eligible entries, winning draw number, winning ticket and customer, draw time, the admin who recorded it and the live video link. Every action (lock, preview, confirm, publish, void) is logged with who and when. The log can never be edited or deleted, not even directly in the database.

08 · Payments, refunds & audit trail

Every order can be traced to Stripe

Inside each order

  • Customer, competition, amount and discount
  • Ticket numbers shown as #181
  • Stripe Payment Intent ID and Checkout Session ID, with copy buttons and a link straight to Stripe
  • Payment method and status
  • Refund history and an event timeline

Order timeline

Paid by card · £45.0010 tickets · Volkswagen Golf R
Refund recorded · £15.00Requested by customer · Partially refunded
Refund recorded · £30.00Order now Refunded

Example only.

Refunds

Refund in your Stripe dashboard as usual. Stripe tells the website, which records the amount, date, reason and refund ID against the order automatically. Orders placed before 16 October 2026 have no timeline events, because the feature didn't exist yet.

09 · Wallet & gift cards

Balance customers can spend on tickets

Top up

Customers add money to their wallet with a card and spend it on tickets.

Gift cards

Bought online. A code is emailed to the buyer or recipient. Valid 365 days, single use.

Redeem

The code's value is added to the wallet. Wallet money can't be withdrawn as cash.

10 · Administrators & roles

You decide who can do what

Admin → Admins & Roles. Today there is one administrator account and it is a Super Admin.

Super Admin

Owner

Everything, including creating, editing, disabling and deleting other admins and resetting their passwords.

Admin

Manager

Everything except managing other administrators.

Staff

Team member

Only the areas you tick. Everything else is hidden from their menu and blocked by the server.

AreaSuper AdminAdminStaff
Competitions & tickets✓✓If ticked
Draws & winners✓✓If ticked
Payments & refunds✓✓If ticked
Customers✓✓If ticked
Gift cards · Newsletter · Enquiries · Settings✓✓If ticked
Manage administrators✓––

What you can do

  • Create an admin. A secure password is generated and shown once.
  • Edit name, email, role or permissions.
  • Disable: they're signed out immediately and can't log in.
  • Delete or reset password.

Built-in safety

  • You can't disable, delete or demote yourself.
  • The last Super Admin can never be removed.
  • Admins sign in only through the captcha-protected admin login.
  • Admin accounts can't buy tickets.
Tip

Give each person their own named login on your business email, instead of sharing one account. Disabling someone is then one click.

11 · Managing customers

Admin → Customers

ActionWhat happens
CreateAccount is created already verified; a password is shown once.
Edit detailsChange name, email (must be unique) and phone. The membership number never changes.
BlockCustomer can't log in or buy. Can be unblocked.
DeleteLogin is closed for good. The record and membership number are kept; the email can register again.
Reset passwordGenerates a new password shown once to you.

Blocking or deleting doesn't change a customer's existing tickets or wallet. See decision 4.

12 · Emails

What customers receive

EmailSent when
Verification codeOn sign-up, or when a new code is requested
WelcomeAfter the email is verified
Password resetFrom "Forgot password"
Your ticketsAfter every purchase, with ticket numbers and any instant wins
Instant winWhen a ticket matches an instant-win number
Gift codeAfter a gift card purchase
You're a winnerWhen the draw result is published
New & ending soonHourly check, to customers who opted in and newsletter subscribers
Weekly round-upMondays 10:00, the 5 newest competitions
Klaviyo journeysClosing soon (about 24h and 2h before), new launch, order placed, refunds
13 · Security, privacy & backups

How customer data is protected

  • All traffic is encrypted; certificates renew automatically.
  • Passwords are stored one-way. Nobody can read them, only reset them.
  • Every admin function needs an admin login; staff only reach their permitted areas.
  • Public pages never show customers' emails, phone numbers or passwords. Winners appear by name and member number.
  • Captcha blocks automated sign-ups and password guessing.

Security review · 16 Oct 2026

A full review found and closed several gaps, for example admin actions reachable without an admin login. All fixed and re-tested.

Backups

A full backup was taken before the latest update, and one is taken before every data change. We recommend also turning on Neon's point-in-time restore, so the database can be rolled back to any moment.

14 · Preparing for launch

Clearing test data, safely

Nothing is deleted or reset until we agree the plan together and a backup has been checked.

1

Agree

We send the list of test data, and you confirm anything to keep.

2

Back up

Full backup, test-restored to prove it works.

3

Reset

Test orders, tickets, draws, winners and customers removed. Member numbers can restart at #1.

4

Your admins

Named logins on business emails; old shared login disabled.

5

Go live

Live Stripe keys, one real order end to end, refunded, then open sales.

15 · Frequently asked questions

Your questions, answered

Administrators

How many administrator accounts exist?
One, and it's a Super Admin. You'll see every administrator under Admins & Roles.
How do I create, edit, disable or delete administrators?
Admins & Roles → Add Admin, or the Actions menu on any row: Edit, Reset Password, Disable/Enable, Delete.
Can staff have different permissions?
Yes. Give them the Staff role and tick only the areas they need. Everything else disappears from their menu and the server refuses it.
Do I have full Super Admin control?
Yes. Your Super Admin account controls everything, including all other admins. The system won't let the last Super Admin be removed or demoted.

Customers & membership numbers

How are membership numbers generated?
Automatically, when the account is created: the next number in sequence. Unique and permanent.
Can a membership number ever be reused?
No. Disabled and deleted accounts keep their number, and it's never given to anyone else.
Can I edit, suspend or delete customers?
Yes, from Customers: Edit Details, Block, Delete and Reset Password.
Can membership numbers restart from #1 for launch?
Yes, once, before launch, when all test customers are removed. Never after launch.

Tickets & draws

Are ticket numbers random?
Yes. They're chosen at random from the competition's unsold numbers, and the database guarantees no number is issued twice.
What if two people buy at exactly the same time?
Their orders are processed one after the other. Each gets different random numbers and the stock count stays exact.
Does the website choose the winner?
No. You draw live with an external generator. The website provides the locked list and records the result.
What if a competition doesn't sell out?
The draw list only contains eligible tickets that were sold, numbered 1 to N. You draw a number between 1 and N.
Who is left out of the draw?
Tickets with a wrong skill-question answer, and tickets that have been removed. Everything else sold before locking is included.
Can a confirmed winner be changed?
Only by voiding the result with a written reason. The void is logged permanently, then a new result can be recorded.
Can anyone buy after entries are locked?
No. Sales stop at once. A payment that arrives late gets no tickets: wallet money is returned automatically and card payments are flagged for refund.

Payments

Where's the Stripe reference for an order?
Payments → open the order. The Payment Intent ID and Checkout Session ID are there, with a link to the payment in Stripe.
How do refunds work?
Refund in Stripe. The website records it on the order automatically and updates the status to Partially refunded or Refunded.
Are tickets cancelled when an order is refunded?
Not automatically yet. That's decision 1 below.
Which currency is charged?
GBP for tickets and gift cards. EUR and USD prices on the site are for display.

Running the business

Who looks after deployment, development, the database, security and support?
We'll confirm this in our separate reply and on the team call.
How are updates released?
Changes are tested on a separate test database first, a backup is taken, then the new version is deployed. It takes a few minutes and the site stays online.
Is my data backed up?
Yes. A full backup was taken before the latest update and one is taken before every data change. We also recommend Neon point-in-time restore.
16 · Your decisions

Twelve choices for you

These came out of testing. Each is a business choice or a small follow-up. We'll send a recommendation for each separately.

Refunds and tickets1

Refunds are recorded; the tickets stay in the draw.

Should a refund cancel the tickets and remove them from the draw?

Refunds on mixed baskets2

A partial refund is split across the basket's competitions by value.

Fine as is, or should the admin choose the competition?

Runner-up prizes3

Only the main prize is drawn in the Draw Console.

Do you live-draw 2nd and 3rd prizes too?

Blocked or deleted customers4

Their eligible tickets stay in the draw.

Should they be excluded?

Instant wins and wrong answers5

An instant win is awarded even if the skill answer was wrong.

Should a wrong answer disqualify instant wins too?

Discount tiers6

The competition page shows 30% at 100 tickets; checkout gives 20% from 50.

Which tiers are right? We'll make both match.

Wallet top-up currency7

Wallet top-ups are charged in USD.

Switch to GBP like everything else? (Recommended)

Age check8

The 18+ tick is checked on the form only.

Also enforce and record it on the server?

Staff and revenue9

All staff can see the revenue dashboard.

Limit revenue figures to Admins and Super Admins?

Ticket limits10

No maximum per customer per competition.

Do you want a per-customer limit?

Postal entries11

Information page only; postal entries aren't in the system.

Need admin tools to add postal entries to draws?

Customer email changes12

Admins can change a customer's email without re-verification.

Notify the customer, or ask them to verify?