Review queue
Put a moderator between "paid" and "played" - read the message, look at the media, decide what goes on stream.
The review queue holds a tip after it’s paid and before it reaches your TTS or media queue. A moderator sees the message and the media, can fix the wording, and chooses what plays: the message, the media, both, or nothing. Until they decide, nothing from that tip touches your stream.
It’s off by default. Switch it on from Tip filter → Manual review.
Three ways a tip lands in review
| Switch | What it holds |
|---|---|
| Review every tip | Everything. Every paid tip and every sub-reward message waits for a moderator. |
| Send filter matches to review | Only tips the word filter or AI filter touched - a replaced word or a blocked one. Instead of the filter’s verdict playing (or the tip vanishing), you see what it caught, check it got it right, fix the text if it didn’t, and pass it on. Works with the first switch off. |
| AI filter unavailable | Always on for AI-filter tenants. If the model can’t be reached, the tip is held rather than falling back to the plain word list. The moderator sees the word list’s suggestion but nothing regex-filtered plays unread. |
Each item in the queue shows which of these brought it there, so a mod knows whether they’re reading a routine check or a filter catch.
Holding the money
Only tips that go into review are held; everything else is captured the moment it clears the ban check, exactly as before. For a Stripe tip that does need review:
- The money is held the moment the viewer taps pay: the card is authorised, not charged. Every check then runs on that hold - a banned viewer’s hold is released straight away, a clean tip is captured, and a tip that needs review simply stays held until you decide.
- Allowing the message, the media, or both captures the payment. The money moves, the tip plays.
- Rejecting both cancels the hold. The viewer is never charged, nothing to refund.
- Card holds last about a week. Each item shows its deadline; a tip nobody reviews in time expires, the hold releases by itself, and it drops off the queue.
You can switch this off (Hold payment until approved on the Tip filter page) to capture before review instead - then rejecting keeps the money and simply plays nothing, and the refund tools are there if you want to give it back.
PayPal doesn’t support the hold-first flow, so PayPal tips are always captured before review.
Reviewing
The Review item appears in the sidebar whenever review is switched on or something is waiting, with the count on it. Each tip shows:
- the viewer’s name and amount, and the message with the filter’s changes already applied - edit either before approving
- the original text as typed, when the filter changed it, and what it matched
- the media with its thumbnail and length, and whether it’s on your banned list
- why it’s here: manual review, a filter match, or the AI filter being unavailable
- for held payments, when the hold expires
Tap a tip to open it: the message on one side, the media on the other, each with its own Allow / Reject, a Donor profile button, and a notes box for the team. Confirm and the allowed halves enter the queues through the normal route - the bot announces it, TTS pre-renders, overlays update - as if the tip had never been held. Reject both and it goes nowhere: a held payment is released, a sub-reward credit goes back to the viewer.
Reviewing needs the Review queue permission. Granting it is separate from Tip filter (which controls the switches) - a mod can work the queue without being able to turn it off.
When the AI filter is failing
Three failed model calls in a row put a banner across the dashboard: AI filter is failing, with how many tips are waiting because of it. Nothing is lost - every affected tip is sitting in the review queue - but it needs a human until the provider recovers. The banner clears itself on the next successful call.
Developers
Two webhook events cover the queue: tip.held when a tip parks (with reason and payment_state), and tip.reviewed when a moderator decides (decision, which halves were allowed, and whether a payment hold was released). tip.created and media.created fire on approval exactly as for an unreviewed tip.