Print Webhook
The Printer Webhook provides developers with a JSON data payload to a customizable URL whenever a Kidddo print action is performed (checking-in, test print, reprint).
What the webhook can be used for:
Supporting existing hardware such as unsupported printers and label sizes.
Run printers on unsupported platforms and operating systems such as Raspberry Pi, Arduino, etc.
Build an IFTTT bridge to throw a 5-second lightshow and audio dance party every time someone checks-in.
Make a TV/monitor burst into welcome fireworks with the child's photo and name
Examples
Test print example JSON Payload:
{ "job_type": "test", // Test Print "printer": "DYMO1", // Printer Name to print to "timestamp": "2022-08-29 23:28:26" }
{ "job_type": "test", // Test Print "printer": "DYMO1", // Printer Name to print to "timestamp": "2022-08-29 23:28:26" }
{ "job_type": "test", // Test Print "printer": "DYMO1", // Printer Name to print to "timestamp": "2022-08-29 23:28:26" }
{ "job_type": "test", // Test Print "printer": "DYMO1", // Printer Name to print to "timestamp": "2022-08-29 23:28:26" }
Check-in print example JSON Payload:
{ "job_type": "checkin", // Check-In Print "printer": "DYMO1", // Printer Name to print to "household": { // Household being checked-in "name": "Appleseed", "id": "72363" }, "children": [ // Array of all children being checked-in { "id": "210667", "first_name": "Bobby", "last_name": "Appleseed", "birthdate": "2020-10-12", "gender": "Male", "allergies_notes": "Gluten", // Displays only if child has notes "grade": { // Displays only if child is assigned a grade "name": "P1", "description": "Walkers", "label_quantity": 1 }, "room": { // Displays only if child is assigned a room "name": "Tinker Town", "description": "Grades P1 + P2", "label_quantity": 2 }, "photo": "https://kidddo.com/img/icon-play.jpg" // Displays only if child has a photo }, { "id": "210666", "first_name": "Jill", "last_name": "Appleseed", "birthdate": "2018-12-14", "gender": "Female", "room": { // Displays only if child is assigned a room "name": "Foundation Forrest", "description": "Pre-K", "label_quantity": 1 } } ], "code": "777", // Check-in code (unique for each check-in session) "timestamp": "2022-08-29 23:28:26" }
{ "job_type": "checkin", // Check-In Print "printer": "DYMO1", // Printer Name to print to "household": { // Household being checked-in "name": "Appleseed", "id": "72363" }, "children": [ // Array of all children being checked-in { "id": "210667", "first_name": "Bobby", "last_name": "Appleseed", "birthdate": "2020-10-12", "gender": "Male", "allergies_notes": "Gluten", // Displays only if child has notes "grade": { // Displays only if child is assigned a grade "name": "P1", "description": "Walkers", "label_quantity": 1 }, "room": { // Displays only if child is assigned a room "name": "Tinker Town", "description": "Grades P1 + P2", "label_quantity": 2 }, "photo": "https://kidddo.com/img/icon-play.jpg" // Displays only if child has a photo }, { "id": "210666", "first_name": "Jill", "last_name": "Appleseed", "birthdate": "2018-12-14", "gender": "Female", "room": { // Displays only if child is assigned a room "name": "Foundation Forrest", "description": "Pre-K", "label_quantity": 1 } } ], "code": "777", // Check-in code (unique for each check-in session) "timestamp": "2022-08-29 23:28:26" }
{ "job_type": "checkin", // Check-In Print "printer": "DYMO1", // Printer Name to print to "household": { // Household being checked-in "name": "Appleseed", "id": "72363" }, "children": [ // Array of all children being checked-in { "id": "210667", "first_name": "Bobby", "last_name": "Appleseed", "birthdate": "2020-10-12", "gender": "Male", "allergies_notes": "Gluten", // Displays only if child has notes "grade": { // Displays only if child is assigned a grade "name": "P1", "description": "Walkers", "label_quantity": 1 }, "room": { // Displays only if child is assigned a room "name": "Tinker Town", "description": "Grades P1 + P2", "label_quantity": 2 }, "photo": "https://kidddo.com/img/icon-play.jpg" // Displays only if child has a photo }, { "id": "210666", "first_name": "Jill", "last_name": "Appleseed", "birthdate": "2018-12-14", "gender": "Female", "room": { // Displays only if child is assigned a room "name": "Foundation Forrest", "description": "Pre-K", "label_quantity": 1 } } ], "code": "777", // Check-in code (unique for each check-in session) "timestamp": "2022-08-29 23:28:26" }
{ "job_type": "checkin", // Check-In Print "printer": "DYMO1", // Printer Name to print to "household": { // Household being checked-in "name": "Appleseed", "id": "72363" }, "children": [ // Array of all children being checked-in { "id": "210667", "first_name": "Bobby", "last_name": "Appleseed", "birthdate": "2020-10-12", "gender": "Male", "allergies_notes": "Gluten", // Displays only if child has notes "grade": { // Displays only if child is assigned a grade "name": "P1", "description": "Walkers", "label_quantity": 1 }, "room": { // Displays only if child is assigned a room "name": "Tinker Town", "description": "Grades P1 + P2", "label_quantity": 2 }, "photo": "https://kidddo.com/img/icon-play.jpg" // Displays only if child has a photo }, { "id": "210666", "first_name": "Jill", "last_name": "Appleseed", "birthdate": "2018-12-14", "gender": "Female", "room": { // Displays only if child is assigned a room "name": "Foundation Forrest", "description": "Pre-K", "label_quantity": 1 } } ], "code": "777", // Check-in code (unique for each check-in session) "timestamp": "2022-08-29 23:28:26" }
Getting Started
From your Settings - make sure "Use Label Printers" is enabled. Then click the Printer Name to bring up the Printer Dialog:

Select the "Webhook" option, enter/paste your webhook URL, and optionally enter a Remote Printer Name for this device to print to.
Example Server
A basic Node.js Express app to test your POST with endpoint "/webhook":
const port = 3000; const express = require('express'); const app = express(); app.use(express.json({ extended: true })); app.post('/webhook', function (req, res) { console.log(req.body); res.send(req.body); }); app.listen(port, function (req, res) { console.log('Server listening on port ' + port); });
const port = 3000; const express = require('express'); const app = express(); app.use(express.json({ extended: true })); app.post('/webhook', function (req, res) { console.log(req.body); res.send(req.body); }); app.listen(port, function (req, res) { console.log('Server listening on port ' + port); });
const port = 3000; const express = require('express'); const app = express(); app.use(express.json({ extended: true })); app.post('/webhook', function (req, res) { console.log(req.body); res.send(req.body); }); app.listen(port, function (req, res) { console.log('Server listening on port ' + port); });
const port = 3000; const express = require('express'); const app = express(); app.use(express.json({ extended: true })); app.post('/webhook', function (req, res) { console.log(req.body); res.send(req.body); }); app.listen(port, function (req, res) { console.log('Server listening on port ' + port); });