{"id":715,"date":"2026-10-29T13:17:32","date_gmt":"2026-10-29T13:17:32","guid":{"rendered":"https:\/\/vectalk.com.br\/blog\/whatsapp-bulk-messaging-official-api\/"},"modified":"2026-10-29T13:17:35","modified_gmt":"2026-10-29T13:17:35","slug":"whatsapp-bulk-messaging-official-api","status":"publish","type":"post","link":"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/","title":{"rendered":"WhatsApp bulk messaging on the official API: how to do it without losing your number"},"content":{"rendered":"\n<p><em>Updated on October 29, 2026<\/em><\/p>\n\n\n\n<p>Bulk messaging on the official WhatsApp Business API means sending a Meta-approved marketing template to a list of people who agreed to receive messages from your business. Volume is capped by three limits: how many people the portfolio can reach in 24 hours, how many marketing messages each user is willing to receive, and how many messages per second the number sends. For recipients in Brazil, each delivered marketing template costs R$ 0.3217 (Brazilian reais) on Meta&#8217;s rate card, and lists without opt-in generate blocks and reports that lead to account restrictions.<\/p>\n\n\n\n<p>This guide covers what Meta requires, how to plan the campaign, how much it costs, and a Node.js sending example that handles the errors that matter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Meta requires for bulk sending<\/h2>\n\n\n\n<p>The API has no &#8220;broadcast&#8221; endpoint. Each message is a template send call to one recipient. What turns that into a campaign is your system: the list, scheduling, pacing and reading the statuses.<\/p>\n\n\n\n<p>Three rules apply to any campaign:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Approved template.<\/strong> Outside the 24-hour window opened by the customer, you can only send templates. For promotions, offers and news, the category is marketing. See <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-api-message-templates\/\">WhatsApp API message templates<\/a> and <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-template-categories\/\">how Meta categorizes templates<\/a>.<\/li>\n\n\n<li><strong>Opt-in.<\/strong> The business needs the customer&#8217;s number and permission confirming they want to receive its messages.<\/li>\n\n\n<li><strong>Honor opt-outs.<\/strong> The policy requires respecting every request to stop receiving messages, made on or off WhatsApp.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Opt-in: what Meta asks for and how to record it<\/h2>\n\n\n\n<p>The <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/getting-opt-in\" target=\"_blank\" rel=\"noreferrer noopener\">Get opt-in for WhatsApp<\/a> page lists three requirements:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Clearly state that the person is opting in to receive communications from the business.<\/li>\n\n\n<li>Clearly state the name of the business the person will receive messages from.<\/li>\n\n\n<li>Comply with applicable law.<\/li>\n\n<\/ol>\n\n\n\n<p>The opt-in can be general, without mentioning WhatsApp specifically, as long as it complies with local law. The method is up to the business: website, SMS, a phone call with IVR, or paper signed in store. Meta recommends separate opt-ins by message category (orders, offers, recommendations), because that lowers the risk of blocks caused by unexpected messages. For building and maintaining the list, see <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-opt-in-list\/\">WhatsApp opt-in list<\/a>.<\/p>\n\n\n\n<p>Checkbox copy that meets the requirements:<\/p>\n\n\n\n<p><em>&#8220;I want to receive offers and news from Example Store on WhatsApp. I can unsubscribe anytime by replying STOP.&#8221;<\/em><\/p>\n\n\n\n<p>Store proof of consent alongside the contact. If it is ever disputed, that record shows when and how the person agreed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"wa_id\": \"5584999999999\",\n  \"optin\": {\n    \"category\": \"marketing\",\n    \"source\": \"website_checkout\",\n    \"accepted_text\": \"I want to receive offers and news from Example Store on WhatsApp.\",\n    \"accepted_at\": \"2026-10-12T14:32:10-03:00\",\n    \"ip\": \"200.0.0.10\"\n  },\n  \"optout\": null\n}<\/code><\/pre>\n\n\n\n<p>Beyond Meta&#8217;s policy, processing this data is subject to privacy law: in Brazil, the LGPD (the Brazilian General Data Protection Law); elsewhere, laws such as the GDPR in Europe. Check with your legal team about the legal basis, retention period and how consent can be withdrawn; this article is not legal advice. See <a href=\"https:\/\/vectalk.com.br\/blog\/en\/lgpd-whatsapp-en\/\">LGPD and WhatsApp<\/a> for the Brazilian rules.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Opt-out inside WhatsApp<\/h3>\n\n\n\n<p>Your system needs to handle two exit paths:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Button in the template.<\/strong> Add a quick reply button such as &#8220;Stop offers&#8221;. When the customer taps it, the webhook arrives with <code>type: \"button\"<\/code> and the button text in <code>button.text<\/code>. Mark the contact as opted out immediately.<\/li>\n\n\n<li><strong>WhatsApp&#8217;s own setting.<\/strong> Users can stop marketing messages from your business through WhatsApp&#8217;s settings. If you try to send anyway, the status webhook comes back as <code>failed<\/code> with error <code>131050<\/code>, according to the <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/marketing-templates\" target=\"_blank\" rel=\"noreferrer noopener\">marketing templates documentation<\/a>. Treat that error as an opt-out; the <code>user_preferences<\/code> webhook also tells you when a user stops or resumes these messages.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">The limits that control volume<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Limit<\/th><th>How it works<\/th><th>Error or signal<\/th><th>What to do<\/th><\/tr><\/thead><tbody><tr><td>Portfolio messaging limit<\/td><td>Unique recipients outside the customer service window in a rolling 24 h: 250, 2,000, 10,000, 100,000 or unlimited<\/td><td>Current tier in WhatsApp Manager and in the <code>whatsapp_business_manager_messaging_limit<\/code> field<\/td><td>Spread the campaign over days and track the tier in WhatsApp Manager<\/td><\/tr><tr><td>Per-user marketing limit<\/td><td>Meta caps how many marketing templates each person receives from all businesses, based on their recent engagement<\/td><td><code>failed<\/code> status with error <code>131049<\/code><\/td><td>Don&#8217;t resend for at least 24 hours<\/td><\/tr><tr><td>Sending rate (throughput)<\/td><td>Up to 80 messages per second per number by default; numbers in coexistence with the app are fixed at 20<\/td><td>Error <code>130429<\/code> in the API response<\/td><td>Slow down and retry with increasing backoff<\/td><\/tr><tr><td>Template quality<\/td><td>Low-quality templates are paused: 3 hours the first time, 6 hours the second, and disabled the third<\/td><td>Template status webhook<\/td><td>Stop the campaign that uses the paused template<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Sources: <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/messaging-limits\" target=\"_blank\" rel=\"noreferrer noopener\">messaging limits<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/marketing-templates\/per-user-limits\" target=\"_blank\" rel=\"noreferrer noopener\">per-user marketing limits<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/throughput\" target=\"_blank\" rel=\"noreferrer noopener\">throughput<\/a> and <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/template-pausing\" target=\"_blank\" rel=\"noreferrer noopener\">template pausing<\/a>.<\/p>\n\n\n\n<p>Two details surprise people planning their first campaign:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The limit belongs to the portfolio, not the number.<\/strong> All numbers in a portfolio share the same limit. Buying more numbers doesn&#8217;t multiply your reach.<\/li>\n\n\n<li><strong>The per-user limit doesn&#8217;t depend on you.<\/strong> Even with opt-in, some recipients may not get the message because they&#8217;ve already received a lot of marketing from other businesses. Marketing messages sent inside a customer service window opened by the customer&#8217;s reply don&#8217;t count toward that limit. The article on <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-error-131049-marketing-limit\/\">error 131049<\/a> explains what to do.<\/li>\n\n<\/ul>\n\n\n\n<p>The article on <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-api-messaging-limits\/\">WhatsApp API messaging limits<\/a> details how to move up a tier, and <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-api-rate-limit-throughput\/\">throughput and rate limits<\/a> covers error <code>130429<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Marketing moves to the Marketing Messages API<\/h2>\n\n\n\n<p>Meta announced that the Cloud API will stop supporting marketing messages on October 13, 2027, and Messaging accounts created on or after April 13, 2027 won&#8217;t be able to send marketing through the Cloud API at all (<a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/marketing-messages\/overview\" target=\"_blank\" rel=\"noreferrer noopener\">Marketing Messages API<\/a>). After that date, marketing templates go through the Marketing Messages API for WhatsApp. The example below still uses the Cloud API send call, which works today; plan the migration before the deadline with the guide on the <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-marketing-messages-api\/\">Marketing Messages API<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Segmentation: fewer contacts, better results<\/h2>\n\n\n\n<p>The per-user limit takes into account the person&#8217;s recent read rate. In practice, sending to people who don&#8217;t read makes delivery worse for everyone. Good segmentation is the most direct way to improve results:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Recency.<\/strong> Prioritize people who bought, replied or opened a message in recent months.<\/li>\n\n\n<li><strong>Declared interest.<\/strong> Use the category chosen at opt-in. Someone who agreed to &#8220;orders&#8221; did not agree to &#8220;offers&#8221;.<\/li>\n\n\n<li><strong>Failure history.<\/strong> Remove contacts with <code>131050<\/code> and reduce frequency for those piling up <code>131049<\/code>.<\/li>\n\n\n<li><strong>Frequency.<\/strong> Set a cap on campaigns per contact per week in your own system.<\/li>\n\n\n<li><strong>Personalization.<\/strong> Variables with the name, last product or city make the message expected. Meta lists personalized, useful messages among its quality best practices.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How much a campaign costs<\/h2>\n\n\n\n<p>Since July 1, 2025, Meta charges per delivered message, not per conversation. For recipients in Brazil, the marketing rate in effect since October 1, 2026 is R$ 0.3217 per message, and marketing has no volume discount (<a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/pricing\" target=\"_blank\" rel=\"noreferrer noopener\">pricing page<\/a> and <a href=\"https:\/\/business.whatsapp.com\/products\/platform-pricing\" target=\"_blank\" rel=\"noreferrer noopener\">rate card on the WhatsApp Business site<\/a>). Rates vary by recipient country; for other markets, see <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-api-pricing-by-country\/\">WhatsApp API pricing by country<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Campaign size<\/th><th>Estimated Meta cost (Brazil, marketing)<\/th><\/tr><\/thead><tbody><tr><td>1,000 delivered<\/td><td>R$ 321.70<\/td><\/tr><tr><td>10,000 delivered<\/td><td>R$ 3,217.00<\/td><\/tr><tr><td>50,000 delivered<\/td><td>R$ 16,085.00<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Messages that aren&#8217;t delivered aren&#8217;t billed. Messages inside the free entry point window, which opens when a customer arrives through a Click to WhatsApp ad and lasts up to 7 days, aren&#8217;t billed either. The <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-api-pricing-brazil\/\">WhatsApp API pricing in Brazil<\/a> article covers the other categories and how to calculate cost from the status webhook, and <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-campaign-cost\/\">how much a WhatsApp campaign costs<\/a> shows how to simulate before sending.<\/p>\n\n\n\n<p>With Vectalk, you don&#8217;t add a card at Meta: each delivered message is deducted from your prepaid Vectalk balance, and Vectalk pays Meta. Make sure the balance covers the campaign before you start.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why bought lists get your number restricted<\/h2>\n\n\n\n<p>A bought list, or one scraped from groups, fails the most basic requirement: those people never opted in to your business. The effect cascades:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Negative feedback.<\/strong> Meta calculates message quality from the last seven days, based on blocks, reports, mutes, archives and reasons given when blocking (<a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/messages\/send-messages\" target=\"_blank\" rel=\"noreferrer noopener\">message quality<\/a>).<\/li>\n\n\n<li><strong>Paused template.<\/strong> With low quality, the template is paused and, the third time, disabled. The campaign stops midway.<\/li>\n\n\n<li><strong>Frozen limit.<\/strong> Automatic limit increases require high-quality messages across all numbers and templates.<\/li>\n\n\n<li><strong>Account restrictions.<\/strong> The policy provides for restricting access or limiting sending for those who get a lot of negative feedback. The <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/policy-enforcement\" target=\"_blank\" rel=\"noreferrer noopener\">policy enforcement documentation<\/a> describes 1- or 3-day blocks on templates, 5-, 7- or 30-day blocks on any message, an indefinite account lock and, eventually, permanent removal from the platform.<\/li>\n\n<\/ol>\n\n\n\n<p>Switching numbers doesn&#8217;t fix it: the limit and the reputation stay with the portfolio. The article on <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-api-number-banned\/\">a banned number on the WhatsApp API<\/a> shows how to diagnose and appeal, and <a href=\"https:\/\/vectalk.com.br\/blog\/en\/official-vs-unofficial-whatsapp-api\/\">official vs. unofficial WhatsApp API<\/a> explains why unofficial bulk tools get numbers banned.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Example: paced sending in Node.js<\/h2>\n\n\n\n<p>Vectalk doesn&#8217;t have a bulk sending tool in its dashboard: the campaign runs in your system, calling the API once per recipient. The script below sends a marketing template through Vectalk to a list already filtered by opt-in, with controlled pacing and a retry on the throughput error. The payload is the same as the Cloud API.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-js\">const VECTALK = 'https:\/\/apis.vectalk.com.br\/api\/messages';\nconst TOKEN = process.env.VECTALK_TOKEN;\nconst PER_SECOND = 20; \/\/ well below the default ceiling of 80 mps\n\nconst sleep = (ms) =&gt; new Promise((r) =&gt; setTimeout(r, ms));\n\nasync function sendTemplate(contact, attempt = 1) {\n  const r = await fetch(VECTALK, {\n    method: 'POST',\n    headers: { Authorization: `Bearer ${TOKEN}`, 'Content-Type': 'application\/json' },\n    body: JSON.stringify({\n      messaging_product: 'whatsapp',\n      to: contact.wa_id,\n      type: 'template',\n      template: {\n        name: 'weekly_offer',\n        language: { code: 'en_US' },\n        components: [\n          { type: 'body', parameters: [{ type: 'text', text: contact.name }] },\n        ],\n      },\n    }),\n  });\n\n  const body = await r.json();\n  if (r.ok) return { wa_id: contact.wa_id, wamid: body.messages[0].id };\n\n  const code = body.error?.code;\n  if (code === 130429 &amp;&amp; attempt &lt;= 5) {\n    await sleep(1000 * 2 ** attempt); \/\/ increasing backoff\n    return sendTemplate(contact, attempt + 1);\n  }\n  return { wa_id: contact.wa_id, error: code ?? r.status };\n}\n\nexport async function runCampaign(contacts) {\n  const results = [];\n  for (let i = 0; i &lt; contacts.length; i += PER_SECOND) {\n    const batch = contacts.slice(i, i + PER_SECOND);\n    results.push(...(await Promise.all(batch.map((c) =&gt; sendTemplate(c)))));\n    await sleep(1000);\n  }\n  return results; \/\/ store the wamid to match against statuses later\n}<\/code><\/pre>\n\n\n\n<p>A 200 response from the API only says the message was accepted. Delivery, reads and failures such as <code>131049<\/code> and <code>131050<\/code> arrive later, in the status webhook:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-js\">export function handleStatus(status, db) {\n  if (status.status !== 'failed') return db.updateSend(status.id, status.status);\n\n  const code = status.errors?.[0]?.code;\n  if (code === 131050) db.markOptOut(status.recipient_id, 'marketing');\n  if (code === 131049) db.scheduleNoSoonerThan(status.recipient_id, 24 * 60 * 60 * 1000);\n  db.updateSend(status.id, 'failed', code);\n}<\/code><\/pre>\n\n\n\n<p>If your list has more than a few hundred contacts, run the send in a worker with a persistent queue, so it can resume where it left off if the process crashes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Checklist before you hit &#8220;send&#8221;<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Approved marketing template, with an opt-out button.<\/li>\n\n\n<li>List filtered by marketing opt-in, with no opted-out contacts.<\/li>\n\n\n<li>Campaign volume within the portfolio&#8217;s current limit.<\/li>\n\n\n<li>Sending rate below the number&#8217;s throughput.<\/li>\n\n\n<li>Status webhook recording deliveries, reads and failures.<\/li>\n\n\n<li>Someone watching template quality in the first few hours.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently asked questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Can I send free-form text in bulk?<\/h3>\n\n\n\n<p>No. Free-form text is only allowed inside the 24-hour window opened by the customer. To start a conversation with a list, you need a template. See the <a href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-24-hour-customer-service-window\/\">WhatsApp 24-hour customer service window<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How many contacts can I start with?<\/h3>\n\n\n\n<p>A new portfolio can reach 250 unique recipients in 24 hours outside the customer service window. Business verification is one of the paths to 2,000. After that, the limit goes up automatically with quality and usage.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is a message with error 131049 billed?<\/h3>\n\n\n\n<p>Meta only charges for delivered messages. A message with <code>failed<\/code> status isn&#8217;t delivered and therefore isn&#8217;t billed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can I use a utility template for a promotion, since it&#8217;s cheaper?<\/h3>\n\n\n\n<p>No. Meta classifies promotional content as marketing and can recategorize the template. Businesses that keep doing it can have their utility templates converted to marketing and the creation of new utility templates blocked for a period.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is it worth having several numbers to send more?<\/h3>\n\n\n\n<p>Not for reach. The limit is calculated per portfolio and shared by all its numbers. Several numbers can make sense for organization (brands, departments), not to get around the limit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Get started with Vectalk<\/h2>\n\n\n\n<p>Vectalk gives you access to the official API with the same payloads and webhooks as Meta and one token for all accounts. You pay a monthly fee and keep a prepaid balance; each delivered message is deducted from it, and Vectalk pays Meta, with no card at Meta. Create your account at <a href=\"https:\/\/apps.vectalk.com.br\/register\">apps.vectalk.com.br\/register<\/a> or reach the team through the <a href=\"https:\/\/vectalk.com.br\/contato.html\">contact page<\/a> to plan your integration.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Sources checked on October 29, 2026:<\/strong> <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/getting-opt-in\" target=\"_blank\" rel=\"noreferrer noopener\">Get opt-in for WhatsApp<\/a>, <a href=\"https:\/\/business.whatsapp.com\/policy\" target=\"_blank\" rel=\"noreferrer noopener\">WhatsApp Business Messaging Policy<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/messaging-limits\" target=\"_blank\" rel=\"noreferrer noopener\">Messaging limits<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/marketing-templates\/per-user-limits\" target=\"_blank\" rel=\"noreferrer noopener\">Per-user marketing limits<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/marketing-templates\" target=\"_blank\" rel=\"noreferrer noopener\">Marketing templates<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/marketing-messages\/overview\" target=\"_blank\" rel=\"noreferrer noopener\">Marketing Messages API overview<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/throughput\" target=\"_blank\" rel=\"noreferrer noopener\">Throughput<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/template-pausing\" target=\"_blank\" rel=\"noreferrer noopener\">Template pausing<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/policy-enforcement\" target=\"_blank\" rel=\"noreferrer noopener\">Policy enforcement<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/pricing\" target=\"_blank\" rel=\"noreferrer noopener\">Pricing<\/a>, <a href=\"https:\/\/business.whatsapp.com\/products\/platform-pricing\" target=\"_blank\" rel=\"noreferrer noopener\">Rate card on the WhatsApp Business site<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What Meta requires to send marketing templates at scale on the WhatsApp Business API: opt-in, the limits that cap volume, cost, and Node.js code with paced sending.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-715","post","type-post","status-publish","format-standard","hentry","category-blog"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WhatsApp Bulk Messaging on the Official API | Vectalk<\/title>\n<meta name=\"description\" content=\"WhatsApp bulk messaging on the official Business API: opt-in, marketing templates, limits, segmentation, cost, and why bought lists get numbers restricted.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WhatsApp Bulk Messaging on the Official API | Vectalk\" \/>\n<meta property=\"og:description\" content=\"WhatsApp bulk messaging on the official Business API: opt-in, marketing templates, limits, segmentation, cost, and why bought lists get numbers restricted.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Vectalk\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-29T13:17:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-29T13:17:35+00:00\" \/>\n<meta name=\"author\" content=\"wanderleyfcunha\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"wanderleyfcunha\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/en\\\/whatsapp-bulk-messaging-official-api\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/en\\\/whatsapp-bulk-messaging-official-api\\\/\"},\"author\":{\"name\":\"wanderleyfcunha\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\"},\"headline\":\"WhatsApp bulk messaging on the official API: how to do it without losing your number\",\"datePublished\":\"2026-10-29T13:17:32+00:00\",\"dateModified\":\"2026-10-29T13:17:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/en\\\/whatsapp-bulk-messaging-official-api\\\/\"},\"wordCount\":1876,\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/en\\\/whatsapp-bulk-messaging-official-api\\\/\",\"url\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/en\\\/whatsapp-bulk-messaging-official-api\\\/\",\"name\":\"WhatsApp Bulk Messaging on the Official API | Vectalk\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#website\"},\"datePublished\":\"2026-10-29T13:17:32+00:00\",\"dateModified\":\"2026-10-29T13:17:35+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\"},\"description\":\"WhatsApp bulk messaging on the official Business API: opt-in, marketing templates, limits, segmentation, cost, and why bought lists get numbers restricted.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/en\\\/whatsapp-bulk-messaging-official-api\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/en\\\/whatsapp-bulk-messaging-official-api\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/en\\\/whatsapp-bulk-messaging-official-api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WhatsApp bulk messaging on the official API: how to do it without losing your number\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/\",\"name\":\"Blog Vectalk\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\",\"name\":\"wanderleyfcunha\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"caption\":\"wanderleyfcunha\"},\"sameAs\":[\"https:\\\/\\\/vectalk.com.br\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WhatsApp Bulk Messaging on the Official API | Vectalk","description":"WhatsApp bulk messaging on the official Business API: opt-in, marketing templates, limits, segmentation, cost, and why bought lists get numbers restricted.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/","og_locale":"en_US","og_type":"article","og_title":"WhatsApp Bulk Messaging on the Official API | Vectalk","og_description":"WhatsApp bulk messaging on the official Business API: opt-in, marketing templates, limits, segmentation, cost, and why bought lists get numbers restricted.","og_url":"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/","og_site_name":"Blog Vectalk","article_published_time":"2026-10-29T13:17:32+00:00","article_modified_time":"2026-10-29T13:17:35+00:00","author":"wanderleyfcunha","twitter_card":"summary_large_image","twitter_misc":{"Written by":"wanderleyfcunha","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/#article","isPartOf":{"@id":"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/"},"author":{"name":"wanderleyfcunha","@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b"},"headline":"WhatsApp bulk messaging on the official API: how to do it without losing your number","datePublished":"2026-10-29T13:17:32+00:00","dateModified":"2026-10-29T13:17:35+00:00","mainEntityOfPage":{"@id":"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/"},"wordCount":1876,"articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/","url":"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/","name":"WhatsApp Bulk Messaging on the Official API | Vectalk","isPartOf":{"@id":"https:\/\/vectalk.com.br\/blog\/#website"},"datePublished":"2026-10-29T13:17:32+00:00","dateModified":"2026-10-29T13:17:35+00:00","author":{"@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b"},"description":"WhatsApp bulk messaging on the official Business API: opt-in, marketing templates, limits, segmentation, cost, and why bought lists get numbers restricted.","breadcrumb":{"@id":"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vectalk.com.br\/blog\/en\/whatsapp-bulk-messaging-official-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vectalk.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"WhatsApp bulk messaging on the official API: how to do it without losing your number"}]},{"@type":"WebSite","@id":"https:\/\/vectalk.com.br\/blog\/#website","url":"https:\/\/vectalk.com.br\/blog\/","name":"Blog Vectalk","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vectalk.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b","name":"wanderleyfcunha","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","caption":"wanderleyfcunha"},"sameAs":["https:\/\/vectalk.com.br\/blog"]}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts\/715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/comments?post=715"}],"version-history":[{"count":1,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts\/715\/revisions"}],"predecessor-version":[{"id":717,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts\/715\/revisions\/717"}],"wp:attachment":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/media?parent=715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/categories?post=715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/tags?post=715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}