WhatsApp + Google Sheets, first replies logged
You get a new inquiry, and then… nothing. Not because you don’t care, but because the lead lands in the wrong inbox, someone forgets to copy it into a sheet, and your “quick follow-up” turns into tomorrow’s problem.
This hits sales reps first, honestly. But marketing managers and small agency owners feel the same drag when leads go cold. With WhatsApp Sheets replies automation, your first message goes out fast, and every outcome gets logged automatically.
Below you’ll see how the workflow works, what it saves you in real time, and what you need to run it without turning your day into a “CRM maintenance” project.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: WhatsApp + Google Sheets, first replies logged
flowchart LR
subgraph sg0["Enquiry Form Flow"]
direction LR
n0@{ icon: "mdi:database", form: "rounded", label: "Google Sheets", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "OpenAI", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n3@{ icon: "mdi:web", form: "rounded", label: "Whatsapp API", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Google Sheets3", pos: "b", h: 48 }
n5["<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/form.svg' width='40' height='40' /></div><br/>Enquiry Form"]
n2 --> n0
n2 --> n4
n1 --> n2
n5 --> n1
n3 -.-> n1
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 n5 trigger
class n1 ai
class n2 decision
class n0,n4 database
class n3 api
classDef customIcon fill:none,stroke:none
class n5 customIcon
The Problem: Slow First Replies (and Messy Tracking)
First replies are make-or-break for inbound leads. If someone fills in an inquiry form and hears nothing for a few hours, they keep shopping, you lose momentum, and your team ends up “chasing” instead of guiding. Meanwhile, tracking is usually a second, separate chore: someone copies fields into a sheet, someone else adds notes later, and now you’ve got duplicates, missing WhatsApp numbers, and no clean way to answer “Which leads were contacted, and did the message even send?” It’s not just time. It’s lost context.
It adds up fast. Here’s where it typically breaks down.
- Leads wait while you manually draft a first message, and that delay quietly kills intent.
- Copy-pasting form data into a “CRM sheet” introduces small errors that become big follow-up problems.
- You don’t reliably know if the WhatsApp message was sent, failed, or never attempted.
- When someone asks for reporting, you’re stuck reconstructing a timeline from scattered tools.
The Solution: Instant WhatsApp First Touch + Sheet Logging
This n8n workflow turns a simple inquiry form into a fast, trackable WhatsApp first reply. When a lead submits their details (name, email, WhatsApp number, company, and a short “how can we help?” note), the workflow immediately generates a friendly opening message using OpenAI. The tone is designed to feel human, not robotic: it addresses the lead by first name and asks an open-ended question that pulls out useful context.
Next, the workflow sends that message through the WhatsApp API using Unipile, which is the key detail if you want to message new leads even without a prior chat. After the send attempt, n8n checks what happened. Successful sends get logged to a “Successful” tab in Google Sheets with the message text plus IDs (chat ID and message ID). Failures get logged to a “Failed” tab with the reason, so you can fix bad numbers or permission issues without guessing.
The workflow starts with an inquiry form submission. OpenAI writes the first reply, then Unipile sends it on WhatsApp. Finally, Google Sheets is updated in the right place based on success or failure, so your pipeline stays honest.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you get 10 inquiries a day. Manually, a “good” first-touch process is still about 10 minutes per lead to read the form, write a custom opener, send WhatsApp, then log it in Google Sheets, so you burn roughly 100 minutes daily. With this workflow, submitting the form is the trigger and the rest runs in the background: maybe 1 minute to skim the sheet later, while the send + logging completes automatically. That’s about an hour and a half back on a normal day.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets to store successful and failed sends.
- Unipile (WhatsApp API) to send WhatsApp messages programmatically.
- OpenAI API key (get it from your OpenAI dashboard).
Skill level: Beginner. You’ll connect accounts, paste a few IDs/keys, and test with a sample inquiry.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
An inquiry gets submitted. The workflow begins when someone completes your inquiry form (or any form tool that can send a webhook to n8n). The payload includes basics like name, email, WhatsApp number, company, and a short note about what they want.
The message is drafted automatically. OpenAI takes the lead data and writes a short opener in a friendly assistant style, including the lead’s first name and a question that nudges them to explain their needs.
WhatsApp outreach happens through Unipile. n8n sends the generated message to the lead’s WhatsApp number via an HTTP request to the Unipile API, which supports starting conversations (even if you’ve never messaged that lead before).
Results land in Google Sheets. If the send worked, the lead + message + chat/message IDs are written to the “Successful” tab. If it failed, the same record goes to “Failed” along with the failure reason, so you know what to fix.
You can easily modify the message style to match your brand voice based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Form Trigger
Set up the intake form that starts the workflow and captures lead details.
- Add and open Inquiry Intake Form.
- Set Form Title to
Inquiry Form. - Add form fields exactly as: Full Name (required), Email (required), Whatsapp, Company Name, How can we help you?.
- Keep Flowpast Branding as a sticky note for documentation (optional, no configuration needed).
Step 2: Connect Google Sheets
Configure the two Google Sheets nodes to log successful and failed message attempts.
- Open Update Success Records and set Operation to
appendOrUpdate. - Select the document Sales Agent with ID
1JeAwOvYurzX54kGpktXAmQS54owHp7W_2HMbS5i4ghkand sheet Successful (gid0). - Map columns using the existing expressions, for example Name to
{{ $('Inquiry Intake Form').first().json['Full Name'] }}and Chat_id to{{ $('AI Message Composer').first().json.message.content.chat_id }}. - Open Update Failed Records and set Operation to
appendOrUpdate. - Select the same document Sales Agent and sheet Failed.
- Map Error to
{{ $json.message.content.Reason }}and Message to{{ $('AI Message Composer').item.json.message.content.Message }}. - Credential Required: Connect your googleSheetsOAuth2Api credentials in both Update Success Records and Update Failed Records.
Step 3: Set Up AI Message Composer
Configure the OpenAI node to generate a personalized WhatsApp outreach message and call the WhatsApp API tool.
- Open AI Message Composer and set Model to
gpt-4.1-mini. - Keep JSON Output enabled.
- Verify the message prompt includes personalized values like
{{ $json['Full Name'] }},{{ $json['How can we help you?'] }}, and{{ $json.Whatsapp }}. - Credential Required: Connect your openAiApi credentials in AI Message Composer.
- Confirm WhatsApp API Sender is attached as an AI tool to AI Message Composer; credentials for the tool are managed via the parent node’s API configuration.
chat_id or message_id.Step 4: Configure Output and Routing
Route success or failure responses and send WhatsApp messages through the API tool.
- Open Failure Condition Check and set the condition to check Left Value
{{ $json.message.content.Status }}containsFail. - Ensure the success branch of Failure Condition Check routes to Update Success Records and the fail branch routes to Update Failed Records.
- Open WhatsApp API Sender and set URL to
https://<YOUR_DSN>/api/v1/chats, Method toPOST, and Content Type tomultipart-form-data. - Set body parameters: attendees_ids to
{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', ``, 'string') }}, text to{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', ``, 'string') }}, and account_id to[YOUR_ID]. - Set header parameters: X-API-KEY to
[CONFIGURE_YOUR_API_KEY]and accept toapplication/json. - Confirm the execution flow: Inquiry Intake Form → AI Message Composer → Failure Condition Check → Update Failed Records or Update Success Records.
<YOUR_DSN>, [YOUR_ID], and [CONFIGURE_YOUR_API_KEY] in WhatsApp API Sender before testing to avoid API errors.Step 5: Test and Activate Your Workflow
Validate the workflow end-to-end and then activate it for production use.
- Click Execute Workflow and submit a test entry through Inquiry Intake Form.
- Confirm AI Message Composer returns JSON with
Status,Message, and (on success)chat_idandmessage_id. - Verify that Update Success Records or Update Failed Records logs the record in the correct sheet.
- Once successful, switch the workflow to Active to process live inquiries.
Common Gotchas
- Google Sheets credentials can expire or need specific permissions. If things break, check the n8n Credentials page and confirm the connected Google account still has edit access to the target Sheet.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Unipile API credentials and account IDs are easy to mix up. If WhatsApp sends fail, check the Unipile dashboard first for the correct DSN, API key, and connected WhatsApp account status.
Frequently Asked Questions
About 30 minutes if your keys and sheet are ready.
No coding required. You’ll mostly paste credentials, confirm the Google Sheet tabs, and run a test submission.
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 and your Unipile 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 it’s worth doing. You can adjust the “AI Message Composer” prompt to create different openers for pricing requests, demo requests, or support inquiries, while still keeping the message short. Many teams also add a simple condition before sending, like only messaging leads who selected “Urgent” or entered a valid phone format. If you want separate tracking, point “Update Success Records” and “Update Failed Records” to different tabs for each lead type.
Usually it’s a Unipile credential issue or a disconnected WhatsApp account on the Unipile side. Double-check the DSN, API key, and account ID in the “WhatsApp API Sender” request, then confirm the account is still connected in your Unipile dashboard. Bad phone formatting can also trigger failures, so normalize numbers to include country codes. Finally, if you’re testing with lots of submissions, you might run into rate limits and see intermittent errors.
On n8n Cloud Starter, you can handle a few thousand executions per month, and self-hosting removes the execution cap (your server becomes the limit). In practice, most small teams run this comfortably for dozens or even a couple hundred leads a day.
It depends. If you need the success/failure branching, logging to separate tabs, and the flexibility to expand the logic later, n8n is usually the better fit and won’t punish you for complexity. Zapier or Make can be faster to click together for a basic two-step flow, but costs can climb as soon as you add paths and retries. The biggest factor is control: n8n lets you inspect each run and store richer logs. If you’re torn, Talk to an automation expert and you’ll get a clear answer quickly.
You reply faster, track cleaner, and stop losing leads in the gap between “form submitted” and “someone will handle it.” Set it up once, then let the workflow do the boring part.
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.