What it does
- Reads every new Typeform submission the moment it lands, no manual exports.
- Scores the lead from 1 to 5 based on their answers and writes a clean row to your Excel Leads Master table, with a separate Cold tab for low-fit leads.
- Creates a HubSpot contact with the right lifecycle stage, and skips duplicates if the email already exists in your CRM.
- Posts a one-line summary in your sales Slack channel with a direct link to the new HubSpot record.
The prompt
Paste it into a new chat in General Input, and a specialist builds it with you.
I want an agent workflow that captures and routes every inbound lead from my Typeform survey into Excel, HubSpot, and Slack.
Trigger: a webhook from Typeform that fires when a new response is submitted to my lead-capture form.
When a submission comes in, the agent should:
1. Call Typeform "Retrieve Responses" to pull the full payload for the new submission so it has every answer, not just the webhook preview.
2. Reason about the answers and extract: the lead's full name, company, work email, a short summary of their intent or use case, and a simple fit score from 1 to 5. Start with this rubric and let me tune it: 5 = enterprise title plus stated budget plus clear use case, 3 to 4 = mid-market or a clear pain but no budget yet, 1 to 2 = student, personal use, competitor, or obvious spam.
3. Call HubSpot "Search Contacts" by the parsed email to check whether this person already exists in my CRM. If a contact is found, skip the HubSpot create step entirely but still log the new submission to Excel and still post to Slack with a note that this is a returning lead.
4. Call Microsoft Excel "Add Table Row" to append a normalized row to my workbook. If the fit score is 3, 4, or 5 the row goes to the "Leads Master" table on the main tab. If the score is 1 or 2 the row goes to the "Cold" tab instead. Columns to populate: date submitted, source (always "Typeform" plus the form name), full name, company, email, intent summary, fit score, and a link back to the raw Typeform response.
5. If the HubSpot search in step 3 did not find a contact, call HubSpot "Create Contact" with the parsed fields. Set the lifecycle stage based on score: 5 = Sales Qualified Lead, 3 to 4 = Marketing Qualified Lead, 1 to 2 = Subscriber. Include the intent summary in a notes or message-to-sales property.
6. Call Slack "Send a Message" to my #sales channel with a one-line summary of the lead. Format: "New lead: {name} at {company}, score {score}/5, {one-sentence intent}." Include a link to the HubSpot contact record (or a note that the contact was already in HubSpot) and a link to the row in Excel if easy to construct.
Nuance and edge cases to handle:
- If the email is missing or obviously fake (free-mail with a junk pattern, no @ sign, role addresses like info@), still log to the Cold tab in Excel but skip HubSpot and post a lower-priority Slack message.
- If any single step fails (HubSpot rate-limited, Excel table not found, Slack channel archived), continue with the remaining steps and include the failure in the Slack message so I know what to retry manually.
- Keep the Slack message short. Do not paste the full Typeform payload.
What you'll need
- A Typeform account with the lead-capture form you want to route.
- A Microsoft 365 login with edit access to the Excel workbook holding your Leads Master table.
- A HubSpot account where new contacts should be created.
- A Slack workspace and the channel where the sales team wants pings.
Make it yours
- Change the scoring rubric. Tell the agent how to weight job title, company size, intent, or any custom Typeform question.
- Swap which workbook tab gets the Cold leads, or split into more buckets like Hot, Warm, and Cold.
- Pick a different Slack channel, change the message format, or only notify when the score is 4 or higher.
- Adjust the HubSpot lifecycle stage mapping, for example send 5s straight to Sales Qualified Lead.