# 3D Printing Webhooks: Real-Time Print, Printer & Queue Events

**Minimum Plan:** Print Farm

Push real-time events from your 3D printer fleet to any URL. SimplyPrint webhooks deliver print job, printer, queue, filament, maintenance, balance and quota events as raw JSON, or as native Discord, Slack and Microsoft Teams messages - with optional HMAC signing.

**Categories:** smart, organization

*Real-time push events for your 3D printer fleet*

##  Webhooks: get notified the instant something happens

When a print starts, a job fails, a queue item lands, a spare part runs low or a filament gets reassigned, SimplyPrint can POST the event to your URL within seconds. Pipe events into Discord, Slack or Microsoft Teams without a single line of code - or build your own automation against the raw JSON payload.

## Pull when you want. Push when it matters.

The [SimplyPrint API](/features/api) is great when your system asks the questions. Webhooks are how SimplyPrint tells *you* the moment something changes - without polling, without scheduled jobs, without missed events.

## Push events instead of polling

A webhook is a URL you give to SimplyPrint. Every time something happens in your account that you've subscribed to - a print starts, a job fails, a queue item is approved, a spare part hits low stock - SimplyPrint sends an HTTP POST to that URL with the event payload. No polling loops, no rate-limit juggling, no "did we miss that one?" - just an event stream you can plug into anything that speaks HTTP.

Create as many webhooks as you need. Pick exactly which events each one cares about. Disable one without deleting it. Inspect every delivery in the history view. It's the same primitive the rest of the web runs on - now wired into your 3D printer fleet.

## Every event your fleet generates, grouped into clean categories

Subscribe each webhook to exactly the events that matter to it. A team-wide Discord channel might only care about **print finished** and **print failed**. A Zapier automation might subscribe to **queue item approved**. A maintenance dashboard might want every **maintenance.*** event. You decide per webhook.

- **Print job events** - started, paused, resumed, cancelled, done, failed, bed cleared, objects skipped

- **Printer events** - AutoPrint state, nozzle size, material, custom tag assigned / detached, out-of-order state, AI state, AI failure detected, AI failure false-positive, AutoPrint max cycles

- **Organization events** - account AutoPrint state, new user signup, user pending approval

- **Print queue** - item added, deleted, moved, revived, pending approval, approved, denied, queue emptied

- **Filament** - created, updated, deleted, assigned to printer, unassigned

- **Maintenance** - job created / started / completed / cancelled / overdue / reopened / updated / deleted, problem reported / resolved, spare part created / updated / deleted, stock adjusted, low stock, task completed / skipped, schedule created / updated / deleted

- **Balance** - charged, refunded, topped up, adjusted

- **Quota** - new request, request resolved, adjusted, reset

That's over 60 distinct events out of the box, with new ones added whenever a new feature ships.

## A payload shape that's easy to write code against

Every regular-format webhook delivery looks the same on the outside: an envelope with the event name, an ISO timestamp, and the originating webhook_id, wrapping a data object whose shape is specific to the event.**
The data object for a job.done** event includes the print job, printer, file, user and elapsed time. A **filament.assigned** event includes the filament, the printer and which tool it landed on. A **maintenance.job_overdue** event includes the job, the printer, the responsible user and the original due date. Same envelope, event-specific data - so a single switch statement in your code handles the whole stream.

## Test, sample and inspect - before you ship anything to production

Webhooks should be boring. SimplyPrint gives you three tools so they actually are - inspect what you'll receive, send a test fire, and look back at every delivery that's already happened.

### Send a test event

Fire a real-shape payload on demand from any subscription.

### Sample payloads

Browse exact payload shapes before you write any code.

### Delivery history

URL, HTTP status, response body and timestamp for every delivery.

## What your webhooks look like once delivered

The Discord, Slack and Teams formats render as native embed cards in those apps - rich title, fielded payload, optional printer thumbnail. Here are three real deliveries from a print farm running SimplyPrint, captured directly from a Discord channel. Configure the format once; SimplyPrint takes care of the embed.

### Maintenance overdue

A scheduled maintenance job missed its due date - job name, printer, priority, schedule, group, all in one card.

### Maintenance job created

A new maintenance job is scheduled - printer, group and priority surface immediately in your team channel.

