-
Notifications
You must be signed in to change notification settings - Fork 32
Webhooks
Save In can send a small JSON notification to an HTTPS endpoint after the browser accepts a download started by a direct Save In command. Webhooks are off by default and the endpoint is chosen entirely by the user; Save In has no developer-operated webhook service.
- Add saved resource URLs to an automation workflow, database, spreadsheet, or personal archive.
- Trigger server-side processing such as metadata extraction, thumbnailing, or queuing another downloader.
- Record saves in a self-hosted service or NAS workflow.
- Forward save events through an automation service to chat or notification tools.
A webhook reports that a download started, not that it completed. It does not include the local destination path or allow the endpoint to alter Save In's download result.
- Open Save In → Options → Advanced → External integrations → Webhooks.
- Enter the direct HTTPS endpoint supplied by your service.
- Select any additional page data that the workflow needs.
- Expand Payload preview to inspect the resulting save payload.
- Select Send test. The test contains no browsing data.
- Turn on Send a webhook when a Save In download starts.
The endpoint must use HTTPS and cannot contain embedded username/password credentials or a URL fragment. A service token can be supplied in the query string when required. Treat endpoint URLs containing tokens as secrets.
For an automation tool such as n8n, create a Webhook trigger that accepts a
JSON POST, activate the workflow, and paste its HTTPS production URL into
Save In. Self-hosted receivers need an HTTPS reverse proxy or another TLS
endpoint in front of them.
Every save request contains:
{
"version": 1,
"event": "save",
"timestamp": "2026-07-14T10:00:00.000Z",
"url": "https://cdn.example.com/image.jpg"
}url is the resource selected by the user. The following fields can be enabled
independently and are omitted when disabled or unavailable:
| Field | Meaning |
|---|---|
pageUrl |
URL of the containing page |
pageTitle |
Title of the containing page |
selectionText |
Text selected for the save operation |
With all optional fields enabled, a request can look like:
{
"version": 1,
"event": "save",
"timestamp": "2026-07-14T10:00:00.000Z",
"url": "https://cdn.example.com/image.jpg",
"pageUrl": "https://example.com/gallery",
"pageTitle": "Example gallery",
"selectionText": "Example selected text"
}The Send test action uses the same transport but deliberately sends no page or resource data:
{
"version": 1,
"event": "test",
"timestamp": "2026-07-14T10:00:00.000Z"
}Receivers should use version and event when parsing requests and ignore
unknown fields so future compatible additions do not break a workflow.
- Save In sends one
POSTwithContent-Type: application/jsonafter the browser accepts the download. - Cookies, browser-managed credentials, referrers, local paths, diagnostics, and persistent identifiers are not included.
- Redirects are rejected, response bodies are never read, and requests time out after eight seconds.
- Failed requests are not retried and never change the download result.
- Private-window activity never triggers a webhook.
- Automatic Page Sources saves, ordinary browser-owned downloads, and requests from the external Download API do not trigger webhooks.
Firefox versions that expose built-in data-transmission permissions request the categories needed by the selected fields when the user turns webhooks on. Save In checks those permissions again before delivery and skips the request if they have been revoked.
- Use Send test to distinguish endpoint configuration problems from save eligibility.
- A non-2xx response is reported as an endpoint rejection. The response body is intentionally ignored.
- Network failures, TLS errors, redirects, and timeouts are reported as delivery failures.
- Save In's diagnostic log does not record the endpoint URL or its query string.
- If Firefox reports that data permission is off, turn webhooks off and on to request the currently selected data categories again.
See also Integrations and Options and features.