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.