What you’ll build
Outcome: Every submission is stored with a timestamp. Once per day, stakeholders receive an HTML email listing new leads or tickets.Prerequisites
- project_contributor in your workspace
- Postgres connection with INSERT and SELECT on a
form_submissionstable - Resend connection with a verified sending domain
- An LLM provider configured in Providers (for the digest narrative)
- Inbound webhook feature enabled for your environment
Create the table
Run once against your database:Connectors to install
Part 1 — Ingest submissions
Add validate step
Add a lua_script step that requires
email and normalizes input from the webhook body.Create webhook subscription
Link an inbound webhook subscription to this workflow. Configure your form tool (Typeform, Webflow, custom app) to POST JSON to the subscription URL.
Validate step
Insert step
Webhook payload example
Your form should POST fields that map to workflowinput:
Part 2 — Daily digest email
Create a second workflowform-daily-digest (or branch on input.digest in one graph).
Summarize with LLM
llm_call with a prompt that includes
{{steps.query-submissions.result.rows}} and asks for a short HTML bullet list.Schedule externally
Use GitHub Actions, cron, or your cloud scheduler to POST to the digest webhook URL once per day (see Workflow patterns).
Query step
LLM step
Send step
Full workflow graphs (copy-paste)
Bind yourpostgres and resend MCP instances on each mcp_call step in Workflow Studio.
Ingest workflow (form-submission-ingest)
Digest workflow (form-daily-digest)
Idempotency
Form providers may retry webhooks. Options:- Add a unique
submission_idcolumn and useON CONFLICT DO NOTHING - Check for duplicate email + timestamp in a Lua step before INSERT
Variations
- Swap Resend for Gmail if you prefer sending from a Google mailbox.
- Append rows to Google Sheets instead of Postgres for a no-DB setup.
- Add human_task approval before the digest sends on Mondays only.