API Webhooks Automation Plugin SDK
pixx.io developer docs

Webhooks in pixx.io

React to events in your Mediaspace in real time — with no polling at all. This guide shows you how to set up webhooks, secure them, and connect them into complete workflows with scripts, automation platforms and the pixx.io API.

Incoming webhook deliveries● Sample data
01 Fundamentals

What is a webhook?

A webhook is an HTTP callback: instead of your system constantly asking pixx.io "Has anything changed?" (polling), pixx.io reaches out to you on its own as soon as a defined event occurs (push).

PollingWebhook
PrincipleRegular request to the APIpixx.io actively sends an HTTP request
TimelinessDepends on the polling intervalNear real time
ResourcesMany unnecessary requestsOnly on an actual change
ImplementationRequires a scheduled API clientRequires a publicly reachable endpoint

To put it visually: polling is like checking your front door every five minutes to see whether the mail has arrived. A webhook is the doorbell — it lets you know the moment it's there.

02 Flow

How it works in pixx.io

Technically, anything can sit behind the target URL — pixx.io only takes care of delivering the event; what happens next is entirely up to you.

① Action in pixx.io — e.g. file upload, metadata change, approval
↓
② An event is fired, e.g. fileCreated
↓
③ pixx.io sends an HTTP POST request to the configured webhook URL
↓
④ The receiver processes the payload
→ your own PHP / Node / Python script
→ automation platform (Make, Zapier, n8n …)
→ your own microservice / backend
↓
⑤ Optional: a call back to the pixx.io API — write metadata, set keywords, move a file, create a comment
03 Setup

Setting up a webhook in pixx.io

  1. Open the Settings (gear icon, bottom left) → Administration → Webhooks.
  2. Click New webhook.
  3. Fill in the "Edit webhook" form (see the table below).
  4. In the Webhook Events section, select the events you want. Events are grouped into categories (e.g. file, collection, comment). Each category can be expanded; a filled minus symbol on the category checkbox indicates a partial selection.
  5. Save — the webhook is active immediately.
FieldDescription
NameA descriptive name, e.g. "AI processing"
URL *Publicly reachable HTTPS endpoint that pixx.io sends the request to
SecretSecret key for signature verification (strongly recommended, see chapter 05)
DescriptionInternal documentation of what the webhook is for
💡
Practical tip: Subscribe as granularly as possible. If you book "all file events", you'll get a separate request on every click in the metadata editor — which puts unnecessary load on your endpoint.
04 Reference

Event categories at a glance

Events are grouped by object type. In total, 781 events across 55 categories are available (as of the current export). The largest categories:

CategoryEventsApplies to
portal100Press portals / external portals
permissionGroup61Permission groups
space55Mediaspace configuration
file55Files — see detail table below
settings51Branding, SMTP, watermarks and more
generalSettings40General system settings
externalShare28External shares
uploadLink26Upload links
spaceNavigation24Navigation (header/footer)
user21User accounts
The complete, filterable overview of all 55 categories with all 781 events can be found in the appendix.

The file category in detail

A clear naming scheme covers both the lifecycle of a file and every individual metadata change at a granular level.

EventDescription
fileCreatedA new file was uploaded
fileDeletedA file was deleted
fileDeletedDuplicateA file was deleted as a duplicate
fileDownloadedA file was downloaded

fileModified* events (selection) — there's a dedicated, granular event for practically every field:

EventDescription
fileModifiedFileNameFile name changed
fileModifiedDescriptionDescription changed
fileModifiedCreatorAuthor/photographer changed
fileModifiedCreateDateCreation date changed
fileModifiedUserIDResponsible user changed
fileModifiedRatingRating (stars) changed
fileModifiedRotationFile rotated
fileModifiedSubjectSubject/topic changed
fileModifiedFileStateIDFile status changed (e.g. in the approval workflow)
fileModifiedDirectoryIDPathFile moved to another folder
fileModifiedKeywordsAdded / …DeletedKeywords added / removed
fileModifiedKeywordsRecognitionAdded / …DeletedAI-recognized keywords added / removed
fileModifiedRecognizedTextText recognition (OCR) updated
fileModifiedFacesFace recognition updated
fileModifiedLocationLocation metadata changed
fileModifiedLanguageCodesAdded / …RemovedLanguage code added / removed
fileModifiedCollectionIDsAdded / …RemovedFile added to / removed from a collection
fileModifiedExternalShareIDsAdded / …RemovedExternal share added / removed
fileModifiedLicenseFilesAdded / …DeletedLicense file added / deleted
fileModifiedModelFilesAdded / …DeletedModel release file added / deleted
fileModifiedPropertyFilesAdded / …DeletedProperty release file added / deleted
fileModifiedMarkedUserIDsAdded / …RemovedMarker set for / removed from a user
fileModifiedIsCheckedOutCheckout status changed
fileModifiedIsDownloadLockedDownload lock changed
fileModifiedMainVersionFileIDMain version of a file changed
fileModifiedVariantStackAssignment to a variant stack changed
fileModifiedUploadDate / …UploadLinkUpload date or the upload link used changed
fileModifiedMetadataField…Change to a custom metadata field: date, text, truncated text, single/multi selection, language, location, orientation, focal point
fileReplacedFile replaced with a new version
fileReplacedPreviewFile / fileRestoredPreviewFilePreview image replaced / restored
Complete, verified list of all 55 file events — a detailed breakdown of the fileModifiedMetadataField… variants as well as all 781 events in the appendix.
05 Security

Security: the secret & signature verification

