Sync new Typeform leads to Coda and alert Slack

By General Input

Every time someone fills out your Typeform, log the lead in your Coda table and ping the sales channel in Slack so reps see new inbound the second it lands.

Integrations

  • Typeform
  • Coda
  • Slack Bot

Type

Deterministic Code

Categories

  • Sales
  • Operations

Build a code workflow that captures new Typeform submissions, upserts them into a Coda leads table, and announces each new lead in our sales Slack channel. This is a deterministic, fixed-shape pipeline, not an agent.

Trigger: a webhook from Typeform. Typeform sends an outgoing webhook on every new form response, so the workflow's webhook URL should be registered against the form (via Typeform's Create or Update Webhook operation, or pasted into the form's Connect tab manually). The incoming payload includes form_response.answers (keyed by field id/ref), form_response.hidden (for UTM-style hidden fields), and form_response.submitted_at.

Step 1: Map the Typeform payload to a flat lead record. Pull out: name, email, company, use_case, source_utm (from hidden fields), and submitted_at. Use field ref where possible so the mapping survives Typeform field reorders. Lower-case and trim the email.

Step 2: Upsert the lead into our Coda leads table using Coda's Insert or Upsert Rows operation. Set keyColumns to the email column so re-submissions update the existing row instead of creating duplicates. Send each mapped field as a cell value keyed by the matching Coda column id. After the upsert, Coda returns 202 with a mutation requestId; poll mutationStatus until completed so we can grab the resulting row id (or build the Coda row deep link from docId, tableId, and the row id).

Step 3: Post a Slack alert to the sales channel (default #leads) using the Slack Bot Send a Message operation. Include a short summary: name, company, use case, and a link back to the Coda row. Keep it to a few lines so it's scannable in the channel. Use Slack mrkdwn (single asterisks for bold, <url|text> for links).

Inputs the user should configure when wiring this up: the Coda docId and leads tableId, the Coda column ids (or names) for email, name, company, use_case, source_utm, and submitted_at, and the Slack channel id (or name) for the alert.

Keep every step a named node with explicit field mapping. No agent reasoning is needed; the shape of the data is known.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them