Zum Hauptinhalt springen

Zapier

Die Formfeed-App für Zapier hat sechs Aktionen und einen Trigger. Sie ist in Zapiers App-Verzeichnis gelistet: Suchen Sie beim Hinzufügen eines Schritts zu einem Zap nach Formfeed. In der Formfeed-App zeigt Integrationen die Zap-Vorlagen für Formfeed und Ihre Zaps, ohne die App zu verlassen, sobald Sie Zapier anzeigen wählen; das lädt Zapiers eigene Seite in die App und gibt Zapier Ihren Namen und Ihre E-Mail-Adresse, damit es Ihnen in einem Schritt ein Zapier-Konto anlegen kann.

Im Verzeichnis stehen auch Zap-Vorlagen für Google Forms, Typeform, Google Sheets, Google Drive, Stripe und Slack. Wer mit einer davon beginnt, hat den Trigger und den Formfeed-Schritt schon beisammen: Sie verbinden die beiden Konten, wählen Ihre eigene Vorlage, und der Zap steht.

Zapier selbst ist englischsprachig; Aktionen und Felder heißen deshalb hier so, wie Zapier sie anzeigt.

Verbinden​

Legen Sie eine Formfeed-Verbindung an und fügen Sie einen API-Schlüssel aus der App ein (API-Schlüssel). Die Vorgabe-Scopes eines neuen Schlüssels (render:create, render:read, template:read, account:read) decken den Verbindungstest, die Vorlagenliste und alle Render-Aktionen ab; kreuzen Sie zusätzlich file:write und webhook:manage an, wenn Sie Upload File oder den Trigger nutzen. Was jeder Schritt braucht:

ScopeNötig für
account:readden Verbindungstest, der GET /account liest (ein Vorgabe-Scope)
template:readdie Vorlagenliste und die Felder einer Vorlage (ein Vorgabe-Scope)
render:createdie drei Create Document-Aktionen, Create E-Invoice und Convert Document to PDF (ein Vorgabe-Scope)
file:writeUpload File
webhook:manageden Trigger Render Completed, der einen Webhook registriert

Ein ff_test_-Schlüssel rendert kostenlos (im Free-Plan mit Wasserzeichen), genau richtig beim Bauen eines Zaps; stellen Sie die Verbindung auf einen ff_live_-Schlüssel um, bevor der Zap scharf geht. Die Verbindung erscheint als Organisation / Workspace, mehrere Workspaces bleiben also unterscheidbar. Lassen Sie Region auf Europe (jeder Workspace liegt heute in der EU) und Custom API URL leer.

Aktionen​

AktionWas sie tut
Create DocumentRendert eine veröffentlichte Vorlage. Mit der Auswahl der Vorlage lädt Zapier deren Felder, Sie ordnen also invoice.number zu statt JSON zu schreiben, und eine Auswahl Version, wenn die Vorlage Release Channels hat. Word- und PowerPoint-Vorlagen rendern DOCX, PPTX oder PDF.
Create Document From HTMLRendert HTML, das früher im Zap gebaut wurde, in der Vorlagensprache Ihrer Wahl.
Create Document From URLRendert eine öffentliche Seite als PDF oder Bild.
Upload FileLegt ein Bild oder PDF aus einem vorherigen Schritt in der Dateibibliothek ab, wo Vorlagen es mit asset() verwenden. Derselbe Name ersetzt die Datei.
Convert Document to PDFWandelt eine Word-, Excel-, PowerPoint-, OpenDocument- oder RTF-Datei aus einem vorherigen Schritt (bis 20 MB, wird nicht gespeichert) oder das Rendering einer Word- oder PowerPoint-Vorlage anhand seiner ID in ein PDF um. Ab dem Starter-Tarif.
Create E-InvoiceRendert eine ZUGFeRD- / Factur-X-E-Rechnung aus Feldern für die Rechnung selbst, geprüft, bevor sie ausgeliefert wird. Siehe unten. Ab dem Starter-Tarif.

Die Felder der Aktionen:

