WhatsApp + Airtable proposals sent as branded PDFs
Prospects ask for a quote on WhatsApp, and suddenly you’re digging through old proposals, copying prices, and rewriting the same “here’s what we recommend” message. It’s slow. Worse, it’s inconsistent.
This WhatsApp Airtable proposals flow hits sales reps first, but agency owners and consultants feel it too. You will reply faster, keep your pricing tidy, and send a polished PDF without rebuilding it from scratch each time.
Below you’ll see how the automation turns a WhatsApp text or voice note into a branded proposal, which gets sent back automatically. Then you’ll learn what you need to run it, what to customize, and the common places it can break.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: WhatsApp + Airtable proposals sent as branded PDFs
flowchart LR
subgraph sg0["WhatsApp Flow"]
direction LR
n0@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/whatsapp.svg' width='40' height='40' /></div><br/>WhatsApp Trigger"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP Request"]
n4@{ icon: "mdi:robot", form: "rounded", label: "OpenAI", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields1", pos: "b", h: 48 }
n8@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/whatsapp.svg' width='40' height='40' /></div><br/>WhatsApp Business Cloud"]
n10@{ icon: "mdi:wrench", form: "rounded", label: "Calculator", pos: "b", h: 48 }
n11@{ icon: "mdi:database", form: "rounded", label: "Get Info", pos: "b", h: 48 }
n12@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/apiTemplateIo.svg' width='40' height='40' /></div><br/>APITemplate.io"]
n14["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/whatsapp.svg' width='40' height='40' /></div><br/>WhatsApp Business Cloud2"]
n4 --> n7
n2 --> n9
n2 --> n5
n12 --> n13
n11 -.-> n12
n6 --> n2
n10 -.-> n12
n5 --> n7
n7 --> n12
n3 --> n4
n8 -.-> n12
n13 --> n14
n1 --> n6
n0 -.-> n12
n9 --> n3
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n1 trigger
class n4,n12 ai
class n0 aiModel
class n10 ai
class n8 ai
class n2 decision
class n11 database
class n3,n13 api
classDef customIcon fill:none,stroke:none
class n1,n3,n9,n13,n14 customIcon
The Problem: Quotes Get Stuck in “Manual Mode”
WhatsApp is where deals start, but it’s also where momentum dies. A prospect sends a voice note with real intent, and you can’t respond in the moment because you still need to transcribe it, figure out what they actually want, hunt down the right service package, and format something that looks professional. By the time you send a PDF, the lead is colder, the details are fuzzy, and you’ve probably under- or over-quoted because you were rushing. And honestly, “I’ll send something later today” is the fastest way to lose urgency.
The friction compounds. Here’s where it breaks down most often.
- You retype the same information from voice notes, which invites errors and missed requirements.
- Service packages live in someone’s head or a messy spreadsheet, so pricing changes don’t propagate.
- Branding is inconsistent because the “latest template” is never actually the latest template.
- Follow-up links (payment, booking, intake forms) get forgotten, so prospects stall even when they’re ready.
The Solution: WhatsApp In, Branded PDF Out
This workflow listens for new inbound WhatsApp messages via the WhatsApp Business Cloud trigger. If the message is a voice note, it fetches the media and transcribes it using OpenAI (Whisper). If it’s text, it maps the payload cleanly. Then an AI agent extracts the specifics that matter for a proposal: who the prospect is, what they need, any timeline or urgency, and useful context. With that clarified, the workflow pulls your available service packs from Airtable and matches the most relevant option to the prospect’s request. Finally, it fills your branded proposal template in APITEMPLATE, generates a PDF, and sends the document back through WhatsApp automatically.
The flow starts with a WhatsApp message and routes by message type (voice vs. text). AI turns raw conversation into structured fields, then Airtable supplies the “truth” on packages and links. APITEMPLATE produces a clean PDF, and WhatsApp sends it in the same chat thread where the prospect asked.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you get 10 WhatsApp quote requests a week, and half are voice notes. Manually, you might spend about 10 minutes to transcribe and interpret each voice note, then another 15 minutes pulling the right package from Airtable (or wherever it lives), formatting a PDF, and adding links. That’s roughly 25 minutes per request, or about 4 hours a week. With this workflow, you spend maybe 2 minutes confirming details if needed, while the automation handles transcription, package matching, and PDF creation in the background, then sends it back immediately.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- WhatsApp Business Cloud for inbound messages and sending PDFs.
- Airtable to store service packs, pricing, and links.
- OpenAI API key (create it in your OpenAI dashboard).
Skill level: Intermediate. You’ll connect accounts, set a webhook, and adjust a couple of prompts and template fields.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A prospect messages you on WhatsApp. The WhatsApp Business Cloud trigger receives the inbound message and passes it into n8n, including media details if it’s audio.
Voice notes get turned into text. The workflow looks up the media file, fetches it via HTTP, and runs transcription (Whisper) so you get clean text to work with.
AI extracts what matters and selects the best offer. A chat model and drafting agent pull out structured fields like need and urgency, then retrieve matching service packs from Airtable. A simple calculator tool can help with totals or package math when your template needs it.
A branded PDF is generated and sent back. APITEMPLATE fills your placeholders (name, price, booking link, payment link) and creates a PDF. The workflow sends the document through WhatsApp, so the prospect receives it right where they asked.
You can easily modify the Airtable service-pack matching to use categories, keywords, or deal size based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the WhatsApp Trigger
This workflow starts when a WhatsApp message arrives, so you’ll first configure the trigger that receives incoming messages.
- Add or open WhatsApp Incoming Hook and set Updates to
messages. - Credential Required: Connect your whatsAppTriggerApi credentials in WhatsApp Incoming Hook.
- Verify the webhook URL generated by WhatsApp Incoming Hook is registered in your WhatsApp provider.
Step 2: Split and Route Incoming Messages
Messages are split into items and routed by message type (audio vs text) before being processed.
- In Split Message Items, set Field To Split Out to
={{ $json.field }}. - Configure Route by Message Type with two rules: voice when
={{ $('WhatsApp Incoming Hook').item.json.messages[0].type }}equalsaudio, and text when it equalstext. - Confirm the execution flow: WhatsApp Incoming Hook → Split Message Items → Route by Message Type.
messages[0].type, the switch will not match any route. Validate your webhook sample payload first.Step 3: Handle Audio Messages and Transcription
Audio messages are fetched, downloaded, and transcribed before being transformed into proposal input text.
- Configure WhatsApp Media Lookup with Resource set to
media, Operation tomediaUrlGet, and Media Get ID to={{ $json.audio.id }}. - Credential Required: Connect your whatsAppApi credentials in WhatsApp Media Lookup.
- In External Media Fetch, set URL to
={{ $json.url }}and keep Authentication aspredefinedCredentialTypewith Credential TypewhatsAppApi. - Credential Required: Connect your whatsAppApi credentials in External Media Fetch.
- Configure Audio Transcription AI with Resource set to
audioand Operation set totranscribe. - Credential Required: Connect your openAiApi credentials in Audio Transcription AI.
- Confirm the flow for audio: Route by Message Type → WhatsApp Media Lookup → External Media Fetch → Audio Transcription AI → Prepare Message Kind.
Step 4: Map Text Messages and Normalize Input
Text messages are extracted and normalized so the proposal agent can use a consistent input format.
- In Map Text Payload, create a field named text with value
={{ $('WhatsApp Incoming Hook').item.json.messages[0].text.body }}. - In Prepare Message Kind, set the message_type field to
={{ $json.text }}. - Confirm the flow for text: Route by Message Type → Map Text Payload → Prepare Message Kind.
Step 5: Configure the AI Proposal Generation Stack
The proposal is generated by an AI agent with tools and memory. Ensure the language model and tool connections are properly configured.
- Open Proposal Drafting Agent and set Text to
={{ $json.message_type }}with Prompt Typedefine. - Connect GPT Chat Engine as the language model for Proposal Drafting Agent; Credential Required: Connect your openAiApi credentials in GPT Chat Engine.
- Attach Session Memory Buffer as memory with Session Key
={{ $('Prepare Message Kind').item.json.message_type }}and Session ID TypecustomKey. - Attach Retrieve Airtable Records as a tool for the agent with Operation
search, Return All set tofalse, Limit5, and Filter By Formula={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Filter_By_Formula', ``, 'string') }}. - Credential Required: Connect your airtableTokenApi credentials in Retrieve Airtable Records (credentials are added to the tool node, but it is used by Proposal Drafting Agent).
- Attach Math Helper Tool as a tool for Proposal Drafting Agent if calculations are needed (no credentials required).
Step 6: Generate the PDF and Send It Back via WhatsApp
The generated proposal JSON is sent to a PDF template service and delivered as a WhatsApp document.
- In PDF Template Generator, set Resource to
pdf, PDF Template ID to[YOUR_ID], JSON Parameters totrue, and Properties JSON to={{ $json.output }}. - Credential Required: Connect your apiTemplateIoApi credentials in PDF Template Generator.
- Configure WhatsApp Document Sender with Operation
send, Message Typedocument, Media Link={{ $json.download_url }}, and Phone Number ID={{ $('WhatsApp Incoming Hook').item.json.metadata.phone_number_id }}. - Set Recipient Phone Number to
[YOUR_ID]and customize the Media Caption and Media Filename as needed. - Credential Required: Connect your whatsAppApi credentials in WhatsApp Document Sender.
Step 7: Test and Activate Your Workflow
Run a controlled test to confirm each branch and delivery stage works, then activate the workflow for live usage.
- Click Execute Workflow and send a WhatsApp text message to verify the text path: WhatsApp Incoming Hook → Split Message Items → Route by Message Type → Map Text Payload → Prepare Message Kind → Proposal Drafting Agent → PDF Template Generator → WhatsApp Document Sender.
- Send a WhatsApp audio message to verify the audio path: WhatsApp Media Lookup → External Media Fetch → Audio Transcription AI → Prepare Message Kind → Proposal Drafting Agent.
- Confirm success when a PDF is generated and delivered to the recipient via WhatsApp with the configured caption and filename.
- When satisfied, toggle the workflow to Active for production use.
Common Gotchas
- WhatsApp Business Cloud credentials can expire or need specific permissions. If things break, check your Meta app settings and webhook subscription status first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- OpenAI prompts in AI nodes start generic. Bake in your brand voice and “how we price” rules early, or you’ll be cleaning up every draft.
Frequently Asked Questions
About 45–60 minutes if your accounts and template are ready.
No. You’ll mainly connect accounts, paste in API keys, and map a few fields. The “hard part” is deciding what your proposal should include.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API usage (often a few cents per transcription and draft) and your APITEMPLATE plan.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. Update the Airtable fields used by the Retrieve Airtable Records tool, then adjust the Proposal Drafting Agent instructions to match how you sell (tone, sections, and language). Many teams add optional upsells, a short “scope boundaries” paragraph, and a different template per service line in APITEMPLATE.
Usually it’s a webhook or token issue, not n8n. Check that your webhook URL is still reachable, that the correct WhatsApp events are subscribed in Meta, and that your access token hasn’t expired. If media downloads fail, confirm the media lookup call is returning a valid URL and that your HTTP Request node is allowed to fetch it.
A lot.
Often, yes, because this workflow isn’t just “send data from A to B.” You’re routing message types, fetching media, transcribing audio, running an agent, pulling records from Airtable, and generating a PDF, and that multi-step logic can get expensive or awkward in simpler tools. n8n also gives you the self-hosted option, which is handy if you expect higher volume. If you only need a basic “WhatsApp message → email me a note,” Zapier or Make might feel quicker. Talk to an automation expert if you want help picking the right stack.
This is what “fast follow-up” is supposed to look like: a prospect asks, you respond with a branded PDF that’s ready to act on. Set it up once, then let Airtable and WhatsApp do the repetitive work for you.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.