Workflows
Triggers & nodes
The full node palette available to workflow authors, and how to extend it.
Triggers
submission.created— fires once per new response.submission.updated— fires when a submission is edited.schedule— cron-like scheduled runs.webhook— external service posts JSON to a unique URL.
Built-in nodes
email— transactional email via SMTP or SES.slack— post to a channel or DM.http— call an arbitrary HTTP endpoint.approval— block until a reviewer decides.branch— conditional routing based on data.delay— wait N seconds/minutes/hours/days.esign— request a signed document.google_sheets_append— append a row to a Google Sheet using a connected Google account (per-user OAuth, drive.file + spreadsheets scopes only).google_drive_upload— upload an uploaded file to a Google Drive folder (drive.file scope only).
Google nodes require a one-time OAuth connection at /api/integrations/google/connect?bundle=sheets (or bundle=drive). Tokens are AES-GCM-encrypted at rest and never leave the server. Sheet writes use valueInputOption=RAW so respondent text is never interpreted as a formula.
Custom nodes
On self-hosted deployments you can register your own nodes by implementing the WorkflowNode interface and dropping it into the nodes/ directory.