AktionFelder
Create DocumentTemplate (Pflicht), dann die eigenen Felder der Vorlage und Version; Output (leer: das Format der Vorlage, PDF bei einer PDF-Vorlage, ihr Bildformat bei einer Bildvorlage, ihre Vorgabe bei einer Word- oder PowerPoint-Vorlage), File name, Locale (etwa de-DE, ersetzt das der Vorlage), Data (JSON)
Create Document From HTMLHTML (Pflicht), Template language (Jinja2, die Vorgabe, Liquid oder Handlebars), Output (PDF, die Vorgabe, PNG, JPG oder WebP), File name, Data (JSON), Settings (JSON) (Papier, Ränder, Kopf- und Fußzeile, wie unter Einstellungen pro Anfrage überschreiben)
Create Document From URLURL (Pflicht, eine öffentliche Seite), Output (PDF, die Vorgabe, PNG, JPG oder WebP), File name, Settings (JSON)
Upload FileFile (Pflicht: PNG, JPEG, WebP, GIF, SVG, AVIF oder PDF, bis 10 MB), Name in library (der Name, den Vorlagen mit asset() verwenden, etwa brand/logo.png; leer der eigene Name der Datei)
Convert Document to PDFFile (DOCX, XLSX, PPTX, ODT, ODS, ODP, DOC, XLS, PPT oder RTF) oder Render ID (rnd_… eines Renderings mit Ausgabe DOCX oder PPTX), genau eines von beiden; Page ranges (etwa 1-3,5, leer alle), Landscape und One page per sheet (für Tabellen und Dokumente ohne eigenes Seiten-Setup), File name (leer der eigene Name der Datei mit .pdf)

Die Liste Template zeigt die Vorlagen des Workspace mit Name und Art, bis zu 100, auch unveröffentlichte; rendern lassen sich nur veröffentlichte, eine unveröffentlichte scheitert mit template_not_found. Ihre Felder kommen aus dem Datenschema der Vorlage oder, wenn sie keines hat, aus ihren Beispieldaten. Verschachtelte Objekte werden zu Namen mit Punkt (invoice.number); Listen stehen nicht unter den Feldern und gehören in Data (JSON).

Jede Create Document-Aktion liefert das Rendering zurück: id, status, download_url, page_count und units. Ordnen Sie Download Url dem nächsten Schritt zu: Dateifelder in Zapier (Attachments bei Gmail, File bei Google Drive) nehmen eine URL und holen das Dokument selbst. Kopieren Sie die Datei, statt den Link zu speichern: Ein Download-Link gilt höchstens sieben Tage, die Datei selbst nur für die Aufbewahrungsfrist des Workspace (im Free-Plan ein Tag, bei einem Test-Schlüssel höchstens 24 Stunden). Ein Rendering, das länger als eine Minute dauert, läuft im Hintergrund weiter; die Aktion gibt es dann mit status: queued und ohne Download-URL zurück, und der Trigger erhält es, wenn es fertig ist.

Listen (Rechnungspositionen, Tabellenzeilen) kommen in das Feld Data (JSON), das Wert für Wert über die zugeordneten Felder gelegt wird: Ein Objekt im JSON ergänzt die zugeordneten Felder an derselben Stelle, ein Wert ersetzt den zugeordneten, und eine Liste ersetzt die ganze Liste. Meist baut ein Looping-by-Zapier- oder Code-Schritt dieses Array.

E-Rechnungen​

Create E-Invoice erzeugt eine ZUGFeRD- / Factur-X-E-Rechnung: ein PDF/A-3, das die Rechnung als XML trägt und vom Validator geprüft ist, bevor der Zap es erhält. Statt der Felder einer Vorlage fragt die Aktion die Rechnung selbst ab, in Gruppen: die Rechnung (Nummer, Rechnungsdatum, Währung, Dokumentart, Referenzen), Verkäufer und Käufer, die Positionen und die Aufschlüsselung der Umsatzsteuer, die fünf Summen und die Zahlung. Positionen und Aufschlüsselung sind Line Items, ein Trigger mit Line Items (eine Rechnung aus Ihrem Shop oder Ihrer Buchhaltung) wird also Zeile für Zeile zugeordnet. Die Aktion sendet alles als _invoice-Block, und die Vorlage druckt denselben Block, sodass jeder Wert nur einmal zugeordnet wird. Das Beispiel „E-Rechnung“ der Galerie in der App ist eine solche Vorlage.

