Physical buttons: arcade, pedal, presenter remote
Plug a button in over USB and it works, with nothing to set up. On the welcome screen a press starts the session; on the live view it takes the photo or stops the video. Elsewhere it does nothing, because those screens ask for a choice a single button cannot make.
- Keyboard encoders, USB pedals and presenter remotes: Space, Enter, Page Up/Down, arrow keys, F13 to F15 or play/pause.
- “Zero delay” arcade encoders, seen by Windows as a game controller: any button.
- Presses less than 400 ms apart count once, so a bouncing contact does not take two photos.
Triggers: a webhook or a program on every event
For everything else, there are triggers. Each one is set up in the booth admin, listens to the events you pick, and calls a URL or starts a program on the booth PC.
- WebhookAn HTTP POST with a JSON body, signed with HMAC-SHA256 using your secret. Headers: X-Froozbooth-Event, X-Froozbooth-Timestamp, X-Froozbooth-Signature.
- ProgramAn executable on the booth PC, given as an absolute path and allowed in the hardware service allowlist. Named arguments: --event, --session, --booth-event, --ts, --device, then the event data.
The 17 events you can listen to
- Session: session.start, countdown.start, shot.taken, shots.done, compose.done, session.end, session.canceled.
- Output: print.sent, print.done, share.email.sent, share.qr.shown.
- Errors: error.capture, error.compose, error.print, error.camera, error.disk, error.license.
Each message carries a format version (v), the event name, an ISO 8601 timestamp, the session id, the event id, the machine id and a data object specific to the event.
Built for a live night
- A trigger never delays the session: after 2 seconds without an answer, the booth moves on.
- Three retries, after 0.5, 2 and 5 seconds. Any later, a flash would land after the pose.
- An event older than 60 seconds is logged, not replayed: after a reboot, no flash in the middle of dinner.
- A Test button sends a sample event and shows the answer, an hour before the doors open.
- The last 200 sends are logged with status, code and latency, and export to CSV.
Ready-made recipes
- Studio flash at the start of the countdown, through a DMX or Art-Net gateway.
- A pulse or a sound on each shot.
- Back to ambient light at the end of the session, through a Philips Hue bridge.
Cameras, printers and PCs: the hardware Froozbooth drives directly is on the hardware page. DSLR photo booth software for Canon and Nikon: cameras and printers that work
Frequently asked questions
Does an arcade button work with Froozbooth?
Yes. A keyboard encoder or a “zero delay” encoder plugged in over USB works without setup: a press starts the session on the welcome screen and takes the photo on the live view.
Can Froozbooth control DMX lights or a fog machine?
Through a trigger. Froozbooth sends the event to a webhook or a program, and your DMX or Art-Net gateway, Hue bridge or script drives the device.
How do I check that a webhook really comes from the booth?
Compute the HMAC-SHA256 of the raw request body with your secret and compare it with the X-Froozbooth-Signature header. The ts field, inside the signed body, lets you refuse old requests.
Can a slow trigger keep guests waiting?
No. A trigger gets 2 seconds; past that, the booth carries on and retries in the background.
Can I use a foot pedal or a presenter remote to take the photo?
Yes. Froozbooth recognizes USB pedals and presenter remotes with no setup, as long as they send Space, Enter, Page Up/Down, an arrow key, F13 to F15 or play/pause. A press starts the session on the welcome screen and takes the photo or stops the video on the live view. On other screens it does nothing, because they ask for a choice a single button cannot make.
What happens if a guest presses the photo booth button twice?
Froozbooth counts presses less than 400 ms apart as one, so a bouncing contact or a quick double press does not take two photos. A press on a screen that asks for a choice, such as picking a mode, does nothing.
Which photo booth events can trigger a webhook?
Froozbooth exposes 17 events: session steps (session.start, countdown.start, shot.taken, shots.done, compose.done, session.end, session.canceled), outputs (print.sent, print.done, share.email.sent, share.qr.shown) and errors (error.capture, error.compose, error.print, error.camera, error.disk, error.license). Each trigger listens only to the events you pick. Every message carries a format version, the event name, an ISO 8601 timestamp, the session, event and machine ids, and data specific to the event.
Can I run a script on the booth PC when a photo is taken?
Yes, with a program trigger. Froozbooth starts an executable on the booth PC on the events you choose, such as shot.taken; it must be given as an absolute path and allowed in the hardware service allowlist. It receives named arguments (--event, --session, --booth-event, --ts, --device), followed by the event data.
How do I test a photo booth trigger before guests arrive?
Use the Test button in the booth admin: Froozbooth sends a sample event and shows the answer. The last 200 sends are logged with status, code and latency, and export to CSV. An event older than 60 seconds is logged rather than replayed, so a reboot does not set off a flash in the middle of dinner.
Can the photo booth alert me when the printer or camera fails?
Yes, with a trigger on the error events: error.print, error.camera, error.capture, error.compose, error.disk and error.license. Point it at a webhook on your own service to get the alert wherever you want. The dashboard’s Machines page also shows each booth’s status live, and you can add it to your phone’s home screen.