Every key, dial and workflow

Your practical guide to the Social Stream Ninja Stream Deck plugin. The guide is bundled with the plugin, so the controls and icon reference also work offline.

Connect once

  1. Keep SSApp or the Social Stream Ninja Chrome extension running and enabled.
  2. Copy the session ID from Stream Deck Setup in SSApp, or Settings in the extension.
  3. Drag Setup onto a key in the Stream Deck app, select it, expand Setup and connection, and paste the ID or full overlay URL.
  4. Use Peer-to-peer normally. For WebSocket mode, enable SSN's remote API control and select WebSocket in the plugin. Defaults: io.socialstream.ninja, TLS on, send channel 1, listen channel 2.
  5. Choose Test Connection. The Setup key should say Online. Add the command keys and dial actions you need.

The connection settings are shared by all SSN actions and profiles. Keep the session ID and optional password private. Importing a full link may also change transport and password. Starter profiles are editable examples and do not replace your active profile.

The five action types

ActionPlace it onHow it works
SetupKeyConfigure the shared connection in the Stream Deck app. The physical key is a connection indicator; pressing it does not open settings or run Test Connection.
Preset CommandKeySelect a named command, fill any required value, then press the key once. There is no generic long-press or release command.
Custom CommandKeyEnter the API action, optional target and value. Objects, arrays and booleans can be entered as JSON. Use a preset when available for capability filtering and guided selection.
Timer DialStream Deck + dialAdjust SSN's shared stream timer. Its display shows current time and running/paused state.
Chat ReviewStream Deck + dialBrowse recent received messages, pin one, and feature from the default dock's pinned list.

Devices without dials still support timer preset keys. Stream Deck Multi Actions can sequence key commands; they do not wait for a delayed Event Flow workflow to finish.

Timer Dial: the gestures are different

Turn one clickAdd/subtract the configured seconds. Default: clockwise +10 seconds, counterclockwise −10 seconds.
Hold the dial down and turnEach click uses 6 times the configured step. Default: +/−1 minute. Release after turning; this does not start or pause the timer.
Press and release the dialStart or pause. Do not turn during this gesture.
Tap the timer's touchscreen areaRefresh the displayed state. This does not toggle the timer.
Touch and hold that screen areaReset to the configured duration and pause. Holding the physical dial alone does not reset.

Example: start at 5:00. Turn right once → 5:10. Hold the dial down and turn right once → 6:10. Press/release → countdown starts. Press/release again → pause. Hold the screen → 5:00.

Change Seconds per turn in the inspector: a 5-second step makes held turns 30 seconds; a 30-second step makes held turns 3 minutes. This controls SSN's timer, not an independent timer per dial. Opening the SSN timer overlay is a separate step.

Chat Review: browse, pin, feature

  1. Open the default Social Stream dock with the same session. In WebSocket mode also enable Send chat messages to API server in SSN; chat uses channel 4. P2P receives the normal feed.
  2. Turn counterclockwise for older messages; clockwise for newer messages. The display's position/count tells you where you are.
  3. Press the dial to pin the displayed message in the dock.
  4. Tap the touchscreen above it to feature the next pinned message. This can be different from the message you are reviewing if the dock already has pinned messages.
  5. Hold that touchscreen area to unpin the reviewed message.

The review buffer contains messages received while a Chat Review action is visible. It is not a full chat-history download. An empty display may mean chat relay is off or no new messages have arrived.

Run a custom Event Flow workflow

  1. Open Event Flow in SSN and create a dedicated flow.
  2. Add Run from Stream Deck / API from Stream Deck & API. Set the trigger name to intermission.
  3. Connect it to an action, such as Show Text, and set the text. Save and enable the flow.
  4. For visual/audio actions, open the Flow Actions overlay with the same session; add that URL as an OBS Browser Source for your audience.
  5. Add a Preset Command key, select Event Flow workflows → Run workflow, then Refresh workflows and choose your saved flow.
  6. Press once. A check mark acknowledges that SSN accepted the run. Delays and external integrations continue afterward.

The picker saves the flow ID and trigger name. Renaming, disabling or deleting the trigger makes that saved selection unavailable; it is preserved for you to review. Refresh and reselect after changing it.

Advanced value:

{"trigger":"intermission","flowId":"YOUR_FLOW_ID","data":{"name":"Back in five minutes"}}

Use {meta.workflow.data.name} in an action's text template. Omit flowId to run every enabled flow with that exact trigger name. Names are case-sensitive. Each press starts a run; add a Rate Limiter (THROTTLE) node if you want a cooldown. A delayed run can overlap a later press.