Berechnet wird nichts: Summen und Aufschlüsselung sind die, die Ihr System angibt, und eine Rechnung, deren Summen nicht auf den Cent aufgehen, wird abgelehnt. Der Fehler des Zaps nennt dann jedes Feld mit der Regel, die es verletzt, etwa _invoice.totals.due: … (BR-CO-16). Was die Felder nicht anbieten (die Rechnung, auf die sich eine Gutschrift bezieht, Nachlässe und Zuschläge, die Lieferung, ein Lastschriftmandat, die Pflichtangaben französischer Rechnungen), gehört mit den Namen der Feldreferenz in Invoice (JSON) und wird über die Felder gelegt. Die Optionen wählen das Profil (EN 16931 oder Basic), den Namen der Spezifikation (Factur-X oder ZUGFeRD; die Datei ist dieselbe), ob das XML zusätzlich als eigene Datei gespeichert wird und ob ein Wert, den das PDF nicht zeigt, das Rendering scheitern lässt, statt gemeldet zu werden.

Die Aktion liefert das Rendering mit dem Bericht des Validators als einvoice; E-invoice valid, Rules checked, PDF/A level, XML URL und die beiden SHA-256-Felder lassen sich dem nächsten Schritt zuordnen. Live-E-Rechnungen setzen den Starter-Tarif oder höher voraus; ein Test-Schlüssel erzeugt eine begrenzte Zahl am Tag, jede mit der Testmarkierung (siehe Tarife und Einheiten).

Trigger​

Render Completed abonniert die Webhooks des Workspace. Wählen Sie die Ereignisse, die Sie brauchen: render.completed (die Vorgabe), render.failed, job.completed, job.failed, quota.warning, quota.exceeded. Zapier registriert den Endpunkt beim Einschalten des Zaps und entfernt ihn beim Ausschalten, es bleibt also nichts zurück; solange es ihn gibt, steht er in der App unter Webhooks als Zapier.

Der Trigger löst für jedes Rendering des Workspace aus, für Live- wie für Test-Schlüssel, nicht nur für die aus einem Zap: Batches aus der App, API-Aufrufe Ihres Backends und Renderings, die länger als das synchrone Limit brauchten (die Aktion gibt sie dann mit status: queued zurück), kommen alle hier an. Seine Felder sind Render ID, Event Type, Status, Output Format, Download URL, Page Count, Template, Error Code, Error Title, Error Detail und, bei einem Batch, Batch ZIP URL.

Ein Zap braucht nach dem Trigger mindestens eine echte Aktion; Formatter-, Filter- und Delay-Schritte allein zählen nicht. Setzen Sie keine Formfeed-Aktion Create Document in einen Zap, der auf render.completed auslöst: Jedes Rendering würde den Zap erneut starten.

Beispiel-Zaps​

Der kostenlose Zapier-Plan führt Zaps mit zwei Schritten aus; ein Beispiel mit einem dritten Schritt braucht einen bezahlten Zapier-Plan. Bauen Sie die Vorlage zuerst in der Formfeed-App und veröffentlichen Sie sie: Create Document listet auch unveröffentlichte Vorlagen, rendert aber nur veröffentlichte.

Die meisten davon gibt es als veröffentlichte Zap-Vorlage: Öffnen Sie sie im App-Verzeichnis oder unter Integrationen in der Formfeed-App, dann stehen die Schritte bereits. Die Felder stehen hier trotzdem, denn eine Vorlage kann nicht wissen, was Ihre eigene Vorlage erwartet.

