Send Typeform leads to Systeme.io and log them in Google Sheets

By General Input

Every Typeform submission becomes a tagged Systeme.io contact and a new row in your lead log. No copy-paste, no missed leads.

Integrations

  • Typeform
  • Systeme.io
  • Google Sheets

Type

Deterministic Code

Categories

  • Marketing
  • Sales

Build a deterministic code workflow that captures new Typeform lead submissions into Systeme.io and logs them to Google Sheets. No reasoning, no drafting. Every step is structured CRUD.

Trigger: Typeform webhook for new form responses on my lead form. Use Typeform's standard new-response webhook payload. The form id and the human-readable form name should be configurable inputs so I can reuse this workflow per form.

Step 1: Parse the Typeform payload. Pull the submitter's email, first_name, last_name, the submission timestamp, the form name, and any hidden fields for utm_source, utm_medium, utm_campaign, utm_content, utm_term, and referrer. If first_name or last_name are not present as their own answers, fall back to splitting a single "full name" answer on the first space.

Step 2: Call Systeme.io Create Contact with the email. Pass first_name and last_name through the contact's fields array using the built-in slugs (first_name, last_name). If Systeme.io returns a conflict because the email already exists, look the contact up by email and use that existing contact id. Either way, end this step with a contact id.

Step 3: Resolve the tag id for the form. Call Systeme.io List Tags with a name filter equal to the configured form-name tag. If it exists, use that tag id. If it does not, call Systeme.io Create Tag with that name and use the new tag id. Then call Systeme.io Add Tag to Contact with the contact id and the tag id so any downstream Systeme.io automation tied to that tag fires.

Step 4: Call Google Sheets Append Values on the configured spreadsheet and tab (default range: the lead log tab, columns A:K). Append one row with: submission timestamp, email, first name, last name, form name, utm_source, utm_medium, utm_campaign, utm_content, utm_term, referrer. Use USER_ENTERED so the timestamp formats as a date. Leave a UTM cell blank if Typeform did not pass that field.

Inputs the user should configure: Typeform form id, form-name tag (the label used both in Systeme.io and written into the sheet), Systeme.io API credential, Google Sheets spreadsheet id, and the tab name for the lead log. Everything else flows through from the webhook payload.

Keep it strictly deterministic. No LLM steps. Run the chain end to end in one webhook firing. If Systeme.io returns a 429, retry the failing call with backoff using the Retry-After header. If Google Sheets returns a 429 or 503, retry with exponential backoff.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to LoopsTurn the people who engage with your posts into Pipedrive leads