API clients use the same connection: {"action":"triggerWorkflow","value":{"trigger":"intermission"}}. getWorkflowTriggers lists enabled, saved triggers. Older hosts hide these presets until their capabilities advertise support.

Full Event Flow and HTTP/WebSocket/P2P examples. Existing eventFlowEvent OBS bridge events are separate from named workflow triggers.

Read the result correctly

Read the icons

The large symbol identifies the feature. The small badge identifies the operation. Titles remain important; colors alone do not identify an action.

Every preset, with its icon and value

Only commands supported by the connected runtime are selectable. Desktop controls require SSApp. Unsupported bulk/settings entries may exist in the registry but remain unavailable. Blank values below mean no default is supplied; commands with a value label may still require input.

IconCommandValue / default
Product State iconProduct State
getCommerceState
Social Stream
No value field required
Run Workflow iconRun Workflow
triggerWorkflow
Social Stream
Trigger name or workflow JSON
List Workflows iconList Workflows
getWorkflowTriggers
Social Stream
No value field required
Open Giveaway iconOpen Giveaway
startgiveaway
Social Stream
Giveaway ID/config JSON
{"giveawayId":"default"}
Close Giveaway iconClose Giveaway
closegiveaway
Social Stream
Giveaway ID JSON
{"giveawayId":"default"}
Draw Giveaway iconDraw Giveaway
drawgiveaway
Social Stream
Giveaway ID JSON
{"giveawayId":"default"}
Cancel & Refund Giveaway iconCancel & Refund Giveaway
cancelgiveaway
Social Stream
Giveaway ID JSON
{"giveawayId":"default"}
New Giveaway Round iconNew Giveaway Round
resetgiveaway
Social Stream
Giveaway ID JSON
{"giveawayId":"default"}
Giveaway State iconGiveaway State
getgiveawaystate
Social Stream
Giveaway ID JSON
{"giveawayId":"default"}
Show Product iconShow Product
commerceShow
Social Stream
Saved product URL (optional)
Next Product iconNext Product
commerceNext
Social Stream
Seconds (0 = until changed)
0
Hide Products iconHide Products
commerceHide
Social Stream
Seconds (0 = until changed)
0
Resume Products iconResume Products
commerceResume
Social Stream
No value field required
Next In Queue iconNext In Queue
nextInQueue
Social Stream
No value field required
Clear Overlay iconClear Overlay
clearOverlay
Social Stream
No value field required
Clear Dock Messages iconClear Dock Messages
clearDock
Social Stream
No value field required
Clear Messages iconClear Messages
clear
Social Stream
No value field required
Clear All Messages iconClear All Messages
clearAll
Social Stream
No value field required
Clear Saved History iconClear Saved History
clearHistory
Social Stream
Type confirm
confirm
Start Credits iconStart Credits
creditsStart
Social Stream
No value field required
Preview Credits iconPreview Credits
creditsPreview
Social Stream
No value field required
Test Credits iconTest Credits
creditsTest
Social Stream
No value field required
Reset Collected Credits iconReset Collected Credits
creditsReset
Social Stream
No value field required
Reset Leaderboard iconReset Leaderboard
resetleaderboard
Social Stream
No value field required
Queue Size iconQueue Size
getQueueSize
Social Stream
No value field required
Send Chat iconSend Chat
sendChat
Social Stream
Message
Hello from Stream Deck
Send Encoded Chat iconSend Encoded Chat
sendEncodedChat
Social Stream
Encoded message
Hello%20from%20Stream%20Deck
Pin Dock Message iconPin Dock Message
pin
Social Stream
Message ID or JSON message
Unpin Dock Message iconUnpin Dock Message
unpin
Social Stream
Message ID
Next Pinned Message iconNext Pinned Message
nextPinned
Social Stream
No value field required
Draw Mode iconDraw Mode
drawmode
Social Stream
true, false, or toggle
toggle
Remove Waitlist Entry iconRemove Waitlist Entry
removefromwaitlist
Social Stream
Entry number
1
Highlight Waitlist Entry iconHighlight Waitlist Entry
highlightwaitlist
Social Stream
Entry number
1
Reset Waitlist iconReset Waitlist
resetwaitlist
Social Stream
No value field required
Stop Waitlist Entries iconStop Waitlist Entries
stopentries
Social Stream
No value field required
Start Waitlist Entries iconStart Waitlist Entries
startentries
Social Stream
No value field required
Open Waitlist Entries iconOpen Waitlist Entries
openentries
Social Stream
No value field required
Resume Waitlist Entries iconResume Waitlist Entries
resumeentries
Social Stream
No value field required
Set Waitlist Message iconSet Waitlist Message
waitlistmessage
Social Stream
Message
Type !join to enter!
Set Waitlist Message iconSet Waitlist Message
setwaitlistmessage
Social Stream
Message
Type !join to enter!
Download Waitlist iconDownload Waitlist
downloadwaitlist
Social Stream
No value field required
Select Winner iconSelect Winner
selectwinner
Social Stream
Winner count
1
Start Timer iconStart Timer
starttimer
Social Stream
No value field required
Pause Timer iconPause Timer
pausetimer
Social Stream
No value field required
Toggle Timer iconToggle Timer
toggletimer
Social Stream
No value field required
Reset Timer iconReset Timer
resettimer
Social Stream
No value field required
{"confirm":true}
Add Timer Time iconAdd Timer Time
timeradd
Social Stream
Seconds
30
Subtract Timer Time iconSubtract Timer Time
timersubtract
Social Stream
Seconds
30
Set Timer iconSet Timer
settimer
Social Stream
Timer JSON
{"seconds":300}
Timer State iconTimer State
gettimerstate
Social Stream
No value field required
Load Poll Preset iconLoad Poll Preset
loadpoll
Social Stream
{"pollId":"..."}
Set Poll Settings iconSet Poll Settings
setpollsettings
Social Stream
Poll settings JSON
Poll Presets iconPoll Presets
getpollpresets
Social Stream
No value field required
Create Poll iconCreate Poll
createpoll
Social Stream
Poll definition JSON
Reset Poll iconReset Poll
resetpoll
Social Stream
No value field required
Close Poll iconClose Poll
closepoll
Social Stream
No value field required
Start Map iconStart Map
startmap
Social Stream
No value field required
Pause Map iconPause Map
pausemap
Social Stream
No value field required
Reset Map iconReset Map
resetmap
Social Stream
No value field required
Desktop App Sources iconDesktop App Sources
getSources
Desktop app
No value field required
Desktop App Source iconDesktop App Source
getSource
Desktop app
Source ID
Add Source iconAdd Source
addSource
Desktop app
Source JSON
Update Source iconUpdate Source
updateSource
Desktop app
{"sourceId":"...","updates":{...}}
Remove Source iconRemove Source
removeSource
Desktop app
{"sourceId":"...","confirm":true}
Start Source iconStart Source
startSource
Desktop app
Source ID
Stop Source iconStop Source
stopSource
Desktop app
Source ID
Restart Source iconRestart Source
restartSource
Desktop app
Source ID
Start All Sources iconStart All Sources
startAllSources
Desktop app
Filter JSON
{}
Stop All Sources iconStop All Sources
stopAllSources
Desktop app
Filter JSON
{"confirm":true}
Restart All Sources iconRestart All Sources
restartAllSources
Desktop app
Filter JSON
{"confirm":true}
Set Source Mute iconSet Source Mute
setSourceMute
Desktop app
{"sourceId":"...","isMuted":true}
Toggle Source Mute iconToggle Source Mute
toggleSourceMute
Desktop app
Source ID
Set Source Visibility iconSet Source Visibility
setSourceVisibility
Desktop app
{"sourceId":"...","isVisible":false}
Toggle Source Visibility iconToggle Source Visibility
toggleSourceVisibility
Desktop app
Source ID
Set Connection Mode iconSet Connection Mode
setSourceConnectionMode
Desktop app
{"sourceId":"...","mode":"websocket"}
Desktop App Settings iconDesktop App Settings
getSettings
Desktop app
No value field required
Update Desktop App Settings iconUpdate Desktop App Settings
updateSettings
Desktop app
Settings JSON

When a command does nothing

  1. Check Setup says Online and the correct session is configured.
  2. Check the required destination is running: dock for queues/pins, Credits page for credits, Flow Actions for media/OBS, writable source for Send Chat, enabled saved products for commerce.
  3. For workflows, save and enable the flow, confirm the trigger name, and refresh the picker. A flow without a named API trigger is intentionally not callable.
  4. Read the selected action's Help and diagnostics. After a timeout, check the destination before pressing again; a lost acknowledgement does not prove failure.
  5. If a preset is unavailable, update the Social Stream runtime as well as the plugin. Adding a key alone does not enable a platform integration.

HTTP fallback is optional in WebSocket mode. It can help when the socket connects without relaying responses. Do not change default channels unless your receiver uses the same custom routing.

Report a problem with the action, expected result, observed result and sanitized diagnostics. Do not share session IDs, passwords or private source URLs.