π£ Automate quote request processing with Tally, Airtable, Slack, and Gmail
β‘ 906 views Β· π£ Lead Generation & Enrichment
Description
What if your quote requests managed themselves?
Every quote request is a potential deal β but only if itβs handled quickly, properly, and without things falling through the cracks. What if instead of copy-pasting emails and pinging teammates manually, your entire process justβ¦ ran itself?
This automation makes it happen: it captures form submissions, notifies your sales team on Slack, stores leads in Airtable, and sends an email confirmation to the client β all in one seamless n8n flow.
βοΈ Tools used
- Tally β to collect client quote requests
- n8n β to automate everything, no code needed
- Airtable β to store leads and track status
- Slack β to instantly notify your sales team
- Gmail β to confirm the request with the client
π§© Flow structure overview
- Trigger from a Tally form using a webhook
- Extract and format the data
- Create a new record in Airtable
- Send a message to Slack
- Wait 5 minutes
- Send an email confirmation via Gmail
π₯ Step 1 β Webhook (Tally)
This node listens for incoming quote requests from the Tally form.
- HTTP Method: POST
- Path: /Request a Quote
- Authentication: None
- Respond: Immediately
The data arrives as an array inside body.data.fields. Each field has a label and a value that weβll need to map manually.
π§Ή Step 2 β Edit Fields (Set)
This step extracts usable values from the raw form data.
Example mapping:
Name = {{ $json.body.data.fields[0].label }}
Email Address = {{ $json.body.data.fields[1].value }}
Type of Service Needed = {{ $json.body.data.fields[2].value }}
Estimated Budget = {{ $json.body.data.fields[3].value }}
Preferred Timeline = {{ $json.body.data.fields[4].value }}
Additional Details or Questions = {{ $json.body.data.fields[5].value }}
π Step 3 β Create record in Airtable
We send the cleaned fields into a database (CRM) in Airtable.
- Operation: Create
- Base & Table: Request a Quote - Airtable Base
- Mapping: Manual field-to-column matching
Each quote submission becomes a new record with all project details.
π£ Step 4 β Send a message to Slack
This node notifies your sales team immediately in a Slack channel.
Message format:
:new: *New quote request received!*
π€ Name: {{ $json.fields.Name }}
π§ Email: {{ $json.fields.Email }}
πΌ Service: {{ $json.fields["Type of Service"] }}
π° Budget: {{ $json.fields["Estimated Budget (β¬)"] }}
β±οΈ Timeline: {{ $json.fields["Preferred Timeline"] }}
π Notes: {{ $json.fields["Additional Details"] }}
β³ Step 5 β Wait 5 minutes
This node simply delays the email by 5 minutes. Why? To give a human salesperson time to reach out manually before the automated confirmation goes out. It adds a personal buffer.
π§ Step 6 β Send confirmation via Gmail
- To: {{ $(βEdit Fieldsβ).item.json[βEmail Addressβ] }}
- Subject: Thanks for your quote request π
- Email Type: HTML
Message body:
Hi {{ $('Edit Fields').item.json.Name }},
Thanks a lot for your quote request β weβve received your information!
Our team will get back to you within the next 24 hours to discuss your project.
Talk soon,
β The WebExperts Team
β Final result
With this automation in place:
- The client feels acknowledged and taken seriously
- Your team gets notified in real time
- You store everything in a clean, structured database
All this without writing a single line of backend code. Itβs fast, scalable, and business-ready.
π Nodes Used
Airtable, Slack, Webhook, Gmail
π₯ Import
Download workflow.json and import into n8n:
Workflow menu β Import from File