<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abhishek Rajpurohit</title>
    <description>The latest articles on DEV Community by Abhishek Rajpurohit (@abhishek_rajpurohit).</description>
    <link>https://dev.to/abhishek_rajpurohit</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4198875%2Fc42bcbc2-da87-4b23-b66c-69cf1fdedb87.png</url>
      <title>DEV Community: Abhishek Rajpurohit</title>
      <link>https://dev.to/abhishek_rajpurohit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhishek_rajpurohit"/>
    <language>en</language>
    <item>
      <title>Why Your Emails Land in Spam: A Teardown for People Who Aren't Developers</title>
      <dc:creator>Abhishek Rajpurohit</dc:creator>
      <pubDate>Wed, 21 Oct 2026 17:16:33 +0000</pubDate>
      <link>https://dev.to/abhishek_rajpurohit/why-your-emails-land-in-spam-a-teardown-for-people-who-arent-developers-444b</link>
      <guid>https://dev.to/abhishek_rajpurohit/why-your-emails-land-in-spam-a-teardown-for-people-who-arent-developers-444b</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://abhishekrajpurohit.in/blog/why-your-emails-land-in-spam-plain-english-teardown" rel="noopener noreferrer"&gt;my blog&lt;/a&gt;, where I keep it updated.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A founder messaged me last week with a familiar complaint: "I sent an invoice from our company email and the client said it landed straight in spam. We've never had this problem before."&lt;/p&gt;

&lt;p&gt;Nothing about their email had changed. What changed was everything invisible around it — and that's the part almost nobody explains without fifteen acronyms in the first paragraph. So here's the teardown without those. No SPF, DKIM, or DMARC jargon until I've explained the idea it stands for in plain words first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Think of email like physical mail, not a phone call
&lt;/h2&gt;

&lt;p&gt;When you send a text message, it goes straight from your phone to theirs. Email doesn't work that way. It's more like posting a letter: it passes through several sorting offices (mail servers) before it reaches the recipient's mailbox. At every sorting office, someone glances at the envelope and asks one question — &lt;strong&gt;"is this really from who it says it's from?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That question is the entire spam problem in a sentence. Spammers have always been able to write "From: &lt;a href="mailto:yourbank@example.com"&gt;yourbank@example.com&lt;/a&gt;" on an email the same way anyone can write a fake return address on a paper envelope. So mailbox providers (Gmail, Outlook, Yahoo) built a set of checks to verify the return address before they'll trust it. If your domain hasn't set those checks up, you look exactly like a spammer to the sorting office — even though every word in your email is genuine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three checks, explained without the acronyms
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Check 1 — "Is this server allowed to send mail for this domain?"&lt;/strong&gt;&lt;br&gt;
Every domain can publish a public list of the mail servers allowed to send on its behalf — think of it as a company saying "only these three delivery trucks are authorized to drop off mail with our logo on it." When an email arrives, the receiving mailbox checks the sending server against that list. No list published, or the sending server isn't on it, and the email looks unauthorized on arrival.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check 2 — "Was this message tampered with in transit?"&lt;/strong&gt;&lt;br&gt;
This one attaches an invisible, cryptographic seal to each outgoing email — like a wax seal on a letter that cracks visibly if anyone opens it before it arrives. The receiving server checks the seal against a key the domain has published. A missing or broken seal doesn't just mean the email might have been altered; the bigger problem is unsealed mail simply reads as lower-trust from the start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check 3 — "What should happen to mail that fails the first two checks?"&lt;/strong&gt;&lt;br&gt;
This is a policy the domain owner publishes, telling every mailbox provider in the world what to do with mail that fails checks 1 and 2: let it through anyway, mark it as suspicious, or reject it outright. Most small businesses have never set this policy at all — which means mailbox providers fall back to their own judgment, and their judgment skews toward "when in doubt, spam folder."&lt;/p&gt;