Ein Zertifikat für jede Formularantwort verschicken​

Eine Teilnehmerin schickt ein Formular ab und bekommt ihr Zertifikat per E-Mail.

  1. Trigger: Google Forms → New Form Response (Typeform → New Entry funktioniert genauso).

  2. Aktion: Formfeed → Create Document

    FeldWert
    TemplateIhre Zertifikatsvorlage, etwa Zertifikat (pdf)
    nameFull name aus Schritt 1
    courseCourse aus Schritt 1
    dateTimestamp aus Schritt 1
    File namezertifikat-, gefolgt von Full name aus Schritt 1
  3. Aktion: Gmail → Send Email: To ist die Antwort Email aus Schritt 1, Attachments ist Download Url aus Schritt 2.

Die Vorlage liest die Felder als {{ name }}, {{ course }} und {{ date | date('dd.MM.yyyy') }}. Google Forms schickt den Zeitstempel als Text wie 9/16/2026 10:15:00; setzen Sie vor den Formfeed-Schritt einen Schritt Formatter by Zapier → Date / Time → Format mit dem Ausgabeformat YYYY-MM-DD und ordnen Sie dessen Ergebnis date zu.

Aus einer Tabellenzeile eine Rechnung in Google Drive machen​

Jede neue Zeile der Tabelle wird zu einem PDF in einem Drive-Ordner.

  1. Trigger: Google Sheets → New Spreadsheet Row, mit den Spalten number, customer, street, city, amount.

  2. Aktion: Formfeed → Create Document, Vorlage Rechnung; ordnen Sie die Spalten den Feldern der Vorlage zu (invoice.number, customer.name, …). Die Positionen kommen in Data (JSON), in der Form, über die Ihre Vorlage iteriert, zum Beispiel:

    {
    "items": [{ "description": "Beratung", "quantity": 1, "unit_price": 450 }]
    }
  3. Aktion: Google Drive → Upload File: File ist Download Url aus Schritt 2, File Name ist Rechnung , gefolgt von number aus Schritt 1.

HTML ohne gespeicherte Vorlage rendern​

Wenn ein früherer Schritt den Text schon liefert, rendern Sie ihn direkt.

  1. Trigger: beliebige App, etwa Schedule by Zapier → Every Week.

  2. Aktion: Formfeed → Create Document From HTML

    FeldWert
    HTML<h1>Wochenbericht für {{ team }}</h1><p>{{ summary }}</p>
    Template languageJinja2
    OutputPDF
    Data (JSON){"team": "Fennlor Studio", "summary": "Alle Systeme laufen."}
    Settings (JSON){"paper": {"format": "A4"}, "margin": {"top": "20mm", "bottom": "20mm"}}

    Ordnen Sie statt des festen Texts Werte aus früheren Schritten in das JSON ein.

  3. Aktion: Email by Zapier → Send Outbound Email mit Download Url im Text.

Zapier lässt {{ }} in einem Feld unverändert, die Vorlagensyntax kommt also so bei Formfeed an.

Das Logo in der Dateibibliothek aktuell halten​

  1. Trigger: Google Drive → New File in Folder, der Ordner, in dem Ihr Design-Team Markendateien ablegt.
  2. Aktion: Formfeed → Upload File: File ist die Datei aus Schritt 1, Name in library brand/logo.png.

Jede Vorlage mit <img src="{{ asset('brand/logo.png') }}" alt=""> zeigt ab dem nächsten Rendering das neue Logo.

Eine Slack-Nachricht, wenn ein Rendering fehlschlägt​

  1. Trigger: Formfeed → Render Completed, Events auf Render failed und Batch failed.
  2. Aktion: Slack → Send Channel Message, mit dem Text Rendering fehlgeschlagen:, gefolgt von Render ID und Error Detail aus Schritt 1. error ist das Problem des Renderings, daher stehen auch Error Title und Error Code zur Auswahl.

Das erfasst auch Renderings aus der App und der API und ist damit ein einfacher Alarm für eine Backend-Integration.