Without signature verification, in principle anyone who knows the URL can send forged requests to your endpoint. With a secret, you make sure that an incoming request actually comes from pixx.io.

The common, recommended approach (as used by GitHub, Stripe & co.):

  1. pixx.io computes an HMAC-SHA256 signature over the request body using your secret.
  2. The signature is sent along as an additional header.
  3. Your endpoint recomputes the signature over the raw body it received and compares it in constant time (hash_equals() in PHP, crypto.timingSafeEqual() in Node.js).
  4. Only on a match is the payload processed as trustworthy.
⚠️
Note before finalizing: The exact header name and the precise signature format should be verified against a real webhook delivery (e.g. via webhook.site) before this section is published in its final form. The examples here use X-Pixxio-Signature as a placeholder.
06 Reference

Payload structure (example)

Every webhook call delivers a JSON payload with information about the event:

json
{
  "event": "fileModifiedKeywordsAdded",
  "timestamp": "2026-08-19T10:42:00Z",
  "webhookId": "wh_12345",
  "fileId": 987654,
  "changes": {
    "keywordsAdded": ["Summer", "Campaign2026"]
  },
  "triggeredBy": {
    "userId": 42,
    "userName": "c.trautbeck"
  }
}
⚠️
Note before finalizing: Please verify field names and the exact structure against a real delivery and adjust this example accordingly before publishing.
07 Recommendations

Best practices for the receiver

  • Use HTTPS — plain-text HTTP endpoints are a security risk.
  • Verify the signature first, before the payload is processed at all.
  • Respond quickly: acknowledge receipt promptly with 2xx, offload processing asynchronously (queue, background job).
  • Process idempotently: events can, in theory, be delivered more than once — unique IDs help with duplicate detection.
  • Subscribe granularly: prefer targeted fileModified* events over the entire file category.
  • Logging & monitoring: log incoming events and error rates.
  • Plan for bulk operations: a bulk upload can trigger a large number of events in a short time — use a queue rather than synchronous processing.
08 In practice

Use cases

AI-assisted post-processing

fileCreated → an external AI service generates alt text/keywords → written back via the API into custom metadata or keywords.

Notifications

New file, new comment or new external share → message in Slack/Microsoft Teams.

PIM/shop/CMS sync

fileModifiedFileName / …MetadataField… → update the asset reference in Storyblok, Shopware and the like.

Compliance & rights

fileModifiedLicenseFilesAdded / …Deleted → check expiry dates, automatic reminder before a license ends.

Archiving & backup

fileDeleted → automatic copy to external storage before the trash is emptied.

Approval processes

externalShare* → kick off an approval workflow, e.g. four-eyes principle before publishing.

09 Integration

Combining with automation platforms

For many use cases you don't need a server of your own at all — automation platforms handle receiving, logic and the callback:

  • Make (formerly Integromat): pixx.io offers a dedicated Make app with ready-made modules. Alternatively, you can also enter Make's generic "Custom Webhook" trigger directly as the webhook URL in pixx.io.
  • Zapier / n8n: both offer a generic webhook trigger with a unique URL. You enter this URL verbatim into the URL field of the pixx.io webhook — after that you can build the logic you want with filters, routers and HTTP modules, including a callback to the pixx.io API.

The advantage: filtering by event type, data transformation and error handling can all be configured visually, without any code of your own.

10 Code example

Custom script receiver (PHP)

php
<?php
// webhook-receiver.php
$secret  = getenv('PIXXIO_WEBHOOK_SECRET');
$payload = file_get_contents('php://input');
$signatureHeader = $_SERVER['HTTP_X_PIXXIO_SIGNATURE'] ?? '';
$expectedSignature = hash_hmac('sha256', $payload, $secret);
if (!hash_equals($expectedSignature, $signatureHeader)) {
    http_response_code(401);
    exit('Invalid signature');
}
// Acknowledge the payload immediately, offload processing asynchronously
http_response_code(200);
$data = json_decode($payload, true);
switch ($data['event'] ?? '') {
    case 'fileCreated':
        // e.g. queue a job: kick off AI processing
        break;
    case 'fileModifiedKeywordsAdded':
        // e.g. update your own search index
        break;
}
11 Writing back

Closing the loop: writing back via the API

A webhook alone only delivers information — the real automation only emerges in combination with the pixx.io REST API. A typical flow, using automatic alt-text generation as an example:

  1. Trigger: fileCreated fires after an upload.
  2. Fetch context: the script loads further file information via the API if needed.
  3. Processing: an external AI service generates alt text or keywords.
  4. Write back: the script updates the file in pixx.io via the API — a custom metadata field, keywords or a comment.

For writing back, dedicated API endpoints are available depending on the object (files, collections, keywords, custom metadata, external shares and much more) — you'll find the complete, up-to-date reference including authentication in the API documentation.

12 Before rollout

Checklist before going live

  • Endpoint is publicly reachable over HTTPS
  • Secret is set, signature verification is implemented
  • Only the events actually needed are subscribed
  • Response is fast (2xx), processing runs asynchronously
  • Duplicates/retries are handled idempotently
  • Logging and monitoring are active
  • Tested with a single test event before rollout
14 Reference

Appendix: complete event list

All 781 events across 55 categories — searchable and filterable.

781 of 781 events
CategoryEventAction
Deine Browsersprache ist Deutsch, möchtest Du zu der deutschen Website wechseln?
Would you like to view this website in English?

Sorry!

Your web browser is out of date. Update your browser for more security, speed and the best experience on this site.

Get a modern browser