Before you start: you’ll need a form on your site and a CRM pipeline with at least one stage. See Manage CRM Contacts if you haven’t set up your pipeline yet.
The Flow at a Glance
1. Webhook trigger
Receives form submissions
2. Create contact
Add to CRM with tags
3. Notify (optional)
Slack, email, or sequence
Step 1: Create the Workflow
Start a new workflow
Go to Workflows > New Workflow. Name it something obvious like
Website Form → CRM.Add a Webhook trigger
Click Add Trigger > Webhook. Copy the generated URL and wire it to your form’s submit handler. Details in the Slack notifications recipe if you need a code example.
Add a Create CRM Contact action
Click + Add Action > Create CRM Contact. Fill in the field mappings:
- Name:
{{trigger.name}} - Email:
{{trigger.email}} - Phone:
{{trigger.phone}} - Tags:
website-lead,{{trigger.source || 'homepage-form'}} - Stage:
New(or your initial pipeline stage)
Template Shortcut
If you want the whole flow (webhook + CRM + Slack + email sequence) in one click, start from a template instead: Workflows > New > Form Lead → CRM + Notifications It ships with sensible defaults; you just swap in your Slack URL and CRM stage.Adding Optional Steps
Notify the Team
Add a second action after the CRM step — either an HTTP Request to a Slack webhook (see the Slack recipe) or a Send Email action to alert sales@ your company.Start an Email Sequence
Add a Start Email Sequence action and pick the sequence (e.g., your 5-day welcome drip). The new contact is enrolled automatically. See Cold Email for sequence setup.Assign to a Rep
If your pipeline uses round-robin assignment, add an Assign Contact action and either pick a specific rep or use{{round_robin}} to rotate.
Handling Duplicates
By default the Create CRM Contact action creates a new row every time. If a visitor fills out two forms, you’ll end up with two contacts — not ideal. Add a conditional check before the create action:Add a Find Contact step
Between the trigger and the create action, add Find CRM Contact by Email with
{{trigger.email}}.Add a Conditional
Branch on whether the contact was found:
- Found: use Update Contact to append tags (keeps existing data)
- Not found: use Create Contact as above
Test It
Submit with test data
Use a recognizable test email like
abe+test-1@example.com so you can find and delete it later.Check the CRM
Go to CRM > Contacts. The new contact should appear at the top of the list, with
website-lead and your source tag applied.Check tags and stage
Click the contact. Verify the stage is set correctly and all expected tags are present.
Troubleshooting
Contact never appears in the CRM
Contact never appears in the CRM
Open the workflow’s Runs tab. If there are no runs, the trigger isn’t firing — check your form’s webhook URL. If runs exist but fail at the Create Contact step, the error message usually names the bad field (e.g.,
email required). Map it in the action and save.Duplicate contacts on repeat submissions
Duplicate contacts on repeat submissions
Add the Find-then-branch pattern above. Without it, every submission creates a new row. For existing duplicates, CRM > Contacts > Merge Duplicates will clean them up.
Tags aren't applied
Tags aren't applied
Spam submissions are filling the CRM
Spam submissions are filling the CRM
Two defenses: add a honeypot field to your form (a hidden input that real users won’t fill; if filled, reject), and add a Conditional step in the workflow that skips contacts where email contains suspicious patterns (gibberish, multiple + signs, etc.).
Email sequence doesn't kick off
Email sequence doesn't kick off
The Start Email Sequence action only fires if the contact has a valid email and hasn’t already been enrolled in that sequence. Check the contact’s activity log — there should be an
enrolled event. If not, the sequence might be paused — see Cold Email.What’s Next?
Slack Notifications
Add real-time pings to this same workflow
Cold Email Sequences
Enroll new leads into a nurture drip
CRM Contacts
Manage pipeline stages, tags, and filters