Einführungen
Input & Output Flow, E-Mails, Webhooks
Richten Sie ihren Workflow ein, inklusive E-Mail-Vorlagen, Anhängen und Webhooks
Output.Rocks verwendet eine einheitliche API für die Erstellung von Dokumenten und E-Mails. Über einen einzigen POST Request an api/renderings/ werden sowohl Dokument- als auch E-Mail-Vorlagen mit demselben template-Identifier angesprochen.
API-Einführung: Für eine vollständige Einführung in die API-Nutzung, Authentifizierung und Powercloud-Integration finden Sie die detaillierte Dokumentation unter API-Integration mit Output.Rocks.
Input & Output Flow
Kommt ein API Call bei Output.Rocks an, wird zuerst der darin angegebene Identifier überprüft.
Wenn Group Identifier bei E-Mail-Vorlagen und Dokument-Vorlagen identisch benannt sind, werden diese durch einen Request gleichzeitig ausgelöst und deren Bedingungen geprüft.
Die Weiterleitung erfolgt dann über konfigurierte Webhooks oder SMTP-Server.
Erweiterte Datenverarbeitung mit Custom Mappings
Für erfahrene Nutzer und Entwickler: Output.Rocks unterstützt Datenmapping-Regeln, die vor der Template-Auswahl ausgeführt werden. Diese ermöglichen die automatische Transformation und Anreicherung von Rendering-Daten, z.B. für Brand-ID-Extraktion, Mailserver-Routing, dynamisches Template-Routing oder die Bereitstellung zusätzlicher Datenfelder in Templates. Die vollständige Dokumentation finden Sie unter Datenmapping-Regeln.
Zugangsdaten-Verwaltung
Mit dem Backend-Bereich Zugangsdaten speichern Sie zentral alle Secrets, API-Schlüssel oder SFTP-Passwörter, die anschließend in Webhooks und Folgeaktionen verwendet werden. Damit müssen Integrationen keine sensitiven Strings mehr direkt im Webhook-Formular enthalten.
Auch für die Verwendung externer Email-Server können Sie so Zugangsdaten hinterlegen.
Syntax <<credentials.identifier>>
Verwenden Sie z.B. <<credentials.my_api_key>>, um den Wert des Zugangsdaten-Datensatzes my_api_key einzusetzen.
- Die Syntax funktioniert in allen Feldern, die als Text/JSON gespeichert werden und vor dem Request durch Platzhalter-Ersetzungen laufen.
- Sie lässt sich mit anderen Quellen kombinieren, z.B.
https://api.partner.tld/<<credentials.partner_tenant>>/<<data.customer.id>>.
Einsatz im Backend
Für Standard- und OAuth2-Webhooks (z.B. Powercloud-Helper, SharePoint, DropBox, SFTP) können Sie so Zugangsdaten in allen Textfeldern wie Base-URL, Client-ID, Client-Secret oder Tokens nutzen, zBsp. der Webhooks im Backend.
Custom Webhook Konfiguration: Innerhalb von config.options (Headers, auth_basic, auth_bearer, query, json, body) ersetzt der interne Parser jeden Platzhalter mit den geladenen Credentials, bevor die Anfrage gesendet wird.
Allgemeine Webhook-Daten: Die Credentials sind gemeinsam mit data.* und or.* Variablen verfügbar. Solange das Feld im Backend ein String oder Eingabefeld ist, kann die Syntax genutzt werden.
E-Mails funktionieren nach demselben Prinzip wie Dokumente: Sie enthalten Platzhalter, Standardwerte, Logik und wiederverwendbare Komponenten.
Aber für den eigenen Rendering-Prozess werden E-Mails in den Sektionen E-Mail Grundgerüst und E-Mail-Vorlagen als HTML oder Reintext gespeichert und verwaltet – nicht als .docx Vorlagen. So können sie als Dateien entweder an einen externen Webhook-Endpunkt oder über einen konfigurierten SMTP-Server versendet werden.
E-Mail Rendering-Prozess
Für den E-Mail-Versand verfolgt Output.Rocks einen hierarchischen Ansatz, bei dem mehrere Ebenen von Vorlagen ineinandergreifen.
E-Mail-Vorlagen
Sie finden E-Mail-Vorlagen im Backend an zwei Stellen:
- unter Vorlagen-Management → E-Mail Standard-Vorlagen für HTML-Gerüstvorlagen, die das Design und die Grundstruktur definieren.
- unter Vorlagen-Management → E-Mail-Vorlagen für spezifische E-Mail-Inhalte, die optional eine Standard-Vorlage auf sich anwenden.
Struktur einer E-Mail-Vorlage
E-Mail-Vorlagen haben etwas mehr Komplexität als Dokument-Vorlagen. Im Backend finden sich folgende wichtige Abschnitte:
| Abschnitt | Beschreibung |
|---|---|
| Betreff | Unterstützt Platzhalter- und Expression-Syntax. |
| An | Der Empfänger, oft aus dem Payload mit Platzhaltern wie <<kunde.email>>. Unterstützt auch Expression-Syntax. |
| CC | (optional) Zusätzliche Empfänger. Unterstützt auch Expression-Syntax. |
| BCC | (optional) Blindkopie Empfänger. Unterstützt auch Expression-Syntax. |
| From Name | (optional) Absender-Name, kann auch Platzhalter enthalten. Unterstützt auch Expression-Syntax. |
| Reply To | (optional) Antwort-Adresse. Unterstützt auch Expression-Syntax. |
| Standard‑E-Mail‑Vorlage | Auswahl einer bestehenden Standard-Vorlage (HTML-Gerüst), die als Rahmen dient. |
| HTML-Inhalt | Der zentrale Inhalt dieser Vorlage. Kann reiner Text oder vollwertiges HTML (empfohlen) sein. Platzhalter, Komponenten, Standardwerte und Output.Rocks-Logik sind möglich. |
| Dateianhang-Identifier | Auswahl aus bestehenden Vorlagen-Management → Vorlagen um Dokumente als Anhänge hinzuzufügen. |
Empfänger-Adressen werden in der Regel aus dem Payload übernommen. Best-Practice ist es, Fallback-Optionen zu verwenden, um alternative E-Mail-Adressen zu überprüfen:
<<{ifBlank(kunde.rechnungsemail, kunde.email)}>>Pro E-Mail-Vorlage können mehrere Dokument-Vorlagen als Anhänge definiert werden. Jeder Anhang wird beim Versand der E-Mail individuell mit den aktuellen Daten validiert und gerendert.
Achten Sie darauf, dass die Dateianhang-Identifier auf gültige und aktive Dokument-Vorlagen verweisen.
Syntax in E-Mail-Vorlagen
Die Syntax in E-Mail-Vorlagen ist ähnlich der in Dokumenten, mit einigen wichtigen Unterschieden:
| Syntax-Element | Hinweise |
|---|---|
| Platzhalter | Funktionieren wie in Dokumenten mit <<feldname>> Syntax. |
| HTML-Kommentar-Platzhalter | ABER: Platzhalter sollten auch in HTML-Kommentare eingeschlossen werden: <!-− <<feldname>> -−>, was in externen HTML-Editoren Fehlermeldungen verhindert. Vor dem Rendering werden alle in HTML-Kommentare eingeschlossenen Platzhalter durch reguläre Platzhalter ersetzt. |
| E-Mail-Vorlagen‑Platzhalter im E-Mail Grundgerüst | Im E-Mail Grundgerüst wird der spezielle Platzhalter <<refLookup:email_html_body>> verwendet, um die Stelle zu markieren, wo der Inhalt der eigentlichen E-Mail-Vorlage eingefügt werden soll. |
| Tabellen | Für Tabellen kann keine Output.Rocks-Syntax verwendet werden, stattdessen sollten HTML-Elemente wie <table> und <tr> verwendet werden. |
| Expressions | Werden wie in Dokumenten unterstützt, z.B. für Formatierungen oder Berechnungen. |
Es ist aber möglich in Tabellen bedingte Abschnitte für dynamische Tabellen zu verwenden, zBsp.
<table>
<!-- <<cs_{!isBlank(kunde.rechnungsemail)}>> -->
<tr>
<td>Rechnungsemail</td>
<td><!-- <<kunde.rechnungsemail>> --></td>
</tr>
<!-- <<else>> -->
<tr>
<td>Email</td>
<td><!-- <<kunde.email>> --></td>
</tr>
<!-- <<es_>> -->
</table>Technische Details zu E-Mail-Vorlagen-Platzhaltern im Grundgerüst:
HTML-Inhalt (email_html_body): Sobald eine Standard-E-Mail-Vorlage hinterlegt ist, wird email_html_body immer gesetzt. Output.Rocks bekommt also garantiert einen Pfad zum Content-DOCX. Der Platzhalter <<refLookup:email_html_body>> kann im Grundgerüst problemlos ohne zusätzliche Prüfung stehen. Der Renderprozess liefert den Key immer, solange das Layout benutzt wird.
Text-Inhalt (email_text_body): Der Key email_text_body taucht nur auf, wenn die Vorlage tatsächlich über Text + Text-DOCX verfügt. Hat die Email-Vorlage selbst keinen Text, bricht der Code vorher ab und der Key existiert nicht – das Standardlayout muss dann selbst darauf reagieren.
Empfohlene Syntax für den Textbereich:
<<cs_{refLookupExists("email_text_body")}>>
<<refLookup:email_text_body>>
<<es_>>Damit vermeiden Sie Fehler, wenn eine Vorlage keinen Textkörper pflegt – und genau dafür ist der cs_-Block gedacht.
Der HTML-Kommentar-Platzhalter <!-- <<...>> --> wurde entwickelt, damit der Code in HTML-Parsing keine Fehler anzeigt, da <<...>> kein gültiger HTML-Tag ist. Das Präfix <!-- wird nur dann entfernt, wenn << direkt folgt.
Tipps für E-Mail-Vorlagen
Bei der Erstellung effektiver E-Mail-Vorlagen sollten Sie folgende Punkte beachten:
- Verwenden Sie responsive HTML, das auf verschiedenen E-Mail-Clients und Geräten gut aussieht
- Halten Sie Betreffzeilen kurz, prägnant und relevant (40-50 Zeichen ideal)
- Nutzen Sie das E-Mail Grundgerüst für ein konsistentes Erscheinungsbild
- Testen Sie Ihre Vorlagen regelmäßig in verschiedenen E-Mail-Clients
- Verwenden Sie aussagekräftige Identifier für einfache Wartung
- Fügen Sie sinnvolle Fallback-Optionen für kritische Datenfelder hinzu
- Denken Sie an internationalisierte Inhalte für mehrsprachige Kommunikation
Review-Prozess für Dokumente und E-Mails
Ein optionaler Review-Prozess ergänzt sowohl Dokument- als auch E-Mail-Vorlagen um das Feld Review Condition / Freigabe-Bedingung. Standardwert ist false; Sie können dort mit der Symfony Expression Language jede Bedingung hinterlegen, die zBsp. auch für Group Conditions zulässig ist.
- Aktivierung: Liefert die Review Condition bei der Auswertung der Rendering-Daten
true, wird das Dokument oder die E-Mail zwar gerendert, aber noch nicht versendet oder an Webhooks ausgeliefert. - Dashboard-Hinweis: Im Dashboard des Backends erscheint dann eine Meldung, die direkt in die Liste „Review erforderlich“ führt. Dort sehen Sie Identifier, Mandant/SubClient, Priorität und Zeitstempel der angehaltenen Renderings.
- manuelle Review-Entscheidung im Backend:
- Freigeben löst unmittelbar alle ursprünglich zugeordneten Webhooks in der hinterlegten Priorität aus; E-Mails verlassen die Queue und werden versendet.
- Ablehnen überspringt sämtliche Versandprozesse. Das Rendering wechselt ohne weitere Aktionen in den Status
done, bleibt aber auditierbar dokumentiert.
Mit dieser Review-Schicht lassen sich Vier-Augen-Prüfungen, manuelle Stichproben oder regulatorische Freigaben in bestehenden Workflows verankern, ohne zusätzliche Templates oder Mandantenduplikate verwalten zu müssen.
Webhooks
Webhooks sind leistungsstarke Integrationspunkte, die Output.Rocks mit Ihren bestehenden Systemen und Diensten verbinden. Mit über 30 vordefinierten Webhook-Typen bietet Output.Rocks Integrationen für diverse Anwendungsfälle – von Cloud-Speicher-Uploads (DropBox, SharePoint, SFTP und Druckserver) über Branchenlösungen (Powercloud, Chargecloud) bis hin zu Workflow-Automatisierungen (N8N).
Webhook-Zuordnung über Rendering Requests
Der Render-Request erhält den Webhook als identifier oder group identifier über den API-POST: Dort wird das Feld "webhook": "webhook-identifier" gesetzt. Nur wenn ein solcher webhook-identifier vorhanden ist, lädt Output.Rocks die passenden aktiven Webhook-Entities (inklusive Client-/SubClient-/Typfilter) und prüft deren Bedingungen und die daraus entstehende Liste steuert Render- und E-Mail-Prozesse.
Ohne so übergebenen Identifier bleibt die Liste der zu überprüfenden Webhooks leer, es existiert kein globales Testen aller im System hinterlegten Webhooks.
Jeder Webhook-Typ ist für spezifische Ereignisse optimiert, wie Dokumentengenerierung, E-Mail-Versand, Fehlerbehandlung oder Nutzerinteraktionen, und ermöglicht so eine nahtlose Kommunikation zwischen Systemen ohne manuelles Eingreifen.
Webhooks funktionieren nach dem Prinzip der asynchronen Kommunikation. Sobald ein bestimmtes Ereignis in Output.Rocks eintritt – wie die erfolgreiche Generierung eines Dokuments oder der Versand einer E-Mail – sendet das System automatisch eine POST-Anfrage an eine von Ihnen definierte URL.
Webhooks werden im Backend unter Integration -> Webhooks definiert und mit einem identifier versehen.
Ähnlich wie bei Vorlagen-Gruppen können auch Webhooks mit bedingter Logik konfiguriert werden. Jeder Webhook benötigt einen eindeutigen Identifier und kann optional mit einem Group Identifier versehen werden. Mehrere Webhooks mit demselben Group Identifier werden durch ihre Group Condition unterschieden. Diese Bedingungen werden in der Symfony Expression Language formuliert und greifen sowohl auf Daten im JSON-Payload (über data) als auch auf Metadaten (über metadata) zu.
Typische Webhook-Bedingungen (Group Conditions)
| Anwendungsfall | Bedingung |
|---|---|
| Nur für hochpreisige Rechnungen | data["invoice"]["balance"] > 1000 |
| Nur für bestimmte Dokumenttypen | metadata["type"] == "doc" |
Weitere Details zur Syntax finden Sie im Abschnitt Conditional Syntax für Validierungen.
Bei Webhooks können Sie sowohl auf die eigentlichen Daten über das data-Objekt als auch auf Metadaten über das metadata-Objekt zugreifen.
Verfügbare Webhook-Integrationen
Output.Rocks bietet eine umfangreiche Sammlung vorkonfigurierter Webhook-Integrationen, die Sie für verschiedene Anwendungsfälle nutzen können. Jede Integration bietet spezifische Konfigurationsmöglichkeiten, die auf den jeweiligen Anwendungsfall zugeschnitten sind.
| Integration | Aktionstypen | Anwendungsfall |
|---|---|---|
| DropBox | Document & E‑Mail Upload | Automatisches Hochladen von Dokumenten und E-Mails in DropBox nach der Generierung |
| SharePoint | Document & E‑Mail Upload | Automatisches Hochladen von Dokumenten und E-Mails in SharePoint nach der Generierung |
| SFTP | Document & E‑Mail Upload | Sicherer Dateitransfer von generierten Dokumenten und E-Mails auf SFTP-Server (z.Bsp. Druckserver) |
Jede Webhook-Integration bietet spezifische Konfigurationsmöglichkeiten, die auf den jeweiligen Anwendungsfall zugeschnitten sind. Je nach Integration können Parameter wie Authentifizierungsmethoden, Zielverzeichnisse, Callback-URLs, Fehlerbehandlung und Format der übertragenen Daten konfiguriert werden.
Unterschiedliche Trigger-Zeitpunkte im Renderprozess
Der RenderProcess kann Prerender-Webhooks ausführen, direkt nach Start und noch vor Validation/Rendering, oder als Post-render mit dem fertigen Dokument. Manche Webhooks können auch in E-Mail-Prozessen ausgelöst werden und triggern nach send_email bzw. vor dem endgültigen Status processed (inklusive delivered und bounced). Prioritäten bestimmen dabei immer die Reihenfolge.
Die Integration von Webhooks in Ihren Workflow bietet erhebliche Vorteile für die Automatisierung. Durch die Konfiguration von Webhook-Endpunkten in Ihrem System können Sie nahtlos Aktionen wie Versand oder Archivieren von E-Mails auslösen, das Aktualisieren von Kundendatensätzen, Folgeprozessen oder die Benachrichtigung relevanter Stakeholder, sobald ein Dokument erstellt oder andere Bedingungen erfüllt sind.
Beispiel: Credentials im E-Mail-Webhook einsetzen
Wenn E-Mails per Webhook (z.B. Mailgun, Powercloud Custom API oder interne REST-Endpunkte) zugestellt werden, können Sie die in Zugangsdaten gespeicherten Secrets direkt in den Request einbinden:
{
"config": {
"options": {
"headers": {
"Authorization": "Bearer <<credentials.mailgun_api_key>>"
},
"json": {
"recipient": "<<data.customer.email>>",
"template_id": "<<or.template.identifier>>"
}
}
}
}Der Authorization-Header greift auf das Credential mailgun_api_key zu, während andere Felder weiterhin Payload-Daten (data.*) oder App-Werte (or.*) nutzen. Dadurch bleiben API-Schlüssel zentral verwaltet und können rotiert werden, ohne dass einzelne Webhooks angepasst werden müssen.