n8n is open-source, self-hostable workflow automation with no per-execution costs. For technical teams handling high volumes of WhatsApp automations, n8n is the most cost-effective option in this series, running unlimited workflows on a Rs. 500/month server.
Unlike Zapier (tasks) or Make (operations), n8n self-hosted has no per-execution pricing. You pay only for your server. A basic VPS at Rs. 500 to 2,000 per month handles most WhatsApp automation workloads. For teams with developers and high volumes, this is significantly cheaper than Zapier or Make at scale.
There is no dedicated WA.Expert node in n8n's library. Use the HTTP Request node to call the WA.Expert API directly. This is available in all n8n plans including self-hosted.
| n8n (self-hosted) | Make | Zapier | |
|---|---|---|---|
| Cost model | Server cost only | Per operation | Per task |
| Free tier | Unlimited (own server) | 1,000 ops/month | 100 tasks/month |
| Paid entry | ~Rs. 500/month VPS | $9/month | $20/month |
| WA.Expert app | No: HTTP node | No: HTTP module | Yes: native app |
| Webhooks | Free, all plans | Free, all plans | Paid plan only |
| Code support | JS / Python Code node | JS in HTTP | No native code |
| Best for | Tech teams, high volume, data sovereignty | Complex multi-step, visual | Simple 2-step, non-technical |
n8n Cloud (managed hosting by n8n) starts at ~€20/month if you prefer not to manage a server.
# Install Docker on your VPS first, then: docker run -it --rm \ --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ docker.n8n.io/n8nio/n8n # Access n8n at http://YOUR-VPS-IP:5678 # Or use npm: npm install n8n -g n8n start
Sign up at n8n.io for the managed cloud version. No installation needed. Plans start at ~€20/month.
n8n documentation: docs.n8n.io
Method: POST
URL: https://api.wa.expert/v1/send
Authentication: None
(add the API key manually in Headers)
Headers:
Name: API-KEY
Value: YOUR_WAEXPERT_API_KEY
Name: Content-Type
Value: application/json
Body: JSON
{{
"to": "{{{{ $json.phone }}}}",
"type": "template",
"template": {{
"name": "order_confirmation",
"language": {{"code": "en"}},
"components": [
{{
"type": "body",
"parameters": [
{{"type": "text", "text": "{{{{ $json.customer_name }}}}"}},
{{"type": "text", "text": "{{{{ $json.order_id }}}}"}}
]
}}
]
}}
}}
n8n expression syntax: {{{{ $json.fieldname }}}}
This maps data from the previous (trigger) node.In n8n, reference data from previous nodes using {{{{ $json.fieldname }}}} or {{{{ $json['fieldname'] }}}}. Click the expression icon (equals sign) next to any field in the HTTP node to open the expression editor, which shows available fields from all previous nodes.
n8n's Code node lets you write JavaScript to transform data, apply conditions, or select different templates before the HTTP Request node fires.
// Code node (JavaScript) before the HTTP Request node
const order = $input.first().json;
// Choose template based on order value
let templateName;
if (order.total > 5000) {{
templateName = "premium_order_confirmation";
}} else {{
templateName = "standard_order_confirmation";
}}
return [{{
json: {{
...order,
template_name: templateName,
phone: order.phone.startsWith('+') ? order.phone : '+91' + order.phone
}}
}}];Receive WhatsApp reply data from WA.Expert into n8n to update a CRM, log to a database, or trigger any downstream action.
n8n gives you two webhook URLs: a test URL (for building and testing) and a production URL (active when the workflow is published). WA.Expert must point to the production URL when the workflow is live. n8n only allows one active webhook per workflow at a time.
POST https://your-n8n-instance.com/webhook/YOUR_WEBHOOK_ID
Content-Type: application/json
Body:
{{
"customer_name": "{{customer_name}}",
"customer_phone": "{{customer_phone}}",
"customer_message": "{{customer_message}}"
}}
n8n receives this, processes through nodes:
Webhook -> IF (check keyword) -> Google Sheets (log)
-> Slack (alert team)| Symptom | Likely cause | Fix |
|---|---|---|
| HTTP Request node fails | Wrong URL or missing API-KEY header | Confirm the URL is https://api.wa.expert/v1/send. Add API-KEY as a header name (not Authorization). Check the key value. |
| Expression not resolving | Wrong expression syntax | Use {{ $json.fieldname }} (double curly braces). Click the equals sign icon next to the field to open the expression editor and select the correct field from the previous node. |
| Webhook not receiving data in production | Using test URL after activation | Switch WA.Expert to the production webhook URL after activating the workflow. n8n only processes data on the production URL when the workflow is active. |
| Workflow not triggering | Workflow not activated | Toggle the Active switch at the top of the workflow. Inactive workflows only respond to the test URL. |
| Code node error | JavaScript syntax issue | Check the Code node output panel for the exact error. n8n's Code node uses standard JavaScript; return an array of objects. |
| High execution count | Unexpected triggers | n8n self-hosted has no execution limits, so high counts do not cost extra. Review trigger node filters if unexpected executions are a concern. |
Zapier: native WA.Expert app, 7000+ triggers, no server needed.
Read guide →Free trial, no credit card. If you get stuck, we answer live on WhatsApp.