<?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: Kofo Sal</title>
    <description>The latest articles on DEV Community by Kofo Sal (@anontechsis).</description>
    <link>https://dev.to/anontechsis</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%2F1460989%2Fce19af9d-f681-4185-b3c3-626f38382086.png</url>
      <title>DEV Community: Kofo Sal</title>
      <link>https://dev.to/anontechsis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anontechsis"/>
    <language>en</language>
    <item>
      <title>Direct Meta WhatsApp Cloud API Integration: A Developer’s Guide (No BSP Required)</title>
      <dc:creator>Kofo Sal</dc:creator>
      <pubDate>Mon, 27 Jul 2026 09:29:15 +0000</pubDate>
      <link>https://dev.to/anontechsis/direct-meta-whatsapp-cloud-api-integration-a-developers-guide-no-bsp-required-2cm6</link>
      <guid>https://dev.to/anontechsis/direct-meta-whatsapp-cloud-api-integration-a-developers-guide-no-bsp-required-2cm6</guid>
      <description>&lt;p&gt;Integrating directly with the Meta WhatsApp Cloud API gives you complete ownership of your messaging infrastructure. Yes, it requires a bit more engineering effort, but the payoff is huge: no vendor lock-in, lower costs, and full control over authentication, webhooks, message templates, and delivery tracking.&lt;br&gt;
This guide focuses on building a robust pipeline for Utility (transactional) messages—think confirmations, notifications, reminders, and status updates.&lt;/p&gt;

&lt;p&gt;Note Business Verification is the longest part of this process (days to weeks). Start it on Day 1 while you build the infrastructure in parallel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Make sure you have these ready before diving into the Meta dashboard:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A registered legal business &amp;amp; a business website (with visible legal name, address, and contact info).&lt;/li&gt;
&lt;li&gt;A dedicated phone number for the WhatsApp Business API (Note: Once registered, this number cannot be used on the regular WhatsApp/WhatsApp Business mobile apps).&lt;/li&gt;
&lt;li&gt;Backend infrastructure capable of hosting HTTPS webhooks.&lt;/li&gt;
&lt;li&gt;Secure storage for API credentials (e.g., AWS Secrets Manager, HashiCorp Vault, or environment variables).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phase 1: Meta Account Setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Step 1: Create a Meta Business Account&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Head to business.facebook.com and create your Business Manager. This is your central admin portal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tip: Ensure your website’s footer exactly matches the legal name, address, and contact info you enter here. Meta’s automated and manual reviewers will cross-check this. Inconsistencies are the #1 cause of verification rejection.&lt;/p&gt;

&lt;p&gt;Step 2: Create a Meta Developer App&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;a href="https://developers.facebook.com/" rel="noopener noreferrer"&gt;developers.facebook.com.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create a new app → Select Business as the type.&lt;/li&gt;
&lt;li&gt;Associate it with your Meta Business Account.&lt;/li&gt;
&lt;li&gt;Add the WhatsApp product.&lt;/li&gt;
&lt;li&gt;Meta will automatically provision a test WABA (WhatsApp Business Account), a test phone number, and temporary API credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Save these IDs immediately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Phone Number ID&lt;/li&gt;
&lt;li&gt;WhatsApp Business Account (WABA) ID&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Step 3: Register a Production Phone Number&lt;br&gt;
Choose a number that can receive SMS or voice calls for OTP verification. Reserve it exclusively for API messaging.&lt;/p&gt;