&lt;p&gt;That's it. Three checks, three plain questions: who's allowed to send, was it tampered with, and what happens if something fails. (Their real names are SPF, DKIM, and DMARC, in case you ever need to say them to a developer — but you don't need the names to understand the problem.)&lt;/p&gt;

&lt;h2&gt;
  
  
  What the actual teardown looked like
&lt;/h2&gt;

&lt;p&gt;I ran the founder's domain through a checker and found the pattern that shows up in maybe eight out of ten "why is my email going to spam" cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check 1 existed but was incomplete&lt;/strong&gt; — the list of authorized senders only included their old email provider from two migrations ago. Their current provider wasn't on it, so every email they sent was technically unauthorized.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check 2 wasn't configured at all&lt;/strong&gt; — no cryptographic seal, so every email arrived looking unsealed by default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check 3 didn't exist&lt;/strong&gt; — no policy at all, meaning mailbox providers were making a judgment call on every single message with zero guidance from the domain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this was caused by anything the founder did wrong in the moment. It accumulated silently over two provider migrations and about three years, the way a lot of infrastructure debt does — nobody breaks it on purpose, it just never gets revisited after the initial setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters more than it looks like it should
&lt;/h2&gt;

&lt;p&gt;A broken authorization setup doesn't just cost you the one email that landed in spam. Mailbox providers build a running trust score for every sending domain, based on how consistently your mail passes these checks. Every failed check nudges that score down a little. Enough failed checks, and &lt;em&gt;all&lt;/em&gt; your mail — including the messages that would otherwise have sailed straight into someone's primary inbox — starts getting treated with suspicion. It's less "one bad email" and more "a slowly declining credit score for your domain."&lt;/p&gt;

&lt;p&gt;The fix, once you know what's actually broken, is usually a few DNS records — genuinely a 20-minute task for whoever manages your domain, not a re-architecture. The hard part was never the fix. It was knowing which of the three checks was actually the problem, since the symptom (mail in spam) looks identical no matter which one failed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check your own domain
&lt;/h2&gt;

&lt;p&gt;I built &lt;a href="https://abhishekrajpurohit.in/tools/email-health-checker" rel="noopener noreferrer"&gt;Email Health Checker&lt;/a&gt; for exactly this — it runs all three checks against any domain and explains what's missing in plain English, not a wall of DNS record syntax. It's free, takes about ten seconds, and doesn't require you to know what SPF, DKIM, or DMARC stand for before you can act on the result.&lt;/p&gt;

&lt;p&gt;If you've ever had someone tell you "your email went to my spam folder" and had no idea why, that's the ten seconds worth spending.&lt;/p&gt;

&lt;p&gt;If you'd rather own the whole mail stack, I wrote up &lt;a href="https://abhishekrajpurohit.in/projects/custom-email-server" rel="noopener noreferrer"&gt;why I built my own email server from scratch&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>email</category>
      <category>dns</category>
      <category>security</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Evolution API vs OpenWA vs Meta Cloud API: Which WhatsApp API Should You Use?</title>
      <dc:creator>Abhishek Rajpurohit</dc:creator>
      <pubDate>Wed, 21 Oct 2026 17:11:08 +0000</pubDate>
      <link>https://dev.to/abhishek_rajpurohit/evolution-api-vs-openwa-vs-meta-cloud-api-which-whatsapp-api-should-you-use-4bcn</link>
      <guid>https://dev.to/abhishek_rajpurohit/evolution-api-vs-openwa-vs-meta-cloud-api-which-whatsapp-api-should-you-use-4bcn</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://abhishekrajpurohit.in/blog/evolution-api-vs-openwa-vs-meta-cloud-api" rel="noopener noreferrer"&gt;my blog&lt;/a&gt;, where I keep it updated.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;"Evolution API" is one of the fastest-rising WhatsApp searches in India this year. Most people find it the same way I found OpenWA: they want WhatsApp automation without a ₹3,000/month BSP subscription. Before you pick one, you need to know how each one actually talks to WhatsApp, because that decides whether your number survives.&lt;/p&gt;

&lt;p&gt;I run OpenWA with n8n for my own alerts, and I've set up Evolution API and Meta's Cloud API for clients. This is the comparison I wish I'd had.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one thing that matters: how it connects
&lt;/h2&gt;

&lt;p&gt;There are only two ways software can send WhatsApp messages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pretend to be WhatsApp Web.&lt;/strong&gt; Scan a QR code and the tool runs a WhatsApp Web session for you. Free, works with any normal or Business app number, but it's &lt;strong&gt;against WhatsApp's terms&lt;/strong&gt; and Meta can ban the number.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Meta's official WhatsApp Business Platform (Cloud API).&lt;/strong&gt; Verified business, approved templates, pay per template message. No ban risk from the method itself.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every WhatsApp tool you'll see is one of these underneath, even if its landing page doesn't say so.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;OpenWA&lt;/th&gt;
&lt;th&gt;Evolution API&lt;/th&gt;
&lt;th&gt;Meta Cloud API&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;How it connects&lt;/td&gt;
&lt;td&gt;WhatsApp Web via &lt;strong&gt;whatsapp-web.js&lt;/strong&gt; (runs a headless browser)&lt;/td&gt;
&lt;td&gt;WhatsApp Web via &lt;strong&gt;Baileys&lt;/strong&gt; (WebSocket, no browser) &lt;strong&gt;or&lt;/strong&gt; the official Cloud API&lt;/td&gt;
&lt;td&gt;Official Meta API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per message&lt;/td&gt;
&lt;td&gt;₹0&lt;/td&gt;
&lt;td&gt;₹0 on Baileys; Meta's rates on Cloud API&lt;/td&gt;
&lt;td&gt;₹0.86 marketing, ₹0.115 utility (+18% GST)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ban risk&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes on Baileys; no on Cloud API&lt;/td&gt;
&lt;td&gt;No (unless you spam)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Template approval&lt;/td&gt;
&lt;td&gt;Not needed&lt;/td&gt;
&lt;td&gt;Not needed on Baileys&lt;/td&gt;
&lt;td&gt;Required for messages outside the 24-hour window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Needs&lt;/td&gt;
&lt;td&gt;Docker (SQLite built in)&lt;/td&gt;
&lt;td&gt;Docker + PostgreSQL/MySQL, Redis recommended&lt;/td&gt;
&lt;td&gt;Meta Business account, verified number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Licence&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;td&gt;Apache 2.0 &lt;strong&gt;plus extra conditions&lt;/strong&gt; (see below)&lt;/td&gt;
&lt;td&gt;Proprietary, Meta's terms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Built-in integrations&lt;/td&gt;
&lt;td&gt;REST API + webhooks&lt;/td&gt;
&lt;td&gt;Chatwoot, Typebot, Dify, OpenAI, RabbitMQ, Kafka, SQS, S3/MinIO&lt;/td&gt;
&lt;td&gt;Webhooks, any BSP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  OpenWA
&lt;/h2&gt;

&lt;p&gt;OpenWA is an open-source WhatsApp gateway built on NestJS and whatsapp-web.js. You run it in Docker, scan a QR code, and get a REST API plus webhooks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplest to start: one compose command, no external database&lt;/li&gt;
&lt;li&gt;Perfect for personal automation: server alerts, reminders to yourself, a family group bot&lt;/li&gt;
&lt;li&gt;Works well with n8n. I have a &lt;a href="https://abhishekrajpurohit.in/blog/openwa-api-reference-n8n-workflows" rel="noopener noreferrer"&gt;full API reference with n8n workflows&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Not so good&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs a real headless Chromium, so it uses more RAM than Baileys-based tools (plan for 1 GB+ per session)&lt;/li&gt;
&lt;li&gt;One session per instance in a typical setup&lt;/li&gt;
&lt;li&gt;Breaks when WhatsApp Web changes, until the library catches up&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Setup guide: &lt;a href="https://abhishekrajpurohit.in/blog/complete-guide-self-hosting-n8n-openwa-whatsapp-api" rel="noopener noreferrer"&gt;Self-host a free WhatsApp API with n8n and OpenWA&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evolution API
&lt;/h2&gt;

&lt;p&gt;Evolution API started as a fork of CodeChat on top of the Baileys library and is now maintained by the Evolution Foundation (about 10k GitHub stars). It's the most complete self-hosted option.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Two engines in one&lt;/strong&gt;: start on Baileys (free), switch an instance to the official Cloud API later without rewriting your integration&lt;/li&gt;
&lt;li&gt;Multi-instance: many numbers from one server, each with its own API key&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native Chatwoot integration&lt;/strong&gt;: a free shared inbox for your support team. This is the main reason Indian SMBs pick it&lt;/li&gt;
&lt;li&gt;Baileys talks to WhatsApp over WebSockets with no browser, so it's lighter per session than OpenWA&lt;/li&gt;
&lt;li&gt;Typebot, Dify and OpenAI hooks for chatbots without writing glue code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Not so good&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More moving parts: PostgreSQL or MySQL, plus Redis for caching&lt;/li&gt;
&lt;li&gt;Baileys mode has the same ban risk as any WhatsApp Web bridge&lt;/li&gt;
&lt;li&gt;Docs and community are mostly Portuguese-first (the project is Brazilian), though the English docs are fine for setup&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The licence clause to read before you sell it
&lt;/h3&gt;

&lt;p&gt;Evolution API is Apache 2.0 &lt;strong&gt;with extra conditions&lt;/strong&gt;. From the LICENSE file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you use its frontend components, you &lt;strong&gt;can't remove or change the Evolution API logo and copyright&lt;/strong&gt; in the console.&lt;/li&gt;
&lt;li&gt;If you use Evolution API in any project, including closed-source software, you must &lt;strong&gt;show a clear notice that Evolution API is being used&lt;/strong&gt;, visible to system administrators in the docs or settings page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you don't meet these, you may need a commercial licence. For an agency building a white-label WhatsApp CRM for Indian clients, this matters. Email the maintainers before you build a product on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meta Cloud API (direct)
&lt;/h2&gt;

&lt;p&gt;The official route. You create an app in Meta for Developers, verify your business, register a number, and get approved templates. Meta hosts it; you just call the API and receive webhooks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No ban risk from the connection method&lt;/li&gt;
&lt;li&gt;No BSP subscription if you integrate directly (n8n's WhatsApp Business Cloud node does this)&lt;/li&gt;
&lt;li&gt;Green-tick eligibility, catalogs, flows, Click-to-WhatsApp ads with a free 72-hour window&lt;/li&gt;
&lt;li&gt;Replies inside the 24-hour customer service window are free&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Not so good&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Business verification takes days, and some Indian sole proprietors struggle with the documents&lt;/li&gt;
&lt;li&gt;Templates need approval, and Meta re-categorises "utility" messages that read like promotions as marketing (about 7.5× the price)&lt;/li&gt;
&lt;li&gt;The number can't be used in the normal WhatsApp app at the same time (coexistence options exist but have limits)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full rupee breakdown is in &lt;a href="https://abhishekrajpurohit.in/blog/whatsapp-business-api-pricing-india-2026" rel="noopener noreferrer"&gt;WhatsApp Business API pricing in India&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which one should you use?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Your situation&lt;/th&gt;
&lt;th&gt;Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Personal alerts, home-lab notifications, your own number&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;OpenWA&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Small team needs a shared WhatsApp inbox (Chatwoot), low volume, accepts some risk&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Evolution API (Baileys)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same as above, but you'll go official once it works&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Evolution API&lt;/strong&gt;, then switch the instance to Cloud API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Messaging customers at scale, broadcasts, OTPs, anything your business depends on&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Meta Cloud API&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marketing broadcasts to cold lists&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;None.&lt;/strong&gt; You'll get banned on a bridge and penalised on the official API&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;My rule: &lt;strong&gt;if losing the number would hurt the business, use the official API.&lt;/strong&gt; The bridges are great for internal and personal use, and for proving an idea before paying Meta.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to lower ban risk on a bridge
&lt;/h2&gt;

&lt;p&gt;None of these make it safe, but they help:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use a number that's been active for months, not a new SIM&lt;/li&gt;
&lt;li&gt;Message people who saved your number or messaged you first&lt;/li&gt;
&lt;li&gt;Don't send identical text to hundreds of people. Space messages out&lt;/li&gt;
&lt;li&gt;Keep the phone online and the linked session stable. Don't re-scan QR codes daily&lt;/li&gt;
&lt;li&gt;Never use your main business number for testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For workflow ideas that stay on the safe side (alerts, replies, internal groups), see &lt;a href="https://abhishekrajpurohit.in/blog/whatsapp-n8n-workflow-varieties" rel="noopener noreferrer"&gt;WhatsApp n8n workflow varieties&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick install comparison
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OpenWA&lt;/strong&gt;: one compose file, zero config.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/rmyndharis/OpenWA.git
&lt;span class="nb"&gt;cd &lt;/span&gt;OpenWA
docker compose &lt;span class="nt"&gt;-f&lt;/span&gt; docker-compose.dev.yml up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Evolution API&lt;/strong&gt;: app + Postgres + Redis, best with compose. The official repo ships a &lt;code&gt;docker-compose.yaml&lt;/code&gt;. Clone it, set &lt;code&gt;AUTHENTICATION_API_KEY&lt;/code&gt; and the database URL in &lt;code&gt;.env&lt;/code&gt;, then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/evolution-foundation/evolution-api.git
&lt;span class="nb"&gt;cd &lt;/span&gt;evolution-api
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env   &lt;span class="c"&gt;# set AUTHENTICATION_API_KEY, DATABASE_CONNECTION_URI&lt;/span&gt;
docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Meta Cloud API&lt;/strong&gt;: nothing to install. Create the app at &lt;a href="https://developers.facebook.com" rel="noopener noreferrer"&gt;developers.facebook.com&lt;/a&gt;, add the WhatsApp product, and copy the phone number ID and access token into n8n.&lt;/p&gt;

&lt;p&gt;Need help picking a route, or moving a bridge-based bot onto the official API without downtime? &lt;a href="https://abhishekrajpurohit.in/contact-me" rel="noopener noreferrer"&gt;Get in touch&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>whatsapp</category>
      <category>api</category>
      <category>selfhosted</category>
      <category>opensource</category>
    </item>
    <item>
      <title>WhatsApp Business API Pricing in India (2026): Per-Message ₹ Rates, GST and Real Cost Math</title>
      <dc:creator>Abhishek Rajpurohit</dc:creator>
      <pubDate>Wed, 21 Oct 2026 17:10:51 +0000</pubDate>
      <link>https://dev.to/abhishek_rajpurohit/whatsapp-business-api-pricing-in-india-2026-per-message-rates-gst-and-real-cost-math-1e3a</link>
      <guid>https://dev.to/abhishek_rajpurohit/whatsapp-business-api-pricing-in-india-2026-per-message-rates-gst-and-real-cost-math-1e3a</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://abhishekrajpurohit.in/blog/whatsapp-business-api-pricing-india-2026" rel="noopener noreferrer"&gt;my blog&lt;/a&gt;, where I keep it updated.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;"How much does the WhatsApp API cost in India?" is one of the most common questions I get from clients — and "whatsapp business api pricing india" is a rising search on Google Trends. Most answers online are BSP sales pages that blend Meta's charges with their own fees. This post separates the two.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Last checked: 11 October 2026. Meta can change rates on 1 January, 1 April, 1 July and 1 October each year, so re-check the &lt;a href="https://developers.facebook.com/docs/whatsapp/pricing" rel="noopener noreferrer"&gt;official rate cards&lt;/a&gt; before you budget.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How Meta charges (since July 2025)
&lt;/h2&gt;

&lt;p&gt;Meta bills &lt;strong&gt;per delivered template message&lt;/strong&gt;, not per conversation. The price depends on two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The template category&lt;/strong&gt; — marketing, utility, or authentication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The recipient's country code&lt;/strong&gt; — +91 numbers use the India rate&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Anything that isn't a template (your normal replies inside a chat) is a &lt;strong&gt;service&lt;/strong&gt; message.&lt;/p&gt;

&lt;h2&gt;
  
  
  India rates in ₹
&lt;/h2&gt;

&lt;p&gt;Meta publishes the INR rate card as a downloadable file rather than on the page. The figures below are the India rates as reported by multiple BSPs from Meta's card, before GST:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Per message (₹, excl. GST)&lt;/th&gt;
&lt;th&gt;Typical use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Marketing&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.8631&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Offers, broadcasts, cart reminders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Utility&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.1150&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Order updates, invoices, delivery alerts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.1150&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OTPs to Indian numbers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication-international&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.4971&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OTPs sent to +91 numbers by businesses registered outside India&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Meta raised India's &lt;strong&gt;marketing&lt;/strong&gt; rate on 1 January 2026, and the &lt;strong&gt;authentication-international&lt;/strong&gt; rate on 1 April 2026. India was not part of the 1 October 2026 rate changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Volume discounts
&lt;/h3&gt;

&lt;p&gt;Only &lt;strong&gt;utility&lt;/strong&gt; and &lt;strong&gt;authentication&lt;/strong&gt; get cheaper with volume, up to 30% off at very high monthly counts (millions of messages). Marketing has no volume tier. Tiers are counted per month across all WhatsApp Business Accounts in your Meta business portfolio. For most Indian SMBs sending a few thousand messages a month, assume list price.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's free
&lt;/h2&gt;

&lt;p&gt;Per Meta's own pricing pages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Service messages are free.&lt;/strong&gt; When a customer messages you, a 24-hour customer service window opens and your replies cost nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Utility templates sent inside an open service window are free.&lt;/strong&gt; Send the order confirmation while the customer is still chatting and it costs ₹0.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Click-to-WhatsApp ads and Facebook Page CTA buttons open a 72-hour free window&lt;/strong&gt; for any message type, if you reply within 24 hours. (Mobile app users only — not WhatsApp Web/Desktop.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some BSP blogs claim a 1,000-per-month cap on free service messages starting 1 October 2026. I could not find this on Meta's developer docs or the WhatsApp Business pricing page as of today, so treat it as unconfirmed until it shows up there.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three costs nobody adds up
&lt;/h2&gt;

&lt;p&gt;Your real bill is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Meta message charges
+ 18% GST on Meta charges
+ BSP platform fee (if you use one)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Meta charges&lt;/strong&gt; — the table above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GST&lt;/strong&gt; — 18% on top. A ₹0.8631 marketing message actually costs about &lt;strong&gt;₹1.02&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BSP fee&lt;/strong&gt; — WATI, Interakt, AiSensy, Zoko and others charge a monthly subscription and sometimes a per-message markup. Compare their per-message price to Meta's rate: anything above ₹0.8631 for marketing is markup.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can skip the BSP by using Meta's &lt;strong&gt;Cloud API directly&lt;/strong&gt; — no subscription, you pay Meta only. You'll need a developer (or n8n) to send messages and handle webhooks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked examples (monthly, Meta charges only)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A D2C brand sending 10,000 marketing broadcasts&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10,000 × ₹0.8631 = ₹8,631
+ 18% GST        = ₹10,184.58
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;A clinic sending 10,000 appointment reminders (utility, outside the service window)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10,000 × ₹0.1150 = ₹1,150
+ 18% GST        = ₹1,357
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If half of those reminders go out while patients are already chatting with you, those are free — the bill halves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An app sending 5,000 login OTPs (authentication, Indian business)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5,000 × ₹0.1150 = ₹575
+ 18% GST       = ₹678.50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same OTPs from a business registered outside India: 5,000 × ₹2.4971 = ₹12,485.50 before GST — over 20× more.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to cut the bill
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Categorise templates honestly.&lt;/strong&gt; Meta reclassifies "utility" templates that read like promotions as marketing — about 7.5× the price.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send utility messages inside the service window&lt;/strong&gt; whenever the flow allows it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Click-to-WhatsApp ads for acquisition&lt;/strong&gt; — the 72-hour free window covers the whole first conversation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't broadcast to cold lists.&lt;/strong&gt; Low engagement hurts your quality rating and can cap your sending limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Move to INR billing.&lt;/strong&gt; Meta launched INR billing for India in January 2026, and eligible accounts must migrate by &lt;strong&gt;31 December 2026&lt;/strong&gt; — after that, Meta stops delivering messages from their non-INR accounts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Official API vs unofficial bridges
&lt;/h2&gt;

&lt;p&gt;Unofficial tools that drive WhatsApp Web (like OpenWA) cost ₹0 per message, but they break WhatsApp's terms and risk a permanent number ban. They're fine for personal automation and internal alerts — I run one, see my &lt;a href="https://abhishekrajpurohit.in/blog/complete-guide-self-hosting-n8n-openwa-whatsapp-api" rel="noopener noreferrer"&gt;OpenWA + n8n guide&lt;/a&gt; — but customer-facing messaging at scale belongs on the official API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick answer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Marketing: &lt;strong&gt;~₹1.02&lt;/strong&gt; per message incl. GST&lt;/li&gt;
&lt;li&gt;Utility / OTP: &lt;strong&gt;~₹0.14&lt;/strong&gt; per message incl. GST&lt;/li&gt;
&lt;li&gt;Replies to customers: &lt;strong&gt;free&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Platform fee: ₹0 with Meta Cloud API directly, or whatever your BSP charges&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Need WhatsApp automation wired into your CRM, Razorpay or n8n without a monthly BSP bill? &lt;a href="https://abhishekrajpurohit.in/contact-me" rel="noopener noreferrer"&gt;Let's talk&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>whatsapp</category>
      <category>api</category>
      <category>india</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
