Giveaways, tickets and point prizes
Use one host to run the draw. The popup, Stream Deck and Event Flow control that host; audience displays show its committed result.
Run your first free giveaway
- In the popup, open Giveaway Options. Leave the ID as
default, keyword as!enter, and ticket price and point prize at zero. - Choose a winner card, name reel or community wheel. Preview the display, then copy its link into an OBS Browser Source.
- Select Open entries. Viewers enter by sending the keyword in a captured chat.
- Select Close entries, then Draw winner. Drawing also closes entries if you forgot to close them first.
- Select New round to start another draw. Earlier winners remain in the host's history.
Keep the SSN host running. No interaction with the OBS browser source is required. The community standalone wheel remains available without &managed; points and remote controls use managed mode.
Tickets paid with SSN points
- Enable the existing Loyalty Points System in the popup. These are SSN points, separate from Twitch channel points and individual game scores.
- Under Tickets and point prizes, set the points per ticket and a maximum number of tickets per viewer. A price of 1 means one ticket per point.
- Open entries. For a giveaway named
friday, a viewer buys five tickets with!ticket friday 5. - Check participants in Manage giveaways and history. A successful purchase charges and enters the viewer together. Insufficient funds create no tickets.
Ticket purchases reserve points immediately, so the same points cannot also buy stickers or enter another paid draw. Drawing consumes those points. Cancel and refund returns reserved points. Removing one participant before a draw returns that participant's reservation. Paid rounds cannot be silently discarded with New round.
Rules lock after the first entry. Close/open can pause a round using its existing rules. To change the price or eligibility, cancel it and create another round. A viewer cannot switch wallets or change a pot side after entering.
Give away points
Set Point prize per winner and Number of prizes before opening. Each prize adds that many SSN points to the selected viewer's existing account. This creates points; it does not draw from ticket revenue or an operator wallet. The total issuance is capped by the configured prize amount and winner count.
For multiple prizes, draw one at a time. Each committed winner is recorded before the display animates. A completed draw cannot be cancelled to undo a known result. Correct mistakes through a deliberate host points adjustment; changing a display or reconnecting never awards again.
Games with point rewards
Managed Number Hunt
Choose Number Hunt (host-controlled), ticket cost 0, one prize, and an optional point prize. The host selects a number from 1–100. Players use !guess friday 50, substituting the giveaway ID. Correct guesses award the first eligible solver once; wrong guesses narrow the range for everyone. Each viewer can guess once every five seconds.
Use the managed giveaway display, or games/numberhunt.html?session=YOUR_SESSION&managed&giveaway=friday. Ordinary Number Hunt and other existing games keep their original local behavior. Their local scores and winner labels do not automatically award SSN points.
Coin Flip Pot
This is a game of chance. Choose Coin Flip Pot, price 1, one outcome, and extra prize 0. Viewers stake with !ticket friday 3 heads or !ticket friday 3 tails. Both sides need a participant. Close entries and draw: the host chooses heads or tails with equal probability, irrespective of stake totals.
Winning viewers recover their stake and split the losing stakes in proportion to their stake. Whole-point remainders go to the largest fractional shares, then entry order breaks ties. No fee is taken and no extra points are created. For winning stakes of 2 and 1 against 5 losing points, the 8-point pot pays 5 and 3. Cancel before drawing to refund everyone. If one side is empty, draw is rejected and you can cancel/refund.
Multiple giveaways
Give each draw a short ID using letters, numbers, hyphens or underscores. A viewer's purchases across all IDs share the same available wallet balance. Each OBS URL includes &giveaway=ID. Ticket and guess commands name the draw explicitly. Give concurrent free draws different keywords: an ambiguous free keyword does not enter several draws accidentally.
The popup fields are setup values. Refresh or open the manager to inspect the rules committed on the host. Changing an audience link only changes its display settings; it does not rewrite a running round's ticket rules.
OBS and presentation
The default managed background is transparent. Select a themed panel if desired. Card, reel and community wheel share the same result and six color styles. Reduced-motion preferences skip reveal animations. The wheel previews at most 120 names; it is a reveal animation, not a full representation of every ticket's odds. Selection uses the complete eligible ticket pool.
On reconnect, the display shows the saved result. A connected display does not tell SSN whether that OBS scene is currently visible. Keep controller URLs, session IDs and backup files private.
Event Flow
Add Giveaway / Tickets from the points actions. Select Enter free giveaway, Buy tickets, Grant free tickets, Close entries, Draw winner, Cancel and refund, or Query state. Select the ID and ticket count; choose heads/tails for a pot purchase. The action uses the captured viewer identity. Use a trusted trigger/filter before grants or operator controls.
Buy tickets already spends the points. Do not put Spend Points before it. Failure stops dependent actions without hiding the original chat. The result is available in meta.giveawayControlResult. The Event Flow test panel simulates this action without buying real tickets. Use an isolated host/profile for end-to-end tests involving real round changes.
Purchase eligibility uses the committed balance when the action runs. Do not rely on the entry message itself earning the last point needed. Native source message IDs provide persistent replay protection; sources without them have weaker cross-restart identity guarantees. Generic scheduled events without a captured viewer/message ID cannot purchase on someone's behalf.
Stream Deck and API
The native plugin includes Open Giveaway, Close Giveaway, Draw Giveaway, Cancel & Refund, New Giveaway Round and Giveaway State. Their default ID is default. Put {"giveawayId":"friday"} in the value field to select another round. Open can also accept a config object; otherwise an existing round keeps its committed rules, and a new ID uses popup defaults.
Use the existing P2P connection or configured WebSocket transport. The key reports a response from SSN; it does not claim OBS is live. If a response times out, query state before trying a new draw.
{"protocol":2,"action":"buygiveawaytickets","get":"callback-1","value":{"giveawayId":"friday","roundId":"ROUND_ID","operationId":"purchase-123","count":5,"actor":{"chatname":"Avery","type":"youtube","userid":"SOURCE_USER_ID"}}}An operation ID identifies a business operation; the callback ID identifies a response. Keep the operation ID on retries. Reusing it with different parameters fails. Use a new operation ID for an intentional new purchase. Operator API access can spend for the supplied actor: do not expose it as a public unauthenticated purchase form.
History, backups and recovery
The manager lists rounds, participants and winner history. Export winner history as JSON or save a complete version 2 points/giveaway backup. Full backups contain balances, reservations, rounds and operation receipts together. Nothing is uploaded to a server.
On host restart, saved open rounds become closed for review. Their tickets remain reserved. Reopen with the same rules, draw, or cancel/refund. Interrupted database transactions either commit completely or leave no partial purchase/payout. Sticker reservations with no committed delivery confirmation are recovered after their timeout.
Complete recovery is available on a fresh host with no existing balances or giveaway records. It restores the whole snapshot and keeps restored rounds closed. It refuses to overwrite a populated host. Restore the original stream/session ID in the popup before resuming its rounds; the recovery result lists the backup sessions. This backup does not replace your general popup settings. Never run the old and recovered host as independent authorities for the same economy. A backup is a snapshot: it cannot include transactions that happened after it was saved.
Balance-only imports cannot restore outstanding reservations. Point reset and manual overwrite are rejected when affected funds are reserved. Resetting points does not erase giveaway receipts/history. Balances belong to this browser/app profile, while rounds are scoped to the session. Separate profiles/devices do not synchronize automatically. Clearing browser data can remove local records, so keep backups outside that profile.
Optional server backup/synchronization is a future feature, not part of this release. This implementation adds no uploads, server credentials, purchased currency or cash-out.
When something does not work
- No entry: check the ID/keyword, membership restriction, open state and captured platform. Bot, private, historical, replayed and test-marked entries are excluded.
- Account changed: a name/identity change can make a wallet ambiguous. Review it on the host; accounts are never silently merged across platforms.
- No response: make sure the intended SSN host is running and host controls are enabled. Refresh committed state before retrying.
- Unable to reset/import: settle or cancel reserved purchases first. Use complete recovery for a backup containing obligations.
- Unknown reward:
!spendrequires a matching configured reward and price; it no longer burns points for an arbitrary reward name.
API reference · Event contracts · Polls and waitlists
Recover a backup step by step
- Keep the old host stopped. Open SSN in a fresh browser profile and open the giveaway manager.
- Under Recover on a fresh host, choose your complete backup. Wait for the recovery message and note the original session ID it lists.
- In the popup's Session Options, enter that original session ID.
- Return to the manager, choose the giveaway ID, and select Refresh. Check its rules, participants and winner history. Recovered open rounds are closed for review.
- Reopen with the same rules, draw, or select Cancel and refund to return reserved tickets. Save a new backup after reviewing the result.
For OBS, start with a 1280 × 720 Browser Source. The managed wheel fits the remaining source height. The default background is transparent without custom CSS; all routine controls stay in the popup, manager or Stream Deck.