&lt;p&gt;Step 4: Complete Business Verification&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to Business Settings → Security Center → Start Business Verification.&lt;/li&gt;
&lt;li&gt;You’ll need to upload documents like a Certificate of Incorporation, utility bill, or bank statement. All details must exactly match your Business Manager profile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Step 5: Generate a Permanent Access Token&lt;br&gt;
Temporary tokens expire in 24 hours. For production, you need a System User token:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Business Settings → Users → System Users.&lt;/li&gt;
&lt;li&gt;Create a System User with the Admin role.&lt;/li&gt;
&lt;li&gt;Assign the WhatsApp app and Business Account to this user.&lt;/li&gt;
&lt;li&gt;Generate the permanent token.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security Rule: Never hardcode this token or commit it to GitHub. Use environment variables or a secret manager.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 2: Required Permissions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Keep your app’s permission scope as lean as possible. In the Meta App Dashboard, ensure only these are enabled:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Permission&lt;/strong&gt; whatsapp_business_messaging&lt;br&gt;
&lt;strong&gt;Purpose&lt;/strong&gt;   Required for sending and receiving WhatsApp messages and media   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Permission&lt;/strong&gt; whatsapp_business_management&lt;br&gt;
&lt;strong&gt;Purpose&lt;/strong&gt;    Required for managing WhatsApp Business Accounts and           message templates&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Permissions Not Required&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The following permissions are generally unnecessary for standard transactional messaging integrations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;business_management&lt;/li&gt;
&lt;li&gt;email&lt;/li&gt;
&lt;li&gt;public_profile&lt;/li&gt;
&lt;li&gt;manage_app_solution&lt;/li&gt;
&lt;li&gt;whatsapp_business_manage_events&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These permissions support unrelated Meta products or specialized business use cases and can typically be omitted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 3: Webhook Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Webhooks are how Meta tells your backend about delivery statuses, incoming replies, and template approvals.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configure the Endpoint
In the Meta App Dashboard (WhatsApp → Configuration → Configure Webhooks):
Callback URL: Your publicly accessible HTTPS endpoint (e.g., &lt;a href="https://api.yourdomain.com/webhooks/whatsapp" rel="noopener noreferrer"&gt;https://api.yourdomain.com/webhooks/whatsapp&lt;/a&gt;).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Verify Token: A secret string you define. Meta will send a GET request with this token to verify your endpoint. Validate this token in your code before responding!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Subscribe to the Right Fields
Don’t subscribe to everything. Limit noise by only checking these essentials:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Webhook Field&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why You Need It&lt;/li&gt;
&lt;li&gt;messages&lt;/li&gt;
&lt;li&gt;message_template_status_update&lt;/li&gt;
&lt;li&gt;message_template_quality_update&lt;/li&gt;
&lt;li&gt;phone_number_quality_update&lt;/li&gt;
&lt;li&gt;account_update / account_alerts&lt;/li&gt;
&lt;li&gt;security&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ignore: calls, flows, payment_configuration_update, message_echoes, etc., unless you are explicitly building those features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 4: Message Templates&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Meta requires pre-approved templates for any business-initiated conversation outside the 24-hour customer service window.&lt;/p&gt;

&lt;p&gt;For transactional systems, always use the UTILITY category. Do not use MARKETING for system notifications, as they face stricter scrutiny, higher pricing, and different approval criteria.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Template Approval Best Practices&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use descriptive, unique template names (e.g., order_dispatch_v1 instead of update).&lt;/li&gt;
&lt;li&gt;Ensure variable placeholders ({{1}}, {{2}}) are meaningful and consistently ordered.&lt;/li&gt;
&lt;li&gt;Test templates in the sandbox environment before submitting for production review.&lt;/li&gt;
&lt;li&gt;Monitor the message_template_status_update webhook to automate your internal dashboard’s template status.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>backend</category>
      <category>infrastructure</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Battle of Js Frameworks</title>
      <dc:creator>Kofo Sal</dc:creator>
      <pubDate>Fri, 28 Jun 2024 08:01:19 +0000</pubDate>
      <link>https://dev.to/anontechsis/battle-of-js-frameworks-4o9l</link>
      <guid>https://dev.to/anontechsis/battle-of-js-frameworks-4o9l</guid>
      <description>&lt;p&gt;Vue.js&amp;nbsp;against&amp;nbsp;ReactJS&lt;/p&gt;

&lt;p&gt;Selecting the right framework is important in the field of frontend development. ReactJS and Vue.js stand out as two of the most popular and useful systems among the array of possibilities. While each offers unique characteristics, ReactJS is often the preferred option for many developers and businesses over others.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;ReactJS's salient features include reusable UI components that make it easier to design and maintain huge apps. Ensures rapid performance and a seamless user experience by optimising modifications.It enables the writing of HTML-like code within JavaScript, improving debugging and readability. It provides a vast array of tools, libraries, and community resources, such as React Router for routing pages and Redux for state management.&lt;/p&gt;

&lt;p&gt;Vuejs offers simple syntax for information rendering, akin to HTML. Binding productive DOM modifications with intuitive information.Single-file components include JavaScript, CSS, and HTML. It provides a CLI for rapid prototyping and development.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vue.js contrary to ReactJS&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Vue.js&amp;nbsp;is&amp;nbsp;very&amp;nbsp;simple&amp;nbsp;to&amp;nbsp;understand&amp;nbsp;and&amp;nbsp;provides&amp;nbsp;documentation&amp;nbsp;that is&amp;nbsp;suitable&amp;nbsp;for&amp;nbsp;beginners,&amp;nbsp;but&amp;nbsp;ReactJS&amp;nbsp;has&amp;nbsp;simple&amp;nbsp;fundamental&amp;nbsp;concepts&amp;nbsp;that&amp;nbsp;are&amp;nbsp;enhanced&amp;nbsp;by&amp;nbsp;libraries&amp;nbsp;like&amp;nbsp;Redux&amp;nbsp;and&amp;nbsp;Respond&amp;nbsp;Router.ReactJS VirtualDOM ensures smooth updates and optimal performance. The Vue.js Reactivity framework ensures smooth updates, with performance variations often contingent on context.&amp;nbsp;With a wide ecosystem of third-party add-ons and community support, ReactJS is well-established. The Vue.js ecosystem is expanding, although it is not as big as the React.js community.&amp;nbsp;ReactJS is ideal for intricate, large-scale applications, while Vue.js is ideal for quick prototyping, dynamic online apps, and small to medium-sized businesses.&lt;br&gt;
&amp;nbsp;&lt;br&gt;
Still, Vue.js and ReactJS are excellent choices for front-end programming. Still, React is a better choice for complex and large-scale applications because of its execution, community, and adaptability.&lt;/p&gt;

&lt;p&gt;Are you interested in learning more about the &lt;a href="https://hng.tech/internship"&gt;HNG internship&lt;/a&gt; and our projects? Visit the HNG Internship webpage. Explore our premium choices at &lt;a href="https://hng.tech/premium"&gt;HNG Premium&lt;/a&gt; and the talent pool at &lt;a href="https://hng.tech/hire"&gt;HNG Hire&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>vue</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
