Integration
Webhooks
Verwalten Sie Webhooks für Echtzeit-Updates
Webhooks verbinden Output.Rocks mit externen Plattformen wie Powercloud, n8n, Binect, E-POSTBUSINESS oder kundeneigenen REST-Endpunkten. Sie werden genutzt, um Dokumente oder E-Mails für Folgeaktionen und Callbacks direkt zu übertragen, Statusänderungen zu empfangen oder Prozesse anzustoßen.
Die Übersicht der Datenkontexte zeigt, welche Platzhalter und Bedingungen in welcher Phase zur Verfügung stehen.
Einen Überblick dazu finden Sie auch im Use-Case E-Mail & Anhänge.
Webhook-Liste
Die Tabelle zeigt alle eingerichteten Webhooks inklusive Identifier, Typ und Mandantenkontext. Im Backend lassen sich über 30 vordefinierte Webhook-Typen auswählen, unter anderem SFTP-Uploads, Powercloud-spezifische Schnittstellen oder generische Custom-Endpoints.
ID, Identifier, Gruppen-Identifier, Aktiv ab, Aktiv, Typ
| ID | Identifier | Gruppen-Identifier | Aktiv ab | Aktiv | Typ |
|---|---|---|---|---|---|
| identifier_name | Null | Aktiv |
ID
Eindeutige Nummer zur internen Identifikation des Webhooks.
Identifier
Eindeutiger Name des Webhooks für Rendering und API-Aufrufe.
Eindeutiger Name für eine optionale Gruppierung von verwandten Webhookn. Elemente einer Gruppe werden gemeinsam verarbeitet und optionale Validatoren können dabei einzelne Elemente aktivieren oder ignorieren.
Aktiv ab
Startdatum eines Webhooks. Webhooks werden erst ab diesem Datum beim Rendern beachtet.
Aktiv
Schnellübersicht, ob das Webhook derzeit freigegeben ist. Deaktivierte Elemente behalten ihre Historie, werden aber nicht mehr automatisch verwendet.
Typ
Der Dateneintrag des Webhooks. Kann Text, Zahlen, Bedingungen oder andere Daten enthalten, die in Vorlagen verwendet werden.
Webhook-Zuordnung über POST Rendering Requests
Der hier hinterlegte identifier des Webhooks muss in Ihrem API-POST Request zum Rendern enthalten sein.
Dafür existiert dort der Key "webhook": "identifier". Ohne ihn wird bei der regulären Prozessausführung kein Webhook zugeordnet. Die einzelne Konfiguration lässt sich unabhängig davon über Webhook testen mit Beispieldaten prüfen.
Die Spalte Typ benennt die genaue Art des Webhooks, als Beispiele Dokument- und E-Mail-Webhooks (z.B. sftp-email, sharepoint-document, powercloud-ouauth2-document). Ältere Powercloud-Typen wie powercloud-document bleiben als Bestandskonfigurationen sichtbar. Darüber hinaus existiert das Feld Priorität (1 = höchster Rang), um parallele Integrationen geordnet ablaufen zu lassen.
Mandant, Standard für Umgebungs-Mandanten
| Umgebungs-Mandant | Standard für Umgebungs-Mandanten | Benutzerdefinierte ID | Farbe |
|---|---|---|---|
| (1880) Submarke 1 | NO | Null | |
| Null | YES | <<payload.value>> |
Zugeordneter Mandant des/der Webhook. Ermöglicht Mandanten-spezifische Konfiguration.
Kennzeichnet Webhook als Standard und vererbt (verfügbar) für alle Umgebungs-Mandanten.
Optionale benutzerdefinierte Kennung nach dem Rendering für externe Systeme. Wird als Referenzen des/der Webhook bei Callbacks übergeben und beherrscht Vorlagen-Syntax inkl. Zugriff auf Payload-Daten.
Visuelle Kennzeichnung für schnelle Identifikation des/der Webhook. Vor allem nützlich für Dashboard-Statistiken und Charts.
Nutzen Sie Mandanten-Zuweisungen, um z.B. Stadtwerke-spezifische Webhooks getrennt von allgemeinen Konzern-Integrationen zu verwalten.
Erstellt am, Aktualisiert am
| Validatoren | Pausiert | Aktiv | Erstellt am | Aktualisiert am |
|---|---|---|---|---|
| Null | NO | Ja | ||
| missing_street | YES | Nein |
Zugewiesene Validierungsregeln für das Webhook. Prüfen Ihre Bedingungen vor der Verarbeitung und aktivieren/deaktivieren das Rendering entsprechend.
Temporäre Deaktivierung des Webhooks. Pausierte Elemente werden nicht verarbeitet.
Aktivierungsstatus des Webhooks. Nur aktive Elemente werden beim Rendern berücksichtigt.
Erstellt am
Zeitstempel der Webhook-Erstellung.
Aktualisiert am
Zeitstempel der letzten Änderung. Zeigt wann Webhook-Konfiguration zuletzt bearbeitet wurde.
Die Webhook-Liste zeigt standardmäßig die neuesten Einträge zuerst (Erstellt am aufsteigend mit Sortierpfeil). Mit den Spaltenaktionen lässt sich dies jederzeit anpassen.
Ablaufübersicht
Die Schaltfläche Ablaufübersicht zeigt alle Treffer der aktuell gesetzten Such-, Gruppen-, Typ-, E-Mail- und Statusfilter – unabhängig von der Tabellenpaginierung. Die Übersicht gruppiert Webhooks nach Gruppen-Identifier beziehungsweise Identifier und trennt Rendering-Request-, Dokument- und E-Mail-Schritte sowie Pre-Rendering und anschließende Ausführung.
Innerhalb einer Phase entspricht die Reihenfolge der tatsächlichen Ausführung: zuerst nach Priorität (1 = zuerst), danach nach Webhook-ID. Die Knoten zeigen Typ, Status, Gruppenbedingung und bei E-Mail-Webhooks den Zustelltrigger. Ein Klick öffnet die bestehende Detailansicht. Die Ablaufübersicht ist schreibgeschützt; Änderungen erfolgen weiterhin über die Webhook-Liste.
Webhook erstellen
Die Schaltfläche Webhook erstellen öffnet geführte Einstiegskarten für die häufigsten Integrationen. SFTP, SharePoint und DropBox führen durch Upload-Ziel, Upload-Format und Details. Binect und E-POSTBUSINESS konfigurieren den physischen Druckversand. Powercloud öffnet einen eigenen Dialog, in dem zuerst der Anwendungsfall, danach bei Bedarf der Subtyp und anschließend Dokument oder E-Mail gewählt wird.
SFTP & Cloud Storage
SFTP Document/Email Upload, DropBox, SharePoint.
Druckversand
Binect und E-POSTBUSINESS für Dokumente oder PDF-Anhänge.
Powercloud (pc.retail)
Archive Upload, Custom API, User Interaction, Tariff Service, ZUGFeRD.
Custom & Automations
n8n, Custom Webhooks, Custom OAuth2, Prerender APIs.
Wählen Sie den passenden Einstieg, um vorkonfigurierte Felder, Header und Auth-Optionen automatisch zu erhalten.
Der Tab Configuration passt sich vollständig an den gewählten Webhook-Typ an. Häufig stehen Felder für URL, Credentials/Keys sowie eine JSON-Konfiguration bereit; zusätzliche Inputs (z.B. Upload-Optionen, OAuth2-Felder oder SFTP-spezifische Angaben) erscheinen automatisch.
SFTP, SharePoint und DropBox bieten im Dialog einen Test-Upload. Powercloud-OAuth2-, Binect- und E-POSTBUSINESS-Webhooks bieten stattdessen API-Authentifizierung testen; dabei wird nur die Anmeldung beim jeweiligen Dienst geprüft, ohne einen Webhook auszuführen oder Zugangsdaten dauerhaft zu speichern.
Powercloud-Erstellung
Der Powercloud-Dialog bildet die produktiv nutzbaren Powercloud-Typen ab:
| Auswahl | Dokument | |
|---|---|---|
| powercloud Archive Upload | powercloud-ouauth2-document | powercloud-ouauth2-email |
| powercloud Custom API | powercloud-custom-ouauth2-document | powercloud-custom-ouauth2-email |
| User Interaction: Invalid data | powercloud-invalid-user-interaction-oauth2-document | powercloud-invalid-user-interaction-oauth2-email |
| User Interaction: Blocked processes | powercloud-blocked-user-interaction-oauth2-document | powercloud-blocked-user-interaction-oauth2-email |
| User Interaction: Email bounce | nicht verfügbar | powercloud-bounced-user-interaction-oauth2-email |
| powercloud Tariff Service | prerender-powercloud-tariff-service-module-information-document | prerender-powercloud-tariff-service-module-information-email |
| ZUGFeRD Mapping | prerender-powercloud-zugferd-mapping-document | Derselbe Dokument-Typ für generierte PDF-Anhänge |
Für Powercloud Archive/Custom E-Mail-Webhooks wird zusätzlich das E-Mail-Format gewählt: vollständige .eml, nur HTML-Inhalt, HTML-Inhalt als PDF, nur Anhänge, HTML-Inhalt mit Anhängen oder HTML-Inhalt als PDF mit Anhängen. Ältere Powercloud-Typen wie powercloud-document, powercloud-email, powercloud-invalid-user-interaction-document, powercloud-invalid-user-interaction-email, powercloud-blocked-user-interaction-document, powercloud-blocked-user-interaction-email, powercloud-bounced-user-interaction-email und powercloud-powerdata-email können nicht neu über den geführten Dialog erstellt werden. In der Bearbeitung sind sie read-only; nur Aktiv kann geändert werden.
Powercloud Custom API kann synchrone Antworten wie die übrigen Custom-Webhooks speichern. Bei E-Mail-Formaten mit Anhängen wird die Hauptantwort unter or.<responseDataKey>.email und jede Anhang-Antwort zusätzlich unter or.<responseDataKey>.attachments.<templateIdentifier> abgelegt. Punkte, spitze Klammern und Leerzeichen im Template-Identifier werden dabei durch _ ersetzt; gleiche Identifier erhalten in Ausführungsreihenfolge die Suffixe _2, _3 usw. Für diesen Fan-out ist responseDataRoot: "renderData" nicht zulässig. Reine EML-, HTML- und PDF-Uploads verwenden dagegen die normale Antwort-Speicherung.
ZUGFeRD-Mapping für Dokumente und E-Mail-Anhänge
Die ZUGFeRD-Mapping-Webhooks für Powercloud (prerender-powercloud-zugferd-mapping-document) und kVASy (prerender-kvasy-zugferd-mapping-document) werden weiterhin als Dokument-Webhooks konfiguriert. Dieselbe Konfiguration greift automatisch auch für PDF-Dokumente, die aus einer Dokumentvorlage als Anhang eines E-Mail-Prozesses gerendert werden.
Der Webhook wird dabei dem Dokumentprozess des Anhangs zugeordnet und vor dessen Rendering ausgeführt. Er läuft nicht auf dem übergeordneten E-Mail-Prozess. Deshalb zeigt die Webhook-Liste für diese Typen in der Spalte Für E-Mails weiterhin Nein an.
Identifier, Gruppen-Identifier und Gruppenbedingungen werden wie bei normalen Dokumentprozessen ausgewertet. Bei einer Gruppenbedingung steht das jeweilige Attachment-Template als Prozesskontext zur Verfügung.
Die Ausnahme gilt ausschließlich für gerenderte PDF-Anhänge. Statisch hinterlegte E-Mail-Anhänge und andere Dateiformate werden nicht durch den ZUGFeRD-Webhook verändert.
Zusätzliche Rechnungshinweise über or.eInvoiceNotes
Neben den Hinweisen, die der Konvertierungsdienst selbst aus den Rechnungsdaten erzeugt, können Sie eigene Hinweistexte (EN 16931 BG-1, BT-22 Inhalt und BT-21 Betreffcode) mitgeben. Hinterlegen Sie sie unter dem reservierten Schlüssel or.eInvoiceNotes — entweder direkt im Payload oder über ein Custom Mapping.
{
"or": {
"eInvoiceNotes": [
{ "content": "Zahlbar ohne Abzug innerhalb von 14 Tagen." },
{ "content": "Steuerschuldnerschaft des Leistungsempfängers.", "subjectCode": "AAI" }
]
}
}Der Wert gilt für beide E-Rechnungs-Wege: die ZUGFeRD-Mapping-Webhooks und die eigenständige XRechnung-Erzeugung über XML-Prozesse. Die Hinweise werden hinter den Hinweisen des Konverters angehängt, in der angegebenen Reihenfolge.
| Feld | Pflicht | Regel |
|---|---|---|
content | Ja | Zeichenkette, nicht leer, höchstens 5.000 Zeichen (BT-22) |
subjectCode | Nein | Genau drei Großbuchstaben nach UNTDID 4451, z. B. AAI, REG, ZZZ (BT-21) |
or.eInvoiceNotes wird streng geprüft, bevor der Konvertierungsdienst überhaupt aufgerufen wird. Eine Liste mit einem unbekannten Feld, fehlendem oder leerem content, zu langem Text oder ungültigem subjectCode lässt den Webhook fehlschlagen — das Dokument wird dann gar nicht erzeugt. Andere Felder als content und subjectCode sind nicht zulässig. Fehlt der Schlüssel, werden keine zusätzlichen Hinweise angehängt; jeder vorhandene Wert muss eine Liste sein.
Druckdienstleister-Webhooks
Binect und E-POSTBUSINESS sind Webhook-Typen für physischen Briefversand. Sie erzeugen nach dem Rendering eigene Drucksendungen, die unter Druckversand überwacht werden.
| Auswahl | Dokument | Hinweis | |
|---|---|---|---|
| Binect | binect-document | binect-email | Versendet PDF-Dokumente oder PDF-Anhänge über die Binect-Sandbox bzw. Produktion. |
| E-POSTBUSINESS | epostbusiness-document | epostbusiness-email | Nutzt im Testmodus keinen physischen Versand; Produktion löst echten Briefversand aus. |
Beide Anbieter akzeptieren nur PDF-Dateien. Bei E-Mail-Webhooks werden alle PDF-Anhänge des E-Mail-Prozesses als einzelne Drucksendungen angelegt; andere Anhangsformate werden nicht als Brief versendet.
API-Webhook-Typen
Für kundeneigene APIs, Demo-Endpunkte und Automationsplattformen gibt es Webhook-Typen für zwei unterschiedliche Stellen im Rendering-Ablauf: Pre-Rendering und After-Rendering.
| Zeitpunkt | Typen | Verhalten | Typischer Demo-Use-Case |
|---|---|---|---|
| Pre-Rendering | prerender-api-documentprerender-api-email | Ruft vor Validierung und Rendering eine API per GET oder POST auf. Die JSON-Antwort wird unter or.<Data storage key> in die Rendering-Daten geschrieben. | Einfache APIs mit statischen Headers, z.B. interne JSON-Stammdaten. |
| Pre-Rendering mit OAuth2 | prerender-custom-oauth2-documentprerender-custom-oauth2-email | Holt zuerst ein OAuth2 Access Token per Client-Credentials-Flow und ruft danach die konfigurierte API auf. Die Antwort kann unter or.<responseDataKey> gespeichert, in renderData geschrieben oder gemerged werden. | Demo API als Pre-Render-Datenquelle, z.B. JSON/XML-Beispieldaten vor dem Rendering abrufen. |
| Pre-Rendering mit OAuth2 (Rendering Request) | prerender-custom-oauth2-request | Wie Pre-Rendering mit OAuth2, wird aber einmal pro Rendering Request ausgeführt – vor der Zuordnung auf Dokumente und E-Mails. Die abgerufenen Daten stehen damit auch für Zuordnungsbedingungen und E-Mail-Empfänger bereit. | Daten abrufen, die schon für die Auswahl der Templates/E-Mails gebraucht werden, z.B. Stammdaten zur Empfänger-Ermittlung. |
| After-Rendering mit OAuth2 | custom-oauth2-documentcustom-oauth2-email | Wird nach dem Rendering ausgeführt. Dokumente enthalten u.a. <<document.base64File>>; E-Mails enthalten EML-, HTML- und Anhangsdaten. | Gerenderte Dokumente an die Demo API oder ein Kundensystem zurückgeben. |
| After-Rendering ohne OAuth2 | custom-documentcustom-email | Sendet gerenderte Inhalte an eine frei konfigurierte HTTP-API. Authentifizierung und Payload werden direkt in der JSON-Konfiguration hinterlegt. | Einfache Callbacks, n8n-Workflows oder Endpunkte mit Basic/Bearer Header. |
Metadaten in Custom-Webhooks
Die Typen custom-document, custom-email, custom-oauth2-document und custom-oauth2-email sowie ihre Pre-Rendering-Varianten können in URL, Headern und options.json auf Metadaten des Rendering Requests zugreifen. <<metadata.quelle>> liest einen einzelnen Wert; <<metadata>> übergibt das ganze Metadatenobjekt. Der bisherige Pfad <<or.metadata.quelle>> bleibt für bestehende Konfigurationen verwendbar. Andere Werte unter or werden dabei nicht überschrieben. Die übrigen Renderdaten liegen bei Custom-Webhooks direkt an der Wurzel des Platzhalterkontexts: Für Renderdaten { "kunde": { "nummer": "C-42" } } gilt <<kunde.nummer>>.
{
"method": "POST",
"url": "https://example.org/callback",
"options": {
"headers": { "Content-Type": "application/json" },
"json": {
"quelle": "<<metadata.quelle>>",
"requestMetadata": "<<metadata>>",
"kundennummer": "<<kunde.nummer>>"
}
}
}Steht <<metadata>> allein als JSON-Wert, bleibt das Ergebnis ein JSON-Objekt. Welche Daten in anderen Phasen verfügbar sind, zeigt die Kontextübersicht.
Callbacks für ungültige und blockierte Prozesse
Je vier Custom- und Custom-OAuth2-Typen führen einen Callback aus, wenn ein Dokument- oder E-Mail-Prozess fehlschlägt:
| Ereignis | Ohne OAuth2: Dokument / E-Mail | Mit OAuth2: Dokument / E-Mail |
|---|---|---|
Datenvalidierung fehlgeschlagen (invalid) | custom-invalid-document / custom-invalid-email | custom-oauth2-invalid-document / custom-oauth2-invalid-email |
Technischer oder Workflow-Fehler (blocked) | custom-blocked-document / custom-blocked-email | custom-oauth2-blocked-document / custom-oauth2-blocked-email |
Die Typwahl bestimmt den Auslöser. Die HTTP-Konfiguration folgt dem jeweiligen Custom- beziehungsweise Custom-OAuth2-Webhook mit method, url und options; bei OAuth2 wird wie üblich zuerst ein Access Token angefordert. Ein Powercloud-spezifischer contract- oder order-Wert ist dafür nicht erforderlich. In URL, Headern und JSON-Payload steht zusätzlich error zur Verfügung:
{
"status": "<<error.status>>",
"phase": "<<error.phase>>",
"message": "<<error.message>>",
"requestId": "<<error.requestId>>",
"processId": "<<error.processId>>",
"failedValidators": "<<error.failedValidators>>",
"metadata": "<<metadata>>"
}status ist invalid oder blocked; phase benennt request, render oder email. failedValidators enthält die Fehlermeldungen fehlgeschlagener Validatoren und ist sonst leer. Bei einem Fehler schon in der Request-Zuordnung ist processId null. Ein Fehler-Callback kann vor der Dateierzeugung stattfinden: Verwenden Sie hier keine Pflicht-Platzhalter wie <<document.base64File>> oder <<email.eml.base64File>>. Scheitert der Callback selbst, bleibt der ursprüngliche Prozessstatus erhalten. Die Datenvalidierung greift nur, wenn das Modul Datenvalidierung beim Mandanten aktiv und der Vorlage ein Validator zugeordnet ist.
Nach einem technischen Fehler kann der Prozess bereits als blockiert erscheinen. Der blocked-Callback folgt erst, wenn auch die Wiederholungsversuche fehlgeschlagen sind. Bei HTTP-Webhook-Fehlern sind drei weitere Versuche mit jeweils fünf Minuten Abstand vorgesehen; bei anhaltendem Fehler kommt der Callback daher nach etwa 15 Minuten zuzüglich Verarbeitungs- und Wartezeit. Das ist keine garantierte Frist. Ein invalid-Callback nach fehlgeschlagener Datenvalidierung wartet diese Wiederholungen nicht ab.
Prozess-Pre-Rendering-Webhooks laufen vor Datenvalidierung, QR-/Chart-Rendering und Template-Rendering. Ihre Ergebnisse stehen den folgenden Prozessschritten und späteren Webhooks zur Verfügung. Request-Pre-Rendering-Webhooks laufen nach den PHP-Mappings, aber vor der Vorlagen- und E-Mail-Zuordnung; ihre Daten können daher Auswahlbedingungen und E-Mail-Empfänger beeinflussen. After-Rendering-Webhooks erhalten fertige Dokumente oder E-Mail-Artefakte.
Webhooks in Vorschauen: Vorschauen und Simulationen (z.B. die Request-Simulation oder die Vorschau beim Erstellen von Individualschreiben) führen Prerender-Webhooks inzwischen tatsächlich aus, damit die Vorschau dieselben Daten zeigt wie das spätere Rendering. Fehler einzelner Prerender-Webhooks brechen die Vorschau nicht ab, sondern werden im Ergebnis ausgewiesen. After-Rendering-Webhooks werden in Vorschauen niemals ausgeführt.
Antwort-Speicherung und Webhook-Verkettung
Synchrone Custom-Webhooks können ihre JSON-Antwort im gemeinsamen RenderData-Bus speichern. Das wird für custom-document, custom-email, custom-oauth2-document, custom-oauth2-email, die drei prerender-custom-oauth2-*-Typen sowie powercloud-custom-ouauth2-document und powercloud-custom-ouauth2-email unterstützt. Asynchrone Versandprovider wie Binect und E-POSTBUSINESS sind ausgenommen, weil ihre spätere Provider-Antwort nicht in derselben Webhook-Kette vorliegt.
Die Konfigurationsfelder haben folgende Bedeutung:
responseDataKey: aktiviert die Speicherung und benennt das Ziel. Für die dreiprerender-custom-oauth2-*-Typen ist der Schlüssel erforderlich, sofernmergeResponsenicht aktiviert ist; bei den übrigen Typen bedeutet ein fehlender oder leerer Schlüssel: keine Speicherung.responseDataRoot:or(Standard) speichert unteror.<responseDataKey>;renderDataschreibt direkt in die Renderdaten.mergeResponse: merged eine JSON-Objekt-Antwort rekursiv in vorhandene Daten. Ohne Schlüssel kann damit in die gewählte Wurzel gemerged werden. JSON-Listen und Skalare sind beim Merge nicht zulässig.responseValuePath: wählt vor dem Speichern per Punktpfad einen Teil der Antwort, z.B.data.token. Ein fehlender Pfad stoppt den Webhook mit einer verständlichen Fehlermeldung.
Eine einzelne Antwort hat beispielsweise diese Form:
{
"or": {
"customerLookup": {
"customerId": "4711",
"status": "active"
}
}
}Bei Powercloud Custom E-Mail-Formaten mit Anhängen bleiben Hauptantwort und Geschwister erhalten:
{
"or": {
"delivery": {
"email": {
"requestId": "main-123"
},
"attachments": {
"invoice_final": { "requestId": "att-1" },
"invoice_final_2": { "requestId": "att-2" }
}
}
}
}Folgewebhooks lesen gespeicherte Werte weiterhin mit Platzhaltern wie <<or.customerLookup.customerId>>. Webhooks laufen zuerst nach Priorität (1 ist am höchsten) und bei gleicher Priorität stabil nach ihrer ID. Damit kann ein früher Webhook etwa ein Token speichern und ein späterer Webhook dieses in URL, Header oder Body einsetzen:
{
"method": "GET",
"url": "https://api.example.test/customers/<<or.lookup.customerId>>"
}Die Kette ist synchron: Ein Fehler beim HTTP-Aufruf, beim Pfad oder beim Auflösen eines Platzhalters stoppt den Workflow und nennt den fehlgeschlagenen Platzhalter im Workflow-Log. Ein Workflow-Retry führt den Webhook erneut aus; externe Endpunkte sollten deshalb idempotent sein. Antworten über 256 KB werden vollständig gespeichert, erzeugen aber eine Warnung im Log.
Demo API als Pre-Render-Datenquelle
Für die Demo API verwenden Sie bei OAuth2-Webhooks den Client-Credentials-Flow:
Access Token URL: https://demo.example/api/demo/oauth/token
Client ID: or-demo-enloc
Client Secret: or-demo-213-enloc
Additional Token Parameters: {}Eine typische Pre-Rendering-Konfiguration für prerender-custom-oauth2-document oder prerender-custom-oauth2-email ruft den Payload einer hochgeladenen Beispiel-Datei ab:
{
"method": "GET",
"url": "https://demo.example/api/demo/files/<file-id>/payload",
"responseDataRoot": "or",
"responseDataKey": "example",
"options": {
"headers": {
"Accept": "application/json"
}
}
}Die Antwort steht danach im Rendering unter or.example. Wenn die Antwort direkt in die Rendering-Daten übernommen werden soll, kann responseDataRoot auf renderData gesetzt werden. Mit mergeResponse: true wird eine JSON-Objekt-Antwort in den Zielbereich gemerged; mit responseValuePath kann vorher ein Teil der API-Antwort ausgewählt werden.
Demo API als After-Rendering-Ziel
Für custom-oauth2-document kann ein gerendertes Dokument an die Demo API übergeben werden:
{
"method": "POST",
"url": "https://demo.example/api/demo/rendered-documents",
"responseDataKey": "",
"options": {
"headers": {
"Content-Type": "application/json",
"Accept": "application/json"
},
"json": {
"fileName": "<<document.filename>>",
"base64File": "<<document.base64File>>",
"description": "<<document.description>>",
"customId": "<<document.customId>>"
}
}
}Für custom-oauth2-email stehen entsprechend <<email.eml.base64File>>, <<email.html.base64File>>, <<email.sender>>, <<email.recipient>>, <<email.subject>> und <<email.attachments>> zur Verfügung. Die Demo API nimmt die Datei entgegen und zeigt sie anschließend in der Demo-Oberfläche bei Rendered Documents an.
Ticketsystem zuerst, Versand danach
Soll ein Ticketsystem die Vorgangsnummer in den Betreff setzen, muss das Ticket
vor dem Rendern existieren. Dafür gibt es prerender-custom-request: Der Typ
läuft einmal je Rendering-Request, bevor Vorlagen und E-Mails aufgelöst werden,
und authentifiziert sich über gewöhnliche Header statt über OAuth2 - passend für
APIs hinter einem festen Token.
Die Antwort landet über responseDataKey in den Renderdaten und steht damit in
Gruppenbedingungen, im Betreff, in der Empfängerauflösung und in allen folgenden
Prozessen zur Verfügung:
{
"method": "POST",
"url": "https://ticket.example.com/api/v1/tickets",
"responseDataKey": "ticket",
"options": {
"headers": {
"Authorization": "Token token=<<credentials.ticket_token>>",
"Content-Type": "application/json"
},
"json": { "title": "<<data.subject>>" }
}
}Im Betreff der E-Mail-Vorlage steht danach etwa
Ihre Anfrage [Ticket#<<or.ticket.number>>]. Output.Rocks rendert und versendet
die Mail anschließend selbst, sodass Layout, Bilder und Schriften erhalten
bleiben - anders als beim Umweg über einen Artikel im Ticketsystem, dessen
HTML-Bereinigung externe Bilder und Schriftangaben in der Regel entfernt.
Neben dem base64-codierten HTML steht mit <<email.html.content>> auch das rohe HTML des
gerenderten E-Mail-Bodys bereit. Das brauchen Zielsysteme, die die E-Mail selbst versenden und
dafür das Markup erwarten statt einer Datei - etwa ein Ticketsystem, das daraus einen
ausgehenden Artikel anlegt. Soll Output.Rocks in einem solchen Fall nicht selbst versenden,
wird im Request einfach kein emailServer mitgegeben: Die E-Mail wird gerendert, das EML
erzeugt, der Versand übersprungen und die Webhooks laufen wie gewohnt.
Archiv (WORM)
Befristeter Rechnungsdownload mit QR-Anschreiben
Beim Dokument-Archiv-Webhook s3-archive-document kann QR-Download-Anschreiben senden aktiviert werden. Die Funktion ist zunächst ausgeschaltet und gilt nur für PDF-Dokumente. Wählen Sie eine bestehende Dokumentvorlage für das Anschreiben und einen aktiven Binect-Dokument-Webhook desselben Mandanten bzw. Umgebungs-Mandanten. In Test und Staging muss dieser Binect-Webhook die Testumgebung verwenden. Die Linkdauer ist eine ganze Zahl von 1 bis 365 Tagen (Standard: 30). Die Archiv-Aufbewahrung bleibt davon unabhängig.
Die Anschreibenvorlage erhält source mit den wirksamen Quelldaten sowie archiveDownload.url, archiveDownload.expiresAt, archiveDownload.validityDays und archiveDownload.fileName. Bei aktiviertem Zugangscode enthält archiveDownload.accessCode den einmalig für dieses Anschreiben erzeugten Code; nehmen Sie ihn nur auf, wenn er dem Empfänger tatsächlich zugestellt werden soll. Eigene Vorlagen können eine QR-Code-Konfiguration mit Text <<archiveDownload.shortUrl>> verwenden. Die beigelegte A4-Standardvorlage erzeugt den QR-Code dagegen direkt über ihre Textmarke qrcode_archiveDownloadQr; ihre separate QR-Code-Konfigurationsliste bleibt leer. Optional kann die Vorlage <<archiveDownload.expiresAt>> als lesbaren Hinweis anzeigen. Das Anschreiben erhält eine eigene technische externalId; die Rechnungsreferenz steht unter source.externalId. Binden Sie keinen Rechnungs-Webhook, keine Rechnungsanlage und keine ZUGFeRD-Mapping-Regel an die Anschreibenvorlage.
Der Brief startet erst nach bestätigter Archivierung. Die Frist beginnt genau zu diesem Zeitpunkt und läuft in UTC nach jeweils 24 Stunden ab; Warteschlangen, Rendering und Postlaufzeit verlängern sie nicht. Der QR-Link liefert ohne Anmeldung ausschließlich die unveränderte archivierte PDF. In der Archivdetailansicht sehen berechtigte Personen Ablauf, Folgeauftrag und Fehler; Archivschutz-Berechtigte können den Link widerrufen. Der Widerruf stoppt neue Downloads und eine noch nicht begonnene Binect-Übergabe. Ein fehlgeschlagenes Anschreiben ändert den erfolgreichen Archivstatus nicht. Nach Korrektur von Vorlage oder Versandkonfiguration wird derselbe Folgeauftrag über die bestehenden Workflow-Wiederholungen fortgesetzt; es entsteht kein neuer Link.
Für den Betrieb muss ARCHIVE_DOWNLOAD_BASE_URL auf die vertrauenswürdige HTTPS-App-Domain der Umgebung gesetzt sein und /archive/download/ zum Backend führen. Der Wiederanlauf scannt jede Minute bestätigte, noch offene Fortsetzungen (archive-download-followups) und schickt sie über die vorhandene EntityAction-Verarbeitung erneut an. Prüfen Sie bei Fehlern den Folgeauftrag und den Freigabestatus; Token und Klartextlink dürfen nicht in Support-Logs übernommen werden.
Die Webhook-Typen s3-archive-document und s3-archive-email legen gerenderte Dokumente, E-Mails oder E-Mail-Anhänge im revisionssicheren Archiv ab. Im Konfigurations-Tab werden neben der Aufbewahrungsklasse und dem optionalen Löschzeitpunkt-Offset auch die Archiv-Metadaten gepflegt.
Für PDF-Dokumente kann zusätzlich PDF/A-3b-Fassung erzeugen aktiviert werden. Das Archiv prüft nach der Virenfreigabe zunächst mit veraPDF, ob das unveränderte Original bereits PDF/A-konform ist. Nur bei einem nicht konformen PDF wird eine eigene PDF/A-3b-Komponente erzeugt und erneut geprüft. Das Original bleibt maßgeblich und kann wie bisher heruntergeladen werden. Der Prüfstatus, das erkannte Profil und etwaige Fehler erscheinen im Archiveintrag. Bei technischen Fehlern bleibt das Original verfügbar; die Prüfung oder Umwandlung kann erneut angestoßen werden. Eingebettete Rechnungs-XML wird bytegleich in die zusätzliche Fassung übernommen.
Bei E-Mail-Archiv-Webhooks kann der HTML-Inhalt zusätzlich als PDF archiviert werden. Wird für eine E-Mail-Quelle originalFormat = pdf verwendet, konvertiert Output.Rocks den gerenderten E-Mail-Body nach PDF und speichert ihn mit application/pdf.
Das Feld Archiv-Metadaten akzeptiert ein JSON-Mapping oder einen einzelnen Platzhalter. Nur die dort konfigurierten Werte werden als Metadaten im Archiv gespeichert. Ein leeres Feld oder {} speichert keine Metadaten.
{
"metadata": {
"customerId": "<<data.customer.id>>",
"invoiceNumber": "<<data.invoice.number>>",
"documentType": "<<metadata.type>>",
"fileName": "<<document.filename>>"
}
}Wenn die Archiv-Metadaten bereits vollständig in den Renderdaten vorbereitet sind, kann das Feld auch nur aus einem Platzhalter bestehen:
{
"metadata": "<<data.archiveMetadata>>"
}Der Platzhalter muss auf ein JSON-Objekt auflösen. Listen, einzelne Textwerte oder Zahlen werden nicht als Archiv-Metadaten akzeptiert.
Für E-Mail-Archiv-Webhooks kann das Mapping zusätzlich E-Mail-Kontext verwenden:
{
"metadata": {
"customerId": "<<data.customer.id>>",
"emailSubject": "<<email.subject>>",
"messageId": "<<email.messageId>>"
}
}Verfügbare Platzhalterquellen:
data: zusammengeführte Renderdaten des Prozesses.metadata: Metadaten des aktuellen Dokument- oder E-Mail-Prozesses.document: Kontext des gerenderten Dokuments oder E-Mail-Anhangs, z.B. Dateiname, External ID, Custom ID, Rendering-Request-ID und Mandant.email: Kontext des E-Mail-Prozesses; bei Anhängen ist das der übergeordnete E-Mail-Prozess.
Fehlende Platzhalter lassen den Archiv-Webhook fehlschlagen, bevor ein Archiv-Eintrag angelegt wird. Verwenden Sie deshalb nur Felder, die im jeweiligen Dokument-, E-Mail- oder Anhangskontext sicher vorhanden sind.
Speichern Sie nur fachlich benötigte Such- und Referenzwerte. Komplette Prozess-Metadaten werden nicht automatisch übernommen, damit große Request-Objekte oder E-Rechnungsdaten nicht versehentlich in den Archiv-Metadaten landen.
Archivierte Dokumente können über die M2M-API nach diesen Metadaten gefiltert werden. Der API-Token muss zum Mandanten gehören und das Archiv-Modul muss aktiviert sein:
curl -H "X-AUTH-TOKEN: <api-token>" \
"https://<backend>/api/archive?metadata[customerId]=C-100&metadata[invoiceNumber]=INV-123"Die Filterwerte werden exakt verglichen. Mehrere metadata[...]-Parameter werden kombiniert, sodass alle angegebenen Werte passen müssen. Die Datei selbst wird anschließend über den link aus dem Ingest-Response oder per Download-Endpunkt abgerufen:
curl -L -H "X-AUTH-TOKEN: <api-token>" \
"https://<backend>/api/archive/<id>/download" \
-o dokument.pdfFormularstruktur
Aktions-Buttons zum Speichern und Verwalten der Webhook-Konfiguration.
Verwenden Sie "Erstellen und weiteres Element hinzufügen" für effizientes Batch-Erstellen mehrerer Elemente.
Details-Tab
Dieser Tab ist bei allen Webhook-Typen identisch und definiert Identifier, Priorität und Aktivierungslogik.
Eindeutige Kennung für dieses/r Webhook zur programmatischen Verwendung, Einbindung in Vorlagen, Lookups und API-Zugriff.
Identifiers sollten 'snake_case' sein, also klein geschrieben und Unterstriche verwenden, z.B. 'kunde_name' oder 'rechnung_nummer'.
Eindeutige Kennung für die Gruppierung und Organisation von Webhookn.
Elemente einer Gruppe werden gemeinsam verarbeitet und optionale Validatoren können dabei einzelne Elemente aktivieren oder ignorieren.
Gruppen-Identifier sind optional und können bei Bedarf leer gelassen werden.
Gruppen-Identifier sollten 'snake_case' sein, also klein geschrieben und Unterstriche verwenden, z.B. 'kunde_name' oder 'rechnung_nummer'.
Ganzzahliger Rang. 1 bedeutet höchste Priorität, höhere Zahlen laufen nachrangig.
Trigger-Zeitpunkte im Renderprozess
Vor der Prioritätssortierung gibt es drei Trigger-Zeitpunkte, die durch die Art des Webhooks bestimmt werden: (1) Prerender-Hooks direkt nach Start noch vor Validation/Rendering, (2) Post-render Hook-Schleife unmittelbar nach render_template mit einem fertigen Dokument, (3) E-Mail-Workflows nach send_email sowie den Statusübergängen delivered oder bounced.
Innerhalb dieser Trigger-Zeitpunkte werden die zugeordneten Hooks nach ihrer Priorität ausgeführt.
Bedingte Logik für die Auswahl des Elements basierend auf Payload-JSON-Daten. Das Element wird angesprochen, wenn der Gruppen-Identifier mit dem Request übereinstimmt. Es wird aber nur gerendert, wenn die Bedingung erfüllt (true) ist.
Startdatum des Webhooks. Webhooke werden erst ab diesem Datum beim Rendern beachtet.
Die Aktiv-Checkbox ermöglicht eine sofortige De-/Aktivierung unabhängig vom Datum.
Vor-Terminierung: Mit diesem Feld können Webhooke vor-terminiert werden. Setzen Sie ein zukünftiges Datum, um das Element automatisch ab diesem Zeitpunkt zu aktivieren.
Mehrere Elemente mit gleichem Identifier: unterschiedliches 'Aktiv ab' staffelt die Version; bei einer Anfrage gilt das aktive Element mit dem spätesten Aktiv ab (nicht Erstell- oder Änderungsdatum).
Mandant & Standard für Umgebungs-Mandanten
Ist das Modul für Umgebungs-Mandanten aktiv, legen Sie im Details-Tab fest, für wen ein Webhook gilt: für einen bestimmten Umgebungs-Mandanten oder – als Standard für Umgebungs-Mandanten – für den Hauptmandanten und alle Umgebungs-Mandanten gemeinsam.
Zuordnung zu einem spezifischen Umgebungs-Mandanten oder Standard-Verwendung für alle Mandanten.
Markiert Element als Standard-Element, das automatisch an alle Umgebungs-Mandanten vererbt wird.
Fehlermeldung: Die Kombination "Standard für Umgebungs-Mandanten" + ausgewählter "Umgebungs-Mandant" erzeugt die Fehlermeldung: Tenant defaults can not be set on tenant assigned entities. Ein Element kann entweder für einen spezifischen Mandant ODER als Standard für alle Umgebungs-Mandanten konfiguriert werden.
Rendering-Requests eines Umgebungs-Mandanten führen seine eigenen Webhooks und die geteilten Webhooks des Hauptmandanten aus, die zum angefragten Identifier oder Gruppen-Identifier passen. Hat der Umgebungs-Mandant einen eigenen Webhook mit demselben Identifier, wird nur dieser ausgeführt. So lässt sich zum Beispiel ein E-Rechnungs-Mapping einmal zentral pflegen und für einzelne Stadtwerke gezielt überschreiben.
Nutzer eines Umgebungs-Mandanten sehen geteilte Webhooks des Hauptmandanten mit dem Hinweis Umgebungs-Standard, können sie aber weder ändern noch löschen. Maskierte Zugangsdaten bleiben für sie maskiert. Das Umschalten des Standards erzeugt – wie jede inhaltliche Änderung – eine neue Version; Requests mit einem Auflösungszeitpunkt vor der Änderung verwenden weiterhin die damals gültige Version.
Konfigurations-Tab
Benutzername/Passwort für bestehende Zugänge oder API-Key (empfohlen). Im Binect-Portal unter Mein Konto → API-Keys einen Schlüssel anlegen und Passwort und API-Key oder nur API-Keys freigeben. Test und Produktion benötigen getrennte Schlüssel.
Für Versand sind FULL-Rechte nötig. Als verschlüsselte Zugangsdaten speichern und hier referenzieren. Ablaufdatum und erlaubte Server-IP-Adressen bei Binect beachten.
Test nutzt die Binect-Sandbox. Produktion verschickt echte Briefe bei Workflow-Ausführung.
Login-Name des Binect-Zugangs. Kann direkt eingetragen oder per Zugangsdaten-Platzhalter geladen werden.
Passwort des Binect-Zugangs. Am besten als verschlüsselte Zugangsdaten speichern und hier referenzieren.
Aktiviert einseitigen Druck. Deaktiviert bedeutet Duplex, also beidseitiger Druck.
Aktivieren, wenn das PDF farbig gedruckt werden soll. Sonst erfolgt Schwarzweißdruck.
DIN lang ist der Standard für normale Briefe; C4 eignet sich für größere Sendungen.
Automatisch lässt Binect die passende Frankierung wählen. DV-Frankierung nur nutzen, wenn Konto und Dokument dafür vorbereitet sind.
Meist automatisch lassen. Nur festlegen, wenn Vertrag oder Versandprodukt ein Land verlangt.
Standardbrief für normalen Versand. Premiumadress und Einschreiben nur nutzen, wenn sie im Binect-Konto freigeschaltet sind.
Zustellstatus-Trigger für E-Mail-Webhooks
Post-Render-E-Mail-Webhooks können nach dem Zustellstatus gefiltert werden. Im Webhook-Formular wählen Sie dafür Ausführung nach Zustellstatus:
- Immer: Webhook läuft bei zugestellten und gebouncten E-Mails.
- Nur bei Zustellung: Webhook läuft nur, wenn der Mailserver
deliveredmeldet. - Nur bei Bounce: Webhook läuft nur, wenn der Mailserver
bouncedmeldet.
Zustellstatus-Trigger greifen nur, wenn die verwendete E-Mail-Vorlage Bounce-Handling aktiviert hat. Ohne Bounce-Handling wird der E-Mail-Prozess nach dem Versand nicht bis delivered oder bounced weiterverfolgt.
Die Provider-Rückmeldungen richten Sie unter E-Mail-Zustellstatus ein.
Die Einstellung ist für generische E-Mail-Uploads, Custom/OAuth2-E-Mail-Webhooks, SFTP, SharePoint, DropBox, Binect, E-POSTBUSINESS, S3-Archiv und die Powercloud-E-Mail-Upload-Typen verfügbar. Pre-Render-Webhooks und Request-Pre-Render-Webhooks bleiben davon ausgenommen.
E-Mail-Upload-Formate
Bei Webhooks mit E-Mail-Upload-Auswahl stehen diese Formate zur Verfügung:
- Vollständige E-Mail (
.eml): lädt die komplette E-Mail inklusive MIME-Struktur hoch. - Nur HTML-Inhalt: lädt den gerenderten E-Mail-Body als
.htmlhoch. - HTML-Inhalt als PDF: konvertiert den gerenderten E-Mail-Body nach PDF und lädt nur dieses PDF hoch.
- Nur Anhänge: lädt ausschließlich gerenderte und statische E-Mail-Anhänge hoch.
- HTML-Inhalt und Anhänge: lädt den rohen HTML-Body plus Anhänge hoch.
- HTML-Inhalt als PDF und Anhänge: lädt den E-Mail-Body als PDF plus alle Anhänge hoch.
Die PDF-Varianten gelten für SFTP, SharePoint, DropBox, S3-Archiv sowie Powercloud Archive/Custom OAuth2 E-Mail-Uploads. Bestehende Webhooks behalten ihr gespeichertes Format.
Für HTML-Inhalt als PDF und HTML-Inhalt als PDF und Anhänge wird derselbe konfigurierbare E-Mail-PDF-Header wie beim Download im E-Mail-Prozess verwendet. Maßgeblich ist die Einstellung des Mandanten beziehungsweise Umgebungs-Mandanten unter Mandanten-Einstellungen → E-Mail-PDF; dabei gilt die Vererbung Systemstandard → Mandant → Umgebungs-Mandant. Ist der Header dort deaktiviert, bleibt auch das Webhook-PDF ohne Header.
Testen und Löschen
Die Zeilenaktionen öffnen Anzeigen, Versionsverlauf und Ändern. Für Custom-, Custom-OAuth2- und ihre Pre-Rendering-Typen sowie die acht Fehler-Callbacks gibt es außerdem Webhook testen. Geteilte Webhooks eines Hauptmandanten bleiben für Nutzer eines Umgebungs-Mandanten schreibgeschützt; die Test- und Löschaktionen sind dort deaktiviert.
Im Testdialog bearbeiten Sie ein JSON-Objekt als rohen Platzhalterkontext. Die Schlüssel liegen an der Wurzel: Für <<kunde.nummer>> geben Sie { "kunde": { "nummer": "C-42" } } ein. Ein data-Schlüssel ist nur nötig, wenn Ihr Platzhalter tatsächlich mit <<data.*>> beginnt. Für Metadaten, Dokumente, E-Mails und Fehler können Sie metadata, document, email und error ergänzen. Vorschau löst die Platzhalter auf und zeigt Methode, URL und Optionen ohne Netzwerkaufruf. Testanfrage senden ruft das konfigurierte Ziel tatsächlich auf und zeigt HTTP-Status und gekürzte Antwort. Zugangsdaten werden in der Anzeige verdeckt. Der Test ändert keine gespeicherte Webhook-Konfiguration und erzeugt keinen Rendering-Prozess; die Beispiele müssen die Platzhalter Ihrer Konfiguration abdecken.
Löschen öffnet eine Bestätigung. Ein Webhook, auf den Prozesse, Zustellungen oder deren Historie noch verweisen, kann nicht gelöscht werden; deaktivieren Sie ihn in diesem Fall. Nur ein ungenutzter Webhook lässt sich entfernen. Ein Testversand kann beim externen Ziel eine Aktion auslösen, daher vor dem Senden Ziel und Payload in der Vorschau prüfen.
Filter
- Filtern öffnet das Modal mit Suchkriterien wie Identifier, Typ oder Mandant.
- Zurücksetzen setzt alle Kriterien zurück und schließt das Modal.
- Anwenden übernimmt die Auswahl, aktualisiert die Tabelle sofort und schließt den Dialog.
Das Filter-Modal übernimmt die Standard-Iconographie aus dem Backend (fa-filter, fa-close, fa-check) und zeigt den aktuellen Status in der Titelleiste.
Spalten konfigurieren
Passen Sie die Anzeige der Webhook-Liste für bessere Übersichtlichkeit an. Spalten können per Drag-and-Drop neu angeordnet und über Checkboxen ein-/ausgeblendet werden.
Für mich anwenden : Spalten-Konfiguration wird nur für Ihren Account gespeichert und beeinflusst andere Benutzer nicht.
Als Standard anwenden : Konfiguration wird für alle Benutzer der Instanz übernommen und als neue Standard-Ansicht gesetzt.
Das Konfigurationsmodal bietet drei Speicherpfade:
- Für mich anwenden – persönliche Ansicht.
- Als Standard anwenden – gesamte Umgebung nutzt diese Sicht.
- Auf Standard zurücksetzen – ursprüngliche Spaltenauswahl reaktivieren.
Die Vorauswahl enthält Identifier, Typ und Status. Ergänzen Sie bei Bedarf zusätzliche Felder wie Mandant oder Priorität, um Fehleranalysen zu beschleunigen.
Weitere Bedienelemente
- Pagination zeigt im Footer die Anzahl der Treffer (z.B. „2 Ergebnisse“). Bei mehr Seiten erscheinen Zurück/Weiter-Buttons.