Baptiste Fort

Baptiste Fort

Automate Quote Request Processing with Tally, Airtable, Slack, and Gmail

What if your quota 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

  1. Trigger from a Tally form using a webhook
  2. Extract and format the data
  3. Create a new record in Airtable
  4. Send a message to Slack
  5. Wait 5 minutes
  6. Send an email confirmation via Gmail

📥 Step 1 – Webhooks (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 records 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.

Do you want to automate your business?

Let's talk about your project