WhatsApp processes over 100 billion messages every day, and a huge chunk of those are customers asking "Can I order?" — then waiting. If you're running a small store, a food brand, or any product-based side hustle, that wait costs you sales. Here's how to close that gap with a bot that never sleeps.

This build uses n8n (self-hosted or cloud), the WhatsApp Business Cloud API (Meta's free tier), and Google Sheets as your order database. No Zapier tax. No monthly SaaS subscription eating your margin. Just a workflow you own.

What You're Actually Building

The bot does three things: it receives a WhatsApp message, parses the order details, logs them to a Google Sheet, and fires a confirmation reply back to the customer. That's it. Simple on purpose.

When a customer texts something like "1x Mango Smoothie, deliver to 42 Oak Street," the workflow catches that, structures it, and drops a new row into your sheet with their name, number, order, timestamp, and a status column set to "Pending." They get an instant reply. You open your sheet and start fulfilling. No app, no dashboard, no extra cost.

Pro tip: Add a "Status" dropdown column in Google Sheets (Pending → Confirmed → Dispatched → Delivered) and share it with your team. One sheet replaces an entire order management tool for most micro-businesses.

Step-by-Step: Building the Workflow

  1. Set up WhatsApp Business Cloud API. Go to developers.facebook.com, create an app, and add the WhatsApp product. You'll get a test phone number and a temporary access token for free. For production, verify your business and get a permanent token. Meta charges per conversation — roughly $0.005–$0.015 USD per 24-hour session depending on your country tier.
  2. Install n8n. Self-host it on a $6/month DigitalOcean droplet using their one-click Docker image, or use n8n.io cloud starting at $20/month. Either works. Self-hosting gives you full control and scales better for high volume.
  3. Create a Webhook node in n8n. This is your entry point. Set it to POST, copy the webhook URL, and paste it into your WhatsApp app's webhook configuration in Meta's developer portal. Subscribe to the messages field under WhatsApp Business Account.
  4. Parse the incoming message. Add a Function node (or the newer Code node). WhatsApp sends a nested JSON payload. You want to extract: entry[0].changes[0].value.messages[0].from (the phone number) and .text.body (the message). Pull the display name from .contacts[0].profile.name. Assign those to clean variables.
  5. Append to Google Sheets. Add the Google Sheets node, authenticate with OAuth2, select your spreadsheet, and map your variables to columns: Name, Phone, Order, Timestamp (new Date().toISOString()), Status (hardcode "Pending"). Hit save.
  6. Send a confirmation via HTTP Request node. Use Meta's Send Message API endpoint. Set the method to POST, add your Bearer token in the header, and build a simple JSON body with a friendly reply: "Got your order! We'll confirm within 10 minutes." Point it to the customer's phone number from step 4.
  7. Activate and test. Send a WhatsApp message to your test number. Watch the execution log in n8n. Check your sheet. If the row appears and you get a reply, you're live.
Pro tip: Add an IF node before the Sheets step to filter out non-order messages (greetings, "hello", etc.). Check if the message body contains keywords like "order," "want," or a product name. Route unrecognized messages to a fallback reply that prompts the customer to use a simple format.

Handling Edge Cases Without Losing Your Mind

Real customers don't follow instructions. They'll send voice notes, images, or a three-paragraph story about why they want extra sauce. Your bot needs guardrails.

For unsupported message types (voice, image, sticker), WhatsApp's payload will show a different type field. Add a Switch node that checks message.type. If it's not "text," send a polite redirect: "Hi! To place an order, just text us your item and delivery address." Clean. Human. No crash.

For duplicate messages — Meta occasionally resends webhooks — add a deduplication check using the message ID (messages[0].id). Store recent IDs in a Redis node or even a separate sheet tab. If the ID already exists, skip processing.

Cost Breakdown at a Glance

Component Option Monthly Cost (USD)
n8n Self-hosted (DigitalOcean) $6
n8n n8n Cloud Starter $20
WhatsApp API Meta Business (pay-per-conversation) $0–$15 typical
Google Sheets Free tier $0

FAQ

Do I need coding skills to build this?

Basic JavaScript helps for the Function node, but n8n's visual builder handles most of it. If you can write a formula in Google Sheets, you can figure this out.

Can I use a regular WhatsApp number instead of the Business API?

Not reliably. WhatsApp's terms prohibit automating personal accounts, and unofficial libraries risk getting your number banned. Stick with the official API.

What happens if n8n goes down?

Meta queues webhook deliveries briefly, but messages can be lost in longer outages. For production, use n8n Cloud or a properly monitored self-hosted setup with uptime alerts on something like UptimeRobot (free).

Can I add payment collection to the bot?

Yes. After the Sheets step, add an HTTP Request node that calls a payment link generator — Stripe, PayPal, or a local gateway — and include the link in your confirmation reply.

Bottom line: This workflow takes an afternoon to build and runs for under $20 a month. It replaces a chaotic DM inbox with a structured, searchable order log — and your customers get instant replies at 2am without you lifting a finger. Start small, get it working, then layer on features.

Explore more no-code automation builds at AI Profit Automation.

Written by

Founder & AI Automation Researcher

Mahendra Bugaliya is the founder of AI Profit Automation. He tests AI tools and automation workflows hands-on and writes practical, no-hype guides on using them to build and grow online income.

Tags
WhatsApp order bot n8n automation Google Sheets bot WhatsApp Business API n8n workflow order management automation no-code bot WhatsApp n8n integration