Raffle, Auction & Giveaway Transparency
Last updated: March 2026
Our Commitment to Fairness
Every raffle and giveaway run during Charity Stream-A-Thon uses automated, deterministic systems to calculate entries and select winners. No administrator manually picks or adjusts results. This page documents exactly how each system works so that donors, streamers, and viewers can verify the process independently.
Participation in any raffle or giveaway is a voluntary benefit of donating to St. Jude Children's Research Hospital through Tiltify. No purchase is necessary to participate where prohibited by law. Raffle prizes have no cash value and cannot be exchanged or transferred.
Donation Data — Where It Comes From
All donation data is sourced exclusively from the Tiltify public API using OAuth2 authenticated requests tied to the official Charity Stream-A-Thon team campaign. No donation data is entered, modified, or fabricated by event staff.
The following fields are read from each donation record:
| Field | Description |
|---|---|
| Donor name | As entered by the donor on Tiltify |
| Donation amount | In USD, as processed by Tiltify |
| Timestamp | The exact UTC time the donation cleared |
| Campaign | Which streamer's campaign the donation was made through |
| Donor comment | Optional message left by the donor |
Note:Anonymous donations are excluded from all raffles and auctions. Donors who submit their name as “Anonymous” or leave it blank are not entered into any pool. If you wish to be eligible, ensure your Tiltify display name is set before donating.
Regular Raffle Wheel
The regular raffle wheel is used throughout the event for ongoing prize drawings. It is operated by individual streamers during their broadcasts.
Each donation earns raffle entries based on its amount. The base rate is $10 USD = 1 entry:
entries = floor(donation_amount / 10)
Examples: $10 = 1 entry · $25 = 2 entries · $100 = 10 entries. Amounts below $10 receive no entries.
A configurable maximum entries-per-donor cap may be applied at the streamer's discretion. When a cap is in effect, no single donor can hold more than the capped number of entries in a single drawing, regardless of donation size. The cap in effect is displayed on-stream when active.
Streamers may optionally enable a Double Spots setting. When active, donors who reach the maximum entry cap receive double that capped amount instead of being hard-capped. This setting is disclosed on-stream when in use.
The pool is a flat array where each donor appears once per entry ticket. A winner is drawn by:
winner = pool[ floor(Math.random() × pool.length) ]
Math.random()uses the browser's built-in cryptographically seeded pseudo-random number generator (CSPRNG). Every ticket has an equal and independent probability of selection:
P(win) = donor_entries / total_pool_entries
No administrator can influence or replay the random draw. The result is final the moment the wheel animation completes.
Finale Raffle Wheel
The Finale Wheel is a separate, tiered drawing held at the end of the event for grand prizes. It draws from the full event donation pool— all donations made to any participating streamer's campaign across the entire event window.
Unlike the regular wheel, the Finale Wheel aggregates all donations from the same donor before calculating entries:
total_effective = sum( amount_i × multiplier_i ) for all donations by this donor entries = floor( total_effective / 10 )
This allows donors who give in smaller increments throughout the event to accumulate entries, provided their combined total reaches $10 or more. Donors whose aggregate total remains below $10 receive no entries.
Donor identity is matched by display name as reported by Tiltify. Two different people who happen to share the same display name would have their donations combined. We recommend donors use a unique Tiltify display name to ensure accurate attribution.
During designated bonus periods — announced live on stream — all donations made within that time window earn triple entries:
multiplier = 3 if window_start <= completed_at <= window_end multiplier = 1 otherwise
| Donation | Amount | In 3× Window? | Effective Amount |
|---|---|---|---|
| Donation 1 | $20 | No | $20 |
| Donation 2 | $10 | Yes ×3 | $30 |
| Donation 3 | $5 | No | $5 |
| Total Effective Amount | $55 → 5 entries | ||
No purchase is necessary to enter the Finale Raffle. Any person may request one (1) free entry into the Finale Wheel pool without making a donation. Free entry requests must be submitted in accordance with the method described at charitystreamathon.com/terms.
In addition, administrators may add names directly to the pool in limited circumstances. All manual and free entries count as exactly 1 ticket, are not subject to 3× window multipliers, and are not affected by donation aggregation rules. When manual or free entries are present in a draw they are disclosed on-stream prior to the spin.
The Finale Wheel is divided into milestone prize goals. Each milestone is drawn independently from the same full donor pool. Winning one milestone does not remove a donor from other milestone draws.
winner = pool[ floor(Math.random() × pool.length) ]
Charity Auctions
Charity auctions run on a dedicated platform at auction.charitystreamathon.com. All bids are placed via Twitch chat commands, and winning bids are fulfilled through a verified donation to the streamer's Tiltify campaign.
| Setting | Description |
|---|---|
| Starting bid | The minimum opening bid amount ($1.00 minimum) |
| Duration | How long the auction runs (30 seconds to 20 minutes) |
| Quiet period | A 30–60 second anti-snipe window at the end of the auction |
| Max extensions | The maximum number of times the quiet period can extend the auction |
| Bid command | The Twitch chat command used to place bids (e.g. !bid) |
| Item value | Optional declared retail value of the item |
| Minimum bid threshold | Optional minimum percentage of item value required to open bidding |
Bids are placed by typing the bid command followed by a dollar amount in chat (e.g. !bid 25). Rules enforced on every bid:
- The auction must be active or in an extended quiet period
- The opening bid must meet or exceed the configured starting bid
- Each subsequent bid must exceed the current highest bid by at least $1.00
- Only one bid holds the winning position at any time — the database update is atomic
- All bids are timestamped and permanently stored for audit purposes
if bid placed within quietPeriodSecs of expiresAt:
expiresAt = expiresAt + quietPeriodSecs
extendCount += 1When an auction ends, the winner is the bidder whose bid holds the isWinning flag — always the highest valid bid at the moment the auction closes.
| Stage | Method | Result |
|---|---|---|
| 1 — Webhook | Tiltify sends a real-time notification. The system verifies authenticity (HMAC-SHA256), then attempts to match it to a pending win. | PENDING → MATCHED |
| 2 — Cron fallback | Every 30–60 seconds, the system fetches recent campaign donations and re-attempts matching against pending wins. | PENDING → CONFIRMED |
| 3 — Manual review | Streamers and administrators can manually match a Tiltify donation record to a pending win. All manual actions are logged. | Any → CONFIRMED |
For a donation to be automatically matched:
- The donor's name on Tiltify matches the winning bidder's Twitch display name or login
- The donated amount is equal to or greater than the winning bid amount
- The donation timestamp is after the auction ended
- The Tiltify donation has not already been matched to a different auction win
| Status | Meaning |
|---|---|
| PENDING | Auction ended, winner determined, awaiting donation from winner on Tiltify |
| MATCHED | A Tiltify donation has been automatically linked — awaiting confirmation |
| CONFIRMED | Donation verified; item fulfillment can proceed |
| FAILED | No qualifying donation was received within the review window, or the win was voided |
Every action in the auction system is logged — all bids, every status change, all moderation actions, and the identity and timestamp of any administrator or streamer who takes a manual action.
Winners of physical items are asked to submit a shipping address through the auction platform. All addresses are stored encrypted using AES-256-GCM encryption and are accessible only to the fulfilling streamer and administrators. Address data is deleted after fulfillment.
General Disclaimers
- No purchase necessary. Donations are made to St. Jude Children's Research Hospital, a registered 501(c)(3) charity. Raffle participation is a voluntary benefit.
- No cash value. All prizes are awarded as-is with no cash equivalent, exchange, or transfer option.
- Void where prohibited. Participants are responsible for compliance with their local laws.
- Technical limitations. Entry calculations depend on data accuracy as reported by Tiltify. In the event of a discrepancy, administrators will make reasonable efforts to reconstruct accurate entry counts.
- Administrator discretion. Event staff reserve the right to disqualify entries, void draws, or modify rules in cases of fraud, abuse, or system error. Any such action will be communicated transparently on stream.
- Data privacy. Donor names displayed on-stream are sourced from the public Tiltify donation feed. If you prefer not to have your name displayed, set your Tiltify account to anonymous — noting that this will also make you ineligible for raffle entry.
Questions or Concerns
If you have a question about how entries were calculated for your donation, or wish to dispute a draw result, please reach out via our contact page within 7 days of the event.