### Spare parts inventory

Inventory mutations - parts deleted, stock adjusted, restocked - delivered as separate events so a workflow tool can react to each.

## Optional HMAC signing - prove the request really came from SimplyPrint

Set a per-webhook secret and SimplyPrint signs every delivery so your receiver can verify the payload hasn't been tampered with and didn't come from some random IP that guessed your URL. Skip the secret on internal-network webhooks where you don't need it. Rotate it whenever a key leaks - past deliveries are not invalidated, future ones use the new key.**
Each webhook is also independently enabled / disabled** - flip the toggle to pause a noisy integration without losing its event subscription or its history.

## The push half of a complete developer story

Webhooks pair naturally with the rest of the SimplyPrint developer surface:

- The [SimplyPrint API](/features/api) lets your code *pull* any state on demand - printers, queue, files, filament, jobs.

- **Webhooks** let SimplyPrint *push* the moment something changes - so you don't have to poll for it.

- The [SimplyPrint MCP server](/features/mcp) lets AI assistants (Claude, ChatGPT) read and act on the same fleet through a vetted tool registry.

Use any one of them. Use all three. They share the same auth, the same permission model, and the same shape of data - so a printer in a webhook payload is the same printer object your API call returns.

## Frequently asked questions

### How do I send events to Discord, Slack or Microsoft Teams?

Just paste the channel's webhook URL into SimplyPrint - that's it. We detect the destination from the URL (any discord.com/api/webhooks, hooks.slack.com/services or Teams workflow URL) and format the payload natively for that platform. No bot install, no app, no middleware.

### What events can I subscribe to?

Over 60 events across eight categories: print jobs, printer state, organization, print queue, filament, maintenance, balance and quota. Each webhook subscribes to its own subset, so a Discord channel can get only **job.done** and **job.failed** while a Zapier integration listens for **queue.item_approved**. New events get added with every major feature release.

### How do I verify a request actually came from SimplyPrint?

Set a secret on the webhook. SimplyPrint will sign every delivery with that secret so your receiver can verify the payload hasn't been tampered with. The secret is per-webhook, so you can rotate one integration's key without touching the others.

### Can I see what's been delivered?

Yes - every delivery is logged with the destination URL, the request body, the HTTP response code and the timestamp. Open any webhook to see its full delivery history - so a misconfigured endpoint or a transient outage is never a guessing game.

### Can I test a webhook before going live?

Yes - every event subscription has a "send test" button. SimplyPrint builds a real-shape payload (using a real entity from your account if one exists, otherwise a synthetic sample) and fires it to the webhook on demand. You can also browse sample payloads for every event so your downstream code is ready before the first real event arrives.

### How is this different from the SimplyPrint API?

The [API](/features/api) is pull: your code asks SimplyPrint for state on demand. Webhooks are push: SimplyPrint tells your code the moment something changes - no polling, no rate-limit juggling, no missed events. Most real integrations use both - the API to query, webhooks to react.

### What about retries if my server is down?

Deliveries go out from a dedicated forwarder and the response code, request body and timestamp are logged for every attempt - so an outage is visible in your webhook history. Build your receiver to be idempotent (each delivery carries its own log ID) and use the API to reconcile any state you may have missed during downtime.

### Does SimplyPrint retry failed deliveries?

Yes - failed deliveries (non-2xx response or timeout) are retried with exponential backoff over the next 24 hours, then marked as permanently failed and surfaced in the delivery history.

### How long are delivery attempts stored?

Delivery attempts (with payload + response code) are stored for 30 days in the webhook delivery history, accessible per-webhook in the panel.

### Which plans include webhooks?

Webhooks are included on the **Print Farm**, **School** (Education) and **Enterprise** plans. There are no per-webhook fees, no per-delivery fees and no event caps.

## Step-by-step setup guide

For a walkthrough of creating your first webhook - including specifics for Discord, Slack and Microsoft Teams URLs - see the full [webhooks helpdesk article](https://help.simplyprint.io/en/article/all-about-the-webhooks-feature-1g12e5c/).


---

**Learn more:** [Help Article](https://help.simplyprint.io/en/article/all-about-the-webhooks-feature-1g12e5c/)
