{"id":315379,"date":"2026-05-20T13:34:58","date_gmt":"2026-05-20T13:34:58","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/codeatoz-cloud-messaging-for-woocommerce\/"},"modified":"2026-05-20T13:33:39","modified_gmt":"2026-05-20T13:33:39","slug":"codeatoz-cloud-messaging-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/codeatoz-cloud-messaging-for-woocommerce\/","author":23453096,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.6","stable_tag":"1.4.6","tested":"6.9.4","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"CodeAtoZ \u2013 Cloud Messaging for WooCommerce","header_author":"CodeAtoZ","header_description":"Send WooCommerce order notifications via WhatsApp using Meta's Cloud API. GDPR-compliant checkout opt-in, STOP keyword handling, encrypted token storage. Direct Meta integration \u2014 no BSP middleman, no markup on message costs.","assets_banners_color":"4f6371","last_updated":"2026-05-20 13:33:39","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/codeatoz.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":28,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.6":{"tag":"1.4.6","author":"codeatoz","date":"2026-05-20 13:33:39"}},"upgrade_notice":{"1.3.1":"<p>Minor UI refinements and readme expansion for WordPress.org submission. Existing settings and message logs are preserved on update.<\/p>","1.3.0":"<p>WordPress.org compliance pass. Recommended for all users. No database changes \u2014 safe to update.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3539414,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3539414,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3539414,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3539414,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3539414,"resolution":"1","location":"assets","locale":"","width":1400,"height":700},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3539414,"resolution":"2","location":"assets","locale":"","width":1400,"height":1103},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3539414,"resolution":"3","location":"assets","locale":"","width":1400,"height":778},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3539414,"resolution":"4","location":"assets","locale":"","width":1400,"height":712}},"screenshots":{"1":"<p><strong>WhatsApp order notifications on mobile<\/strong> \u2014 A real WhatsApp conversation showing the full order journey: confirmed \u2192 shipped with tracking \u2192 delivered, plus a customer reply. This is exactly what your customers receive on their phones, powered directly by Meta's Cloud API.<\/p>","2":"<p><strong>Connection settings<\/strong> \u2014 Enter your Meta Phone Number ID, WhatsApp Business Account ID, permanent System User Token, and App Secret. The Webhook URL and Verify Token are auto-generated and copy-to-clipboard ready. A live \"Test Connection\" button confirms your setup works before going live.<\/p>","3":"<p><strong>Message templates<\/strong> \u2014 Browse all your Meta-approved WhatsApp templates fetched live from your account. Utility and Marketing categories shown with status indicators. Use \"Refresh from Meta\" to sync after creating new templates in the Meta Business portal.<\/p>","4":"<p><strong>Message log<\/strong> \u2014 Full delivery history for every outgoing and incoming message. Shows queue status (Action Scheduler), connection status, pending count, and per-message details including template name, recipient phone, direction, and delivery status.<\/p>"}},"plugin_section":[],"plugin_tags":[263693,2512,38803,3160,286],"plugin_category":[41,45],"plugin_contributors":[256075],"plugin_business_model":[],"class_list":["post-315379","plugin","type-plugin","status-publish","hentry","plugin_tags-cloud-api","plugin_tags-messaging","plugin_tags-order-notifications","plugin_tags-whatsapp","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_contributors-codeatoz","plugin_committers-codeatoz"],"banners":{"banner":"https:\/\/ps.w.org\/codeatoz-cloud-messaging-for-woocommerce\/assets\/banner-772x250.png?rev=3539414","banner_2x":"https:\/\/ps.w.org\/codeatoz-cloud-messaging-for-woocommerce\/assets\/banner-1544x500.png?rev=3539414","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/codeatoz-cloud-messaging-for-woocommerce\/assets\/icon-128x128.png?rev=3539414","icon_2x":"https:\/\/ps.w.org\/codeatoz-cloud-messaging-for-woocommerce\/assets\/icon-256x256.png?rev=3539414","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/codeatoz-cloud-messaging-for-woocommerce\/assets\/screenshot-1.png?rev=3539414","caption":"<p><strong>WhatsApp order notifications on mobile<\/strong> \u2014 A real WhatsApp conversation showing the full order journey: confirmed \u2192 shipped with tracking \u2192 delivered, plus a customer reply. This is exactly what your customers receive on their phones, powered directly by Meta's Cloud API.<\/p>"},{"src":"https:\/\/ps.w.org\/codeatoz-cloud-messaging-for-woocommerce\/assets\/screenshot-2.png?rev=3539414","caption":"<p><strong>Connection settings<\/strong> \u2014 Enter your Meta Phone Number ID, WhatsApp Business Account ID, permanent System User Token, and App Secret. The Webhook URL and Verify Token are auto-generated and copy-to-clipboard ready. A live \"Test Connection\" button confirms your setup works before going live.<\/p>"},{"src":"https:\/\/ps.w.org\/codeatoz-cloud-messaging-for-woocommerce\/assets\/screenshot-3.png?rev=3539414","caption":"<p><strong>Message templates<\/strong> \u2014 Browse all your Meta-approved WhatsApp templates fetched live from your account. Utility and Marketing categories shown with status indicators. Use \"Refresh from Meta\" to sync after creating new templates in the Meta Business portal.<\/p>"},{"src":"https:\/\/ps.w.org\/codeatoz-cloud-messaging-for-woocommerce\/assets\/screenshot-4.png?rev=3539414","caption":"<p><strong>Message log<\/strong> \u2014 Full delivery history for every outgoing and incoming message. Shows queue status (Action Scheduler), connection status, pending count, and per-message details including template name, recipient phone, direction, and delivery status.<\/p>"}],"raw_content":"<!--section=description-->\n<p><strong>CodeAtoZ \u2013 Cloud Messaging for WooCommerce<\/strong> connects your WooCommerce store directly to Meta's WhatsApp Business Cloud API. Send order confirmations, processing updates, shipping notifications, and delivery alerts to your customers on the world's most popular messaging app \u2014 without paying any third-party BSP middleman.<\/p>\n\n<p>You pay Meta's per-conversation pricing <strong>directly<\/strong>. No markup, no monthly platform fees, no vendor lock-in. Meta gives every business 1,000 free service conversations per month, which covers most small stores entirely.<\/p>\n\n<h4>Why use WhatsApp for order notifications?<\/h4>\n\n<ul>\n<li><strong>98% open rates<\/strong> \u2014 compared to ~20% for email. Customers read WhatsApp messages within minutes.<\/li>\n<li><strong>No SMS costs<\/strong> \u2014 WhatsApp Cloud API is dramatically cheaper than SMS gateways in most countries.<\/li>\n<li><strong>Two-way conversation<\/strong> \u2014 customers can reply with questions, change requests, or feedback.<\/li>\n<li><strong>Mobile-first<\/strong> \u2014 works perfectly on every smartphone, no app installation needed by the customer.<\/li>\n<li><strong>Trusted channel<\/strong> \u2014 customers already use WhatsApp daily, no learning curve.<\/li>\n<\/ul>\n\n<h4>Features (Free version)<\/h4>\n\n<p><strong>Order Status Notifications<\/strong><\/p>\n\n<p>Send a WhatsApp message automatically on every WooCommerce order status change:<\/p>\n\n<ul>\n<li>Order confirmed (pending payment)<\/li>\n<li>Order processing (payment received)<\/li>\n<li>Order on-hold (manual review)<\/li>\n<li>Order shipped (with tracking link)<\/li>\n<li>Order delivered<\/li>\n<li>Order completed<\/li>\n<li>Order cancelled<\/li>\n<li>Order refunded<\/li>\n<li>Order failed<\/li>\n<\/ul>\n\n<p>Each event has its own message template with full variable substitution \u2014 order number, customer name, total amount, shipping address, tracking URL, and more.<\/p>\n\n<p><strong>GDPR-Compliant Opt-In<\/strong><\/p>\n\n<ul>\n<li>Customizable consent checkbox at checkout (classic and Blocks Checkout supported)<\/li>\n<li>Configure the checkbox wording, default state, and required\/optional behavior<\/li>\n<li>Records opt-in consent with timestamp and IP address (legal compliance)<\/li>\n<li>Integrates with the WordPress Personal Data Exporter and Eraser tools<\/li>\n<li>Compatible with Cookie\/GDPR consent banner plugins<\/li>\n<\/ul>\n\n<p><strong>STOP-Keyword Auto-Unsubscribe<\/strong><\/p>\n\n<ul>\n<li>Customers can reply \"STOP\", \"UNSUBSCRIBE\", \"QUIT\" or \"END\" to any message to opt out<\/li>\n<li>Automatic recognition \u2014 no manual subscriber management needed<\/li>\n<li>Confirmation message sent back to the customer<\/li>\n<li>Opt-out preserved across orders \u2014 you never need to remember it manually<\/li>\n<li>Easy admin re-opt-in tool for accidental unsubscribes<\/li>\n<\/ul>\n\n<p><strong>Staff Notifications (Single Phone)<\/strong><\/p>\n\n<ul>\n<li>Alert your phone via WhatsApp the moment a new order arrives<\/li>\n<li>Alert on failed payments and refund requests<\/li>\n<li>Configurable per-event triggers<\/li>\n<li>(Multi-staff notification lists are available in the Pro version)<\/li>\n<\/ul>\n\n<p><strong>Click-to-Chat &amp; Share Buttons<\/strong><\/p>\n\n<ul>\n<li>WhatsApp \"Chat with us\" button for product pages and shop sidebar<\/li>\n<li>WhatsApp share button so customers can share products with friends<\/li>\n<li>Configurable phone number, pre-filled message, and button position<\/li>\n<\/ul>\n\n<p><strong>Built-in Message Log<\/strong><\/p>\n\n<ul>\n<li>Every outgoing and incoming WhatsApp message is logged with status (Sent \u2192 Delivered \u2192 Read \u2192 Failed)<\/li>\n<li>Click any log entry to see the full payload, error code, and Meta message ID<\/li>\n<li>Filter by status, phone, date range, or specific order<\/li>\n<li>Configurable retention (default 90 days) to keep the database lean<\/li>\n<\/ul>\n\n<p><strong>In-Plugin Setup Guide<\/strong><\/p>\n\n<ul>\n<li>6-step walkthrough takes new merchants from \"just installed\" to \"first message sent\"<\/li>\n<li>Click-to-copy webhook URL and verify token<\/li>\n<li>Live FAQ covering Cloud API pricing tiers, template rejection causes, message delivery troubleshooting<\/li>\n<li>Accessible both as a top-level menu item and inside Settings<\/li>\n<\/ul>\n\n<p><strong>Technical Excellence<\/strong><\/p>\n\n<ul>\n<li>Direct Meta Graph API integration (no proxy, no third-party server in the middle)<\/li>\n<li>Encrypted access-token storage (OpenSSL AES-256-CBC)<\/li>\n<li>HMAC-verified webhook for delivery and read receipts<\/li>\n<li>Action Scheduler queue with WP-Cron fallback (reliable delivery even under load)<\/li>\n<li>HPOS (High-Performance Order Storage) compatible<\/li>\n<li>Blocks Checkout compatible<\/li>\n<li>Translation-ready with .pot file and 9 sample .po translations included<\/li>\n<li>Modern WordPress admin UI with charts (Chart.js bundled locally \u2014 no CDN loads)<\/li>\n<li>All code escapes output, sanitizes input, verifies nonces, checks capabilities<\/li>\n<\/ul>\n\n<h4>Who is this for?<\/h4>\n\n<ul>\n<li>Online stores that want to <strong>stop losing customers to email-overload<\/strong> \u2014 WhatsApp gets read, email doesn't.<\/li>\n<li>Stores in <strong>WhatsApp-heavy markets<\/strong> (India, Brazil, Indonesia, Spain, Mexico, Italy, Argentina, Saudi Arabia, etc.) where customers prefer WhatsApp over SMS.<\/li>\n<li><strong>Direct-to-consumer (DTC) brands<\/strong> that want a personal, mobile-first customer experience.<\/li>\n<li><strong>B2B \/ wholesale stores<\/strong> that need fast confirmation and shipping updates to business buyers.<\/li>\n<li><strong>High-ticket stores<\/strong> where lost orders are expensive and proactive communication directly affects conversion.<\/li>\n<li><strong>Cash-on-Delivery (COD) markets<\/strong> where confirmation messaging dramatically reduces fake orders (basic version free; OTP verification in Pro).<\/li>\n<\/ul>\n\n<h4>Pro version<\/h4>\n\n<p>A Pro add-on plugin is available on <a href=\"https:\/\/codeatoz.com\/whatsapp-commerce-engine\">codeatoz.com<\/a> that unlocks advanced commerce automation modules:<\/p>\n\n<ul>\n<li><strong>Abandoned Cart Recovery<\/strong> \u2014 automatic follow-up sequences for incomplete checkouts (configurable delay + max messages + multi-step cadence)<\/li>\n<li><strong>COD Verification with OTP<\/strong> \u2014 verify Cash-on-Delivery orders before fulfillment (massive fake-order reduction)<\/li>\n<li><strong>Back-in-Stock Alerts<\/strong> \u2014 \"Notify Me\" widget on out-of-stock products, auto-message when restocked<\/li>\n<li><strong>Review Collector<\/strong> \u2014 request product reviews a configurable number of days after delivery<\/li>\n<li><strong>Payment Reminders<\/strong> \u2014 automated reminders for pending bank-transfer \/ unpaid orders, with auto-cancel option<\/li>\n<li><strong>Address Confirmation<\/strong> \u2014 interactive button confirmation for high-value or risky orders<\/li>\n<li><strong>WhatsApp Returns Flow<\/strong> \u2014 full conversational return request, photo upload, refund\/exchange selection<\/li>\n<li><strong>Catalog Sync<\/strong> \u2014 push your WooCommerce product catalog to WhatsApp Business Catalog<\/li>\n<li><strong>WhatsApp OTP Login<\/strong> \u2014 passwordless customer login with phone + WhatsApp one-time code<\/li>\n<li><strong>Unlimited staff phones<\/strong> (free is limited to 1)<\/li>\n<li><strong>Multi-language template auto-detection<\/strong> for non-English markets<\/li>\n<li><strong>Quiet Hours engine<\/strong> \u2014 respect customer timezones, avoid 3 AM notifications<\/li>\n<li><strong>Analytics dashboard<\/strong> \u2014 charts, per-module breakdown, delivery rates, revenue recovered<\/li>\n<li><strong>Inline-send architecture<\/strong> \u2014 sub-second message delivery using fastcgi_finish_request<\/li>\n<li><strong>Premium template library<\/strong> + priority email support<\/li>\n<\/ul>\n\n<p>The Pro version is a separate, standalone plugin \u2014 <strong>not a paid feature unlock<\/strong> of this free plugin. If you only ever use the free version, every free feature listed above will keep working forever with no nag screens or time limits.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to and uses the following external services to deliver its core functionality. By installing and using this plugin you acknowledge that data is transmitted to these services.<\/p>\n\n<p><strong>WhatsApp Business Cloud API (Meta Platforms, Inc.)<\/strong><\/p>\n\n<ul>\n<li><strong>What it is used for:<\/strong> Sending WhatsApp messages (order notifications, opt-in confirmations, transactional alerts), receiving delivery and read receipts via webhook, fetching the merchant's approved message-template list.<\/li>\n<li><strong>What data is sent:<\/strong> Recipient phone number (only for customers who have opted in), message template name, template variables (e.g. customer first name, order ID, order total, shipment tracking URL), and the merchant's access token for authentication.<\/li>\n<li><strong>When data is sent:<\/strong> Whenever a WooCommerce order changes status, when a customer opts in or out, when the merchant clicks \"Refresh templates\", and when the merchant triggers a test message.<\/li>\n<li><strong>Service endpoint:<\/strong> https:\/\/graph.facebook.com (Meta Graph API, v21.0)<\/li>\n<li><strong>Provider:<\/strong> Meta Platforms, Inc.<\/li>\n<li><strong>Terms of Service:<\/strong> https:\/\/developers.facebook.com\/terms<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/www.whatsapp.com\/legal\/business-policy<\/li>\n<\/ul>\n\n<p>This plugin does <strong>not<\/strong> connect to any other external service. All other functionality (message queue, log, settings, subscriber list, dashboard) runs entirely on your own WordPress install. No telemetry, no analytics, no tracking pixels.<\/p>\n\n<h3>Privacy &amp; Data Handling<\/h3>\n\n<p>This plugin stores the following customer data locally in your WordPress database:<\/p>\n\n<ul>\n<li><strong>Phone numbers<\/strong> \u2014 in the subscribers table and the message log. Only for customers who explicitly opt in at checkout.<\/li>\n<li><strong>Message content and delivery status<\/strong> \u2014 in the message log table. Retained for the duration set in Settings \u2192 Advanced \u2192 Log Retention (default 90 days, configurable from 7\u2013365 days).<\/li>\n<li><strong>Meta API credentials<\/strong> \u2014 access token, phone number ID, business account ID. Stored encrypted (OpenSSL AES-256-CBC) in the <code>wp_options<\/code> table.<\/li>\n<li><strong>Opt-in consent records<\/strong> \u2014 timestamp + IP address of the consent event, stored alongside customer phone number for legal compliance.<\/li>\n<\/ul>\n\n<h4>Data export &amp; erasure<\/h4>\n\n<p>Customers can request their personal data via the standard WordPress Personal Data Export \/ Erasure tools (<strong>Tools \u2192 Export Personal Data \/ Erase Personal Data<\/strong>). This plugin registers the appropriate WordPress GDPR hooks to include WhatsApp messaging data in exports and to erase it on request.<\/p>\n\n<p>Customers can also send the keyword \"STOP\", \"UNSUBSCRIBE\", \"QUIT\" or \"END\" to your WhatsApp Business number to opt out immediately \u2014 no email or admin intervention needed.<\/p>\n\n<h4>Data sent to Meta<\/h4>\n\n<p>Meta receives the phone number and message content of every outbound notification. Meta's WhatsApp Business privacy policy governs how they handle that data (link above). The plugin does not send any other customer data (name, address, email, purchase history) to Meta unless you explicitly include those values in your message template variables.<\/p>\n\n<!--section=installation-->\n<h4>Quick setup<\/h4>\n\n<ol>\n<li>Upload the plugin ZIP via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>, or unzip it into <code>wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin from the <strong>Plugins<\/strong> screen<\/li>\n<li>Go to <strong>WhatsApp Commerce \u2192 Setup Guide<\/strong> for a step-by-step walkthrough of Meta's API setup<\/li>\n<li>Or jump straight to <strong>WhatsApp Commerce \u2192 Settings \u2192 Connection<\/strong> if you already have your Meta credentials<\/li>\n<\/ol>\n\n<h4>Detailed setup<\/h4>\n\n<p>You'll need a Meta Business account, a Meta Developer App with WhatsApp product enabled, and a phone number not currently registered to WhatsApp Personal or Business. The built-in Setup Guide walks you through:<\/p>\n\n<ol>\n<li>Creating a Meta Business account<\/li>\n<li>Creating a WhatsApp Business App in Meta Developers<\/li>\n<li>Copying credentials (Access Token, Phone Number ID, WhatsApp Business Account ID) into the plugin<\/li>\n<li>Configuring the webhook (Callback URL + Verify Token) so the plugin receives delivery + read receipts<\/li>\n<li>Approving your message templates with Meta (utility templates auto-approve in minutes)<\/li>\n<li>Generating a permanent System User token for production use<\/li>\n<\/ol>\n\n<p>Setup typically takes 15\u201330 minutes. Once connected, send a test message from the Connection tab to confirm everything works, then start enabling order status notifications.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.2 or higher<\/li>\n<li>PHP 8.0 or higher<\/li>\n<li>WooCommerce 8.0 or higher<\/li>\n<li>A Meta Business account (free)<\/li>\n<li>A phone number for your WhatsApp Business presence<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20much%20does%20whatsapp%20cloud%20api%20cost%3F\"><h3>How much does WhatsApp Cloud API cost?<\/h3><\/dt>\n<dd><p>Meta gives every business <strong>1,000 free service conversations per month<\/strong> per WhatsApp Business number. Beyond that, conversations are priced per-country \u2014 typically $0.005 to $0.10 per conversation (a single conversation = 24 hours of back-and-forth messaging with one customer). You pay Meta directly. This plugin charges <strong>zero markup<\/strong> on message costs.<\/p>\n\n<p>For a small WooCommerce store doing 200 orders\/month, you'll likely stay entirely within the free tier. For a larger store, your monthly Cloud API bill is usually a fraction of equivalent SMS costs.<\/p><\/dd>\n<dt id=\"can%20i%20use%20my%20existing%20whatsapp%20number%3F\"><h3>Can I use my existing WhatsApp number?<\/h3><\/dt>\n<dd><p>Only if you first delete WhatsApp Personal or WhatsApp Business from the device. A phone number can only be registered to ONE of: WhatsApp Personal, WhatsApp Business app, or WhatsApp Cloud API. This plugin uses Cloud API, so you'll need to migrate the number off WhatsApp Personal\/Business first.<\/p>\n\n<p>If you want to keep your personal WhatsApp running, get a separate business number (a VOIP number, a second SIM, or a landline that can receive SMS or voice for verification will work).<\/p><\/dd>\n<dt id=\"why%20are%20my%20messages%20getting%20%22rate%20limited%22%3F\"><h3>Why are my messages getting \"rate limited\"?<\/h3><\/dt>\n<dd><p>Brand-new WhatsApp Business numbers start at <strong>Tier 1: 250 unique customer conversations per 24 hours<\/strong>. As long as your message quality stays \"High\" in Meta's quality assessment, Meta will auto-promote you to:<\/p>\n\n<ul>\n<li>Tier 2: 1,000 conversations\/24h<\/li>\n<li>Tier 3: 10,000 conversations\/24h<\/li>\n<li>Tier 4: 100,000 conversations\/24h<\/li>\n<li>Unlimited<\/li>\n<\/ul>\n\n<p>The progression typically takes 2\u20134 weeks. Send transactional (Utility) templates first \u2014 they build trust fastest with Meta's quality system.<\/p><\/dd>\n<dt id=\"my%20template%20was%20rejected%20by%20meta.%20what%20now%3F\"><h3>My template was rejected by Meta. What now?<\/h3><\/dt>\n<dd><p>The most common rejection reasons:<\/p>\n\n<ul>\n<li>The template feels promotional but was submitted as \"Utility\" \u2014 change the category to \"Marketing\" OR rewrite the wording to be transactional<\/li>\n<li>The template contains unverified claims (\"100% guaranteed!\", \"Best price!\")<\/li>\n<li>The template has placeholders at the start or end ({{1}} as the first or last token is not allowed)<\/li>\n<li>Header or footer text exceeds character limits<\/li>\n<\/ul>\n\n<p>Edit the template wording and resubmit. After two rejections of the same template name, use a new name (e.g., <code>order_shipped_v2<\/code>).<\/p><\/dd>\n<dt id=\"customer%20isn%27t%20receiving%20any%20messages%20%E2%80%94%20how%20do%20i%20debug%3F\"><h3>Customer isn't receiving any messages \u2014 how do I debug?<\/h3><\/dt>\n<dd><p>Visit <strong>WhatsApp Commerce \u2192 Message Log<\/strong> and find the most recent message to that customer. The status column tells you exactly what happened:<\/p>\n\n<ul>\n<li><strong>Failed<\/strong> \u2014 click the row to see Meta's error code. Common ones: <code>#131026<\/code> (number not on WhatsApp), <code>#132000<\/code> (template parameter mismatch), <code>#132001<\/code> (template language mismatch).<\/li>\n<li><strong>Sent but not Delivered<\/strong> \u2014 customer has likely blocked your number, or their phone has been offline for 30+ days.<\/li>\n<li><strong>Queued<\/strong> \u2014 Action Scheduler hasn't picked up the message yet. Check your WP-Cron or visit <strong>Tools \u2192 Scheduled Actions<\/strong>.<\/li>\n<li><strong>Customer is opted out<\/strong> \u2014 check <strong>Subscribers<\/strong> tab. They may have replied STOP previously.<\/li>\n<\/ul><\/dd>\n<dt id=\"does%20the%20plugin%20work%20with%20woocommerce%20blocks%20checkout%3F\"><h3>Does the plugin work with WooCommerce Blocks Checkout?<\/h3><\/dt>\n<dd><p>Yes. The opt-in checkbox renders on both classic checkout and the new Blocks Checkout. We update it as WooCommerce updates the Blocks API.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20with%20hpos%20%28high-performance%20order%20storage%29%3F\"><h3>Does the plugin work with HPOS (High-Performance Order Storage)?<\/h3><\/dt>\n<dd><p>Yes. HPOS compatibility is declared in the plugin header and tested against the latest WooCommerce versions.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translation-ready%3F\"><h3>Is the plugin translation-ready?<\/h3><\/dt>\n<dd><p>Yes. The <code>.pot<\/code> file is included in <code>\/languages\/<\/code>, plus sample <code>.po<\/code> files for German, French, Spanish, Italian, Dutch, Portuguese, Polish, Swedish, and Danish. Translations are loaded on the <code>init<\/code> hook with priority 5 so other modules can use translated strings safely.<\/p><\/dd>\n<dt id=\"how%20is%20my%20meta%20access%20token%20stored%3F\"><h3>How is my Meta access token stored?<\/h3><\/dt>\n<dd><p>The access token is encrypted using OpenSSL AES-256-CBC before being written to the <code>wp_options<\/code> table. The encryption key is derived from your WordPress AUTH_KEY constant. The token is decrypted only at the moment of an outbound API request to Meta. If you back up your database and accidentally expose it, the token cannot be used without your WordPress secret keys.<\/p><\/dd>\n<dt id=\"can%20i%20send%20broadcast%20%2F%20marketing%20messages%3F\"><h3>Can I send broadcast \/ marketing messages?<\/h3><\/dt>\n<dd><p>The free version focuses on transactional notifications (order updates, opt-in confirmations, click-to-chat). For bulk marketing campaigns, segmented broadcasts, or abandoned cart recovery, the Pro version on codeatoz.com adds those features. The free version does <strong>not<\/strong> include broadcast functionality.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20more%20help%3F\"><h3>Where can I get more help?<\/h3><\/dt>\n<dd><ul>\n<li><strong>Free version users<\/strong> \u2014 community support via the <a href=\"https:\/\/wordpress.org\/support\/plugin\/codeatoz-cloud-messaging-for-woocommerce\/\">WordPress.org plugin support forum<\/a><\/li>\n<li><strong>Pro version customers<\/strong> \u2014 priority email support at support@codeatoz.com<\/li>\n<li><strong>Documentation<\/strong> \u2014 visit <a href=\"https:\/\/codeatoz.com\">codeatoz.com<\/a> for in-depth setup guides and video walkthroughs<\/li>\n<\/ul><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Setup Guide promoted to top-level admin menu and Settings tab for discoverability<\/li>\n<li>Sidebar upsell now anchored to viewport right edge (position: fixed)<\/li>\n<li>Renamed for WordPress.org submission (display name and slug); internal identifiers unchanged so existing settings are preserved across updates<\/li>\n<li>readme.txt expanded with full external service disclosure and privacy section<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>WordPress.org plugin review compliance pass<\/li>\n<li>Chart.js bundled locally under <code>assets\/js\/vendor\/<\/code> (MIT license attribution included)<\/li>\n<li>All <code>$_GET<\/code> \/ <code>$_POST<\/code> reads wrapped with <code>wp_unslash()<\/code> before sanitization<\/li>\n<li>All <code>$wpdb<\/code> queries use <code>prepare()<\/code> or have appropriate phpcs:ignore documentation<\/li>\n<li>Template ternary output wrapped with <code>esc_attr()<\/code> \/ <code>wp_kses_post()<\/code><\/li>\n<li>Inline <code>&lt;script&gt;<\/code> extracted to enqueued <code>admin-help.js<\/code><\/li>\n<li><code>base64_decode<\/code> calls commented with security justification<\/li>\n<li>readme description rewritten to honestly reflect free-version features only<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Activity feed bug fix \u2014 phone column was using wrong DB field<\/li>\n<li>Active Templates mini card replaces New Subscribers in free dashboard<\/li>\n<li>Friendlier context labels in Recent Activity (\"Order update #1234\" vs generic \"Order\")<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>New Setup Guide tab with 6-step Meta walkthrough<\/li>\n<li>Click-to-copy webhook URL and verify token chips<\/li>\n<li>6-question FAQ accordion (pricing, rate limits, template rejection, debugging)<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Pro-only Settings tabs (Cart Recovery, Quiet Hours) properly filtered in free build<\/li>\n<li>Settings save handler refuses Pro-only tabs in free (defense in depth)<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Plugin version bump for cache busting<\/li>\n<li>Settings tab filtering refinements<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<\/ul>","raw_excerpt":"Send WooCommerce order notifications via WhatsApp using Meta&#039;s official Cloud API. GDPR opt-in, STOP keyword unsubscribe, encrypted tokens.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/315379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=315379"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/codeatoz"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=315379"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=315379"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=315379"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=315379"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=315379"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=315379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}