{"id":371825,"date":"2026-09-29T06:23:37","date_gmt":"2026-09-29T06:23:37","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/codzap-cod-confirmation-abandoned-cart-recovery-for-woocommerce\/"},"modified":"2026-09-29T06:20:48","modified_gmt":"2026-09-29T06:20:48","slug":"codzap","status":"publish","type":"plugin","link":"https:\/\/si.wordpress.org\/plugins\/codzap\/","author":23569596,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.7.1","stable_tag":"1.7.1","tested":"7.1.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"CODZap - COD Confirmation & Abandoned Cart Recovery for WooCommerce","header_author":"Curated Tools AI","header_description":"Confirm every Cash-on-Delivery order on WhatsApp before you ship it. Auto-cancels refused orders and restocks them, keeps customers updated on every status change, and wins back abandoned carts. Uses the official Meta WhatsApp Cloud API.","assets_banners_color":"3f9989","last_updated":"2026-09-29 06:20:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":48,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.7.1":{"tag":"1.7.1","author":"curatedtools","date":"2026-09-29 06:20:48","revision":3718371}},"upgrade_notice":{"1.7.1":"<p>Hardening of the plugin&#039;s database queries. Requires WordPress 6.2 or newer.<\/p>","1.7.0":"<p>Renames everything to the codzap prefix and moves your data across automatically. Afterwards, update the webhook Callback URL in your Meta app; the old one keeps working until you do.<\/p>","1.6.1":"<p>Housekeeping for the WordPress.org directory. Nothing behaves differently.<\/p>","1.6.0":"<p>Adds delivery and read ticks to the Inbox and a Follow Up Reports screen, and\ncloses a notice-spoofing hole. The message log table upgrades itself on the\nfirst admin page load.<\/p>","1.5.0":"<p>Adds review requests and puts customer questions on your own phone. Both need a\nnew template approved on the Templates screen.<\/p>","1.4.1":"<p>Fixes the Inbox thread not scrolling, which hid the newest messages.<\/p>","1.4.0":"<p>Adds backup and restore for your settings. Worth taking a backup as soon as you\nupdate.<\/p>","1.3.1":"<p>Fixes order links on stores using High Performance Order Storage.<\/p>","1.3.0":"<p>Adds the Inbox screen. Nothing else changes, and no settings need touching.<\/p>","1.2.0":"<p>Adds an optional deadline for orders nobody answers. Existing shops are\nunaffected until they switch it on.<\/p>","1.1.1":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3718367,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3718367,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3718367,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3718367,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.7.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3718367,"resolution":"1","location":"assets","locale":"","width":2100,"height":1650},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3718367,"resolution":"2","location":"assets","locale":"","width":645,"height":732},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3718367,"resolution":"3","location":"assets","locale":"","width":1511,"height":1576},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3718367,"resolution":"4","location":"assets","locale":"","width":2100,"height":1650},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3718367,"resolution":"5","location":"assets","locale":"","width":2100,"height":1650},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3718367,"resolution":"6","location":"assets","locale":"","width":2100,"height":1650},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3718367,"resolution":"7","location":"assets","locale":"","width":1429,"height":877}},"screenshots":{"1":"The dashboard: shipping cost avoided, recovery figures, and daily revenue at risk.","2":"The COD confirmation as the customer receives it, with Yes and No buttons.","3":"The Templates screen, which creates your Meta templates and shows their approval status.","4":"Message Preview \u2014 every message rendered against a real order before anything is sent.","5":"Settings, with per-status message wording.","6":"The message log, with Meta error codes explained.","7":"The connection check: it asks Meta directly and names the one thing that is wrong."}},"plugin_section":[],"plugin_tags":[15962,31179,38803,3160,286],"plugin_category":[45],"plugin_contributors":[283342],"plugin_business_model":[],"class_list":["post-371825","plugin","type-plugin","status-publish","hentry","plugin_tags-abandoned-cart","plugin_tags-cash-on-delivery","plugin_tags-order-notifications","plugin_tags-whatsapp","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-curatedtools","plugin_committers-curatedtools"],"banners":{"banner":"https:\/\/ps.w.org\/codzap\/assets\/banner-772x250.png?rev=3718367","banner_2x":"https:\/\/ps.w.org\/codzap\/assets\/banner-1544x500.png?rev=3718367","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/codzap\/assets\/icon-128x128.png?rev=3718367","icon_2x":"https:\/\/ps.w.org\/codzap\/assets\/icon-256x256.png?rev=3718367","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/codzap\/assets\/screenshot-1.png?rev=3718367","caption":"The dashboard: shipping cost avoided, recovery figures, and daily revenue at risk."},{"src":"https:\/\/ps.w.org\/codzap\/assets\/screenshot-2.png?rev=3718367","caption":"The COD confirmation as the customer receives it, with Yes and No buttons."},{"src":"https:\/\/ps.w.org\/codzap\/assets\/screenshot-3.png?rev=3718367","caption":"The Templates screen, which creates your Meta templates and shows their approval status."},{"src":"https:\/\/ps.w.org\/codzap\/assets\/screenshot-4.png?rev=3718367","caption":"Message Preview \u2014 every message rendered against a real order before anything is sent."},{"src":"https:\/\/ps.w.org\/codzap\/assets\/screenshot-5.png?rev=3718367","caption":"Settings, with per-status message wording."},{"src":"https:\/\/ps.w.org\/codzap\/assets\/screenshot-6.png?rev=3718367","caption":"The message log, with Meta error codes explained."},{"src":"https:\/\/ps.w.org\/codzap\/assets\/screenshot-7.png?rev=3718367","caption":"The connection check: it asks Meta directly and names the one thing that is wrong."}],"raw_content":"<!--section=description-->\n<p>Cash on Delivery brings in orders, and it brings in returns. You pack a parcel, pay for the forward leg, pay for the return leg, and the goods come back unsold. CODZap puts one question in front of the customer before any of that happens.<\/p>\n\n<p><strong>A customer places a COD order. A minute later they get a WhatsApp message:<\/strong><\/p>\n\n<blockquote>\n  <p>Hello Rakesh, thank you for your order at Your Store!\n  Order #1042 \u2014 2 x Classmate Notebook, 1 x Geometry Box\n  Total: \u20b9450.00 (Cash on Delivery)\n  Please confirm you would like us to process this order.\n  <strong>[ Yes, confirm ]  [ No, cancel ]<\/strong><\/p>\n<\/blockquote>\n\n<p>Tap <strong>Yes<\/strong> and the order carries on as normal. Tap <strong>No<\/strong> and CODZap cancels the order in WooCommerce, puts the stock back, notes the reason on the order, and replies with a friendly \"do come again\". You never packed it, and you never paid to ship it.<\/p>\n\n<p>The dashboard then tells you what that was worth: how many orders were stopped before dispatch, and the shipping cost you avoided.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li><strong>COD confirmation on WhatsApp<\/strong> \u2014 Yes \/ No buttons on every Cash-on-Delivery order.<\/li>\n<li><strong>Automatic cancellation and restock<\/strong> when a customer declines. Nothing to action by hand.<\/li>\n<li><strong>A deadline on silence<\/strong> \u2014 orders nobody ever answers close themselves after however many hours you allow, cancelled and restocked or held for your review.<\/li>\n<li><strong>Order status updates<\/strong> \u2014 Processing, Completed, On hold, Refunded, or any custom status.<\/li>\n<li><strong>Inbox<\/strong> \u2014 every conversation laid out the way the customer sees it in WhatsApp, grouped by number, with WhatsApp's own sent, delivered and read ticks, and the messages that failed marked in red.<\/li>\n<li><strong>Follow Up Reports<\/strong> \u2014 every abandoned, recovered and lost cart in one searchable list, with filters, a detail view and a CSV export.<\/li>\n<li><strong>Abandoned cart recovery<\/strong> \u2014 a reminder sequence with a one-tap link that puts the customer's cart back exactly as they left it.<\/li>\n<li><strong>Owner alerts<\/strong> \u2014 a WhatsApp to your own number on new COD orders and on every customer decision.<\/li>\n<li><strong>RTO savings dashboard<\/strong> \u2014 orders stopped before dispatch, and what that saved you in wasted shipping.<\/li>\n<li><strong>Message preview<\/strong> \u2014 see every message, rendered against a real order, before a single one is sent.<\/li>\n<li><strong>Message log<\/strong> \u2014 every message in and out, with Meta's error codes translated into plain English.<\/li>\n<li><strong>Backup and restore<\/strong> \u2014 download your whole configuration as a file, credentials included if you want them, and put it back in one step.<\/li>\n<li><strong>Review requests<\/strong> \u2014 ask for a review a few days after an order is delivered, with a button that opens the product they actually bought.<\/li>\n<li><strong>Customer questions on your own phone<\/strong> \u2014 whatever a customer writes reaches your personal WhatsApp within seconds, whether or not your own 24-hour window is open.<\/li>\n<\/ul>\n\n<h4>Setup takes about ten minutes, not an afternoon<\/h4>\n\n<p>Most WhatsApp plugins hand you a list of message templates and tell you to recreate them by hand in Meta's dashboard. Get one variable count wrong and every message fails at send time with an error code you have never seen.<\/p>\n\n<p>CODZap has a <strong>Templates<\/strong> screen. Paste your credentials, press one button, and it submits every template your enabled features need, then shows you their approval status live. It refuses to submit a template whose variables do not match what the plugin will actually send.<\/p>\n\n<h4>Replies work the way customers expect<\/h4>\n\n<p>Buttons are the happy path, but people type. CODZap understands <strong>yes \/ y \/ ok \/ confirm \/ haan \/ ji \/ 1<\/strong> and <strong>no \/ cancel \/ nahi \/ 2<\/strong>, in English, Hinglish and Devanagari. Anything ambiguous gets a polite re-prompt rather than a guessed cancellation \u2014 \"I want to change my delivery address\" will never cancel someone's order.<\/p>\n\n<h4>Works with your checkout, whichever one it is<\/h4>\n\n<p>Classic shortcode checkout and the newer WooCommerce Checkout block are both supported, including the marketing consent tick box for cart recovery. Compatible with High Performance Order Storage (HPOS).<\/p>\n\n<h4>Honest about consent<\/h4>\n\n<p>Cart reminders are marketing under Meta's rules, not transactional. CODZap requires the shopper to opt in before it sends any, and treats an unticked box as a refusal rather than as \"never asked\". You can turn that requirement off; we would strongly advise against it, because unsolicited marketing is the fastest way to get your business number restricted.<\/p>\n\n<h4>What it costs<\/h4>\n\n<p>The plugin is free. WhatsApp is not free, but it is cheap: Meta charges per 24-hour conversation, and in India a utility conversation is roughly \u20b90.12\u20130.14. Order confirmations and status updates are utility conversations. If a customer messages you first, the following 24 hours cost nothing at all.<\/p>\n\n<p>You pay Meta directly. CODZap adds no markup and takes no cut, because it never sits between you and WhatsApp \u2014 your site talks to Meta's API using your own credentials.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the <strong>WhatsApp Business Platform (Cloud API)<\/strong>, operated by Meta Platforms, Inc. It is required for the plugin to work: sending and receiving WhatsApp messages is the whole purpose of the plugin.<\/p>\n\n<p>Nothing is sent until you enter your own Meta credentials and switch the plugin on. No data is sent to Curated Tools AI, or to anyone other than Meta.<\/p>\n\n<p><strong>What the plugin sends to Meta, and when:<\/strong><\/p>\n\n<ul>\n<li><strong>When a Cash-on-Delivery order is placed, or an order changes status:<\/strong> the customer's phone number, first name, order number, order total and a summary of the items.<\/li>\n<li><strong>A few days after an order is delivered, if review requests are switched on:<\/strong> the customer's phone number, first name and order number, and a link to review the product they bought.<\/li>\n<li><strong>When abandoned cart recovery is switched on and the shopper has agreed to it:<\/strong> the shopper's phone number, first name, a summary of the cart, its total and a link that restores it.<\/li>\n<li><strong>Alerts to the shop owner's own number:<\/strong> for new orders and customer decisions, the customer's name, phone number and order total. When a customer writes something other than a Yes or No, the words they wrote and their number, so the owner can answer them.<\/li>\n<li><strong>When a customer's message arrives:<\/strong> a notice to Meta that it has been read, which is what shows the customer blue ticks.<\/li>\n<li><strong>When you use the Templates screen:<\/strong> the text of your message templates, for Meta to approve, and a request for their approval status.<\/li>\n<li><strong>When you use the Connection Check:<\/strong> requests for your WhatsApp number's details and your account's webhook subscription, to confirm the setup works.<\/li>\n<\/ul>\n\n<p><strong>What Meta sends to your site:<\/strong> the replies customers write, and a delivery receipt \u2014 sent, delivered, read or failed \u2014 for each message the plugin sends.<\/p>\n\n<ul>\n<li>Service: WhatsApp Business Platform \u2014 https:\/\/whatsappbusiness.com\/products\/business-platform\/<\/li>\n<li>Terms of Service: https:\/\/www.whatsapp.com\/legal\/business-terms<\/li>\n<li>Privacy Policy: https:\/\/www.whatsapp.com\/legal\/privacy-policy<\/li>\n<li>Business Data Processing Terms: https:\/\/www.whatsapp.com\/legal\/business-data-processing-terms<\/li>\n<\/ul>\n\n<p>You will need a Meta Business account and a WhatsApp Business Account. A phone number registered to the Cloud API cannot also be used in the normal WhatsApp or WhatsApp Business apps.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Create a Meta app with WhatsApp enabled, and register a business phone number. Use a <strong>separate number<\/strong> \u2014 once a number is on the Cloud API it can no longer be used in the regular WhatsApp app.<\/li>\n<li>In <strong>CODZap \u2192 Settings<\/strong>, paste your Permanent Access Token, Phone Number ID, WhatsApp Business Account ID and App Secret.<\/li>\n<li>Copy the webhook URL and verify token shown on that screen into your Meta app under WhatsApp \u2192 Configuration, and subscribe to the <code>messages<\/code> field.<\/li>\n<li>Go to <strong>CODZap \u2192 Templates<\/strong> and press <strong>Create all missing templates<\/strong>.<\/li>\n<li>Once they show as Approved, check the wording in <strong>CODZap \u2192 Preview<\/strong>, then tick <strong>Enable automation<\/strong>.<\/li>\n<\/ol>\n\n<p>Turn on <strong>Test mode<\/strong> first if you want a dry run \u2014 every message that would have been sent is written to the log, and nothing leaves your server.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20whatsapp%20business%20api%20account%3F\"><h3>Do I need a WhatsApp Business API account?<\/h3><\/dt>\n<dd><p>Yes. CODZap uses the official Meta WhatsApp Cloud API. Creating the account is free; Meta charges per conversation.<\/p><\/dd>\n<dt id=\"can%20i%20use%20my%20personal%20whatsapp%20number%3F\"><h3>Can I use my personal WhatsApp number?<\/h3><\/dt>\n<dd><p>You can, but you should not. Registering a number to the Cloud API stops it working in the regular WhatsApp and WhatsApp Business apps. Use a separate SIM for the store \u2014 it only needs to receive one verification message.<\/p><\/dd>\n<dt id=\"why%20do%20i%20have%20to%20get%20templates%20approved%3F\"><h3>Why do I have to get templates approved?<\/h3><\/dt>\n<dd><p>Meta requires pre-approved templates for any message a business starts. Replies within 24 hours of a customer messaging you are free-form and need no approval, which is why the thank-you and cancellation messages are not templates. The Templates screen submits the ones you need for you.<\/p><\/dd>\n<dt id=\"will%20it%20cancel%20an%20order%20by%20mistake%3F\"><h3>Will it cancel an order by mistake?<\/h3><\/dt>\n<dd><p>Only an explicit \"no\" cancels anything. Button taps are matched on their payload, never on their visible label, and typed replies are matched strictly \u2014 anything ambiguous gets a re-prompt. You can also set declines to move the order to On hold for review instead of cancelling.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20woocommerce%20checkout%20block%3F\"><h3>Does it work with the WooCommerce Checkout block?<\/h3><\/dt>\n<dd><p>Yes, including the cart-recovery consent field, which is registered through WooCommerce's own additional-fields API. The classic shortcode checkout is supported too.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20hpos%3F\"><h3>Does it work with HPOS?<\/h3><\/dt>\n<dd><p>Yes. CODZap declares compatibility with High Performance Order Storage and the cart and checkout blocks.<\/p><\/dd>\n<dt id=\"my%20messages%20are%20not%20sending.%20how%20do%20i%20find%20out%20why%3F\"><h3>My messages are not sending. How do I find out why?<\/h3><\/dt>\n<dd><p>Open <strong>CODZap \u2192 Message Log<\/strong>. Every attempt is recorded with Meta's error code translated into plain English, along with what to do about it.<\/p><\/dd>\n<dt id=\"does%20this%20send%20messages%20to%20customers%20who%20did%20not%20agree%20to%20it%3F\"><h3>Does this send messages to customers who did not agree to it?<\/h3><\/dt>\n<dd><p>Order confirmations and status updates are transactional messages about an order the customer placed. Abandoned cart reminders are marketing, and are only sent to shoppers who ticked the consent box at checkout.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.7.1<\/h4>\n\n<ul>\n<li>Every database query now goes through <code>$wpdb-&gt;prepare()<\/code>, including table\nnames (as <code>%i<\/code> identifier placeholders) and lists of values inside <code>IN (...)<\/code>\nclauses. Nothing is pasted into SQL by hand any more.<\/li>\n<li>Requires WordPress 6.2 or newer, which is where <code>%i<\/code> placeholders arrived.<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>Every name the plugin declares or stores now starts with <code>codzap<\/code>:\nfunctions, classes, constants, options, database tables, order meta,\ntransients, scheduled actions, hooks, admin pages, REST namespace, script\nhandles and CSS classes. The old <code>swa<\/code> prefix was too short to be unique.<\/li>\n<li>Updating from an earlier version moves existing data across automatically,\nonce, on the first page load: settings, WhatsApp opt-outs, the message log,\nsaved carts, order confirmation history and messages already queued.<\/li>\n<li>The webhook URL is now <code>\/wp-json\/codzap\/v1\/webhook<\/code>. On sites updated from\nan earlier version the old URL keeps working until Meta is pointed at the\nnew one, and a notice on CODZap's screens says so.<\/li>\n<li>Buttons, recovery links and review links in messages sent before the update\nstill work, as do WhatsApp templates Meta approved before it.<\/li>\n<li>Developer hooks were renamed to match, e.g. <code>swa_should_notify_status<\/code> is\nnow <code>codzap_should_notify_status<\/code>. Order meta keys now start <code>_codzap_<\/code>.<\/li>\n<li>The \"WooCommerce is required\" notice now shows only on the Plugins screen,\nand a duplicated App Secret warning was merged into one.<\/li>\n<\/ul>\n\n<h4>1.6.1<\/h4>\n\n<ul>\n<li>The admin screens' styles and the one script they use now load as proper\nfiles, enqueued only on CODZap's own screens, rather than being printed\ninto the page.<\/li>\n<li>The External services section of this readme now lists every data flow to\nand from Meta, including forwarded customer messages, review requests,\nowner alerts, read notices and delivery receipts.<\/li>\n<li>Declared as tested with WooCommerce 11.1.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>New: delivery and read ticks in the Inbox. A single grey tick when WhatsApp\nhas the message, two grey when it reaches the phone, two blue when it is\nread \u2014 with the time on hover. Receipts arrive out of order, so a message\nonly ever moves forward and a late \"delivered\" can never undo a \"read\".<\/li>\n<li>New: a message that fails after WhatsApp accepted it \u2014 Meta's marketing\nlimit, for instance \u2014 is now marked failed on the message itself, with\nMeta's reason and error code underneath.<\/li>\n<li>Fixed: a failed-delivery notice from Meta was counted as something the\ncustomer had written, so it started conversations of its own in the Inbox\nand showed the customer-wrote-last dot.<\/li>\n<li>New: Follow Up Reports. Every cart the plugin has recorded, searchable by\nname, email or number and filterable by status and date, with a detail view,\nsingle and bulk delete, and a CSV export of whatever the filters match. The\ndashboard's View All now opens it, instead of the message log, and carries\nthe dashboard's date range with it.<\/li>\n<li>Security: the CSV export neutralises cells that a spreadsheet would run as a\nformula. Names and emails are typed by shoppers, so an export must never\nexecute one when it is opened.<\/li>\n<li>Security: admin notices are no longer carried in the URL. Before, a link\ncrafted by anyone could put their own words inside a genuine notice on the\nsettings screen; they are now kept on the server, per user, and shown once.\nThis also clears the one warning from the official Plugin Check.<\/li>\n<li>The message log gains columns for WhatsApp message ids and receipts. The\ntable upgrades itself the first time an admin page loads after updating.\nMessages sent before the update keep a single tick, as their ids were never\nkept.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>New: review requests. A few days after an order reaches the status you treat\nas delivered, the customer is asked for a review. The button opens the\nproduct they bought, at its reviews section \u2014 or one fixed link for\neverybody, such as a Google listing, if you prefer. Off until you switch it\non, and skipped if the order has been refunded or moved on in the meantime.<\/li>\n<li>The per-order link is signed, so it cannot be edited into a link for somebody\nelse's order.<\/li>\n<li>New: customer messages now reach your own phone even when your 24-hour window\nis shut, through a new approved template built to carry their words. Until\nnow those messages could only arrive by email, because the owner alert\ntemplate has fixed order-shaped slots with nowhere to put free text.<\/li>\n<li>Both templates are created for you on the Templates screen, and both appear\non the Preview screen so the wording can be checked before anything is sent.<\/li>\n<li>Fixed: the Preview screen failed to load on any shop that had issued a\nrefund, because a refund was being offered in the order picker as if it were\nan order.<\/li>\n<li>Fixed: \"Delete &amp; recreate\" on the Templates screen deleted a template at Meta\nwithout asking first; its confirmation dialog never appeared.<\/li>\n<li>The review button address is always https, which Meta requires, even where\nthe site address in Settings is stored as http.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Fixed: the Inbox conversation had no scrollbar, so anything past the first\nscreenful - including the newest messages - could not be read. The panes were\ngrowing to fit their contents and being clipped by the card around them\ninstead of scrolling inside it. The conversation list had the same fault.<\/li>\n<li>The thread now opens on the newest message reliably, including when the tab\nis loaded in the background, and stops trying the moment you scroll yourself.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>New: backup and restore, at the foot of the Settings screen. Download the\nwhole configuration as a readable JSON file, and put it back in one step.<\/li>\n<li>A Meta access token is shown to you once and never again, so the backup can\ninclude your credentials \u2014 with a plain warning that the file is then as\nsensitive as the token itself. Untick the box and you get everything except\nthe two secrets, which is safe to keep anywhere.<\/li>\n<li>Restoring only writes settings this plugin defines, and a value the file\nleaves out keeps whatever the site already has. A backup taken without\ncredentials can never blank the ones you are running on.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fixed: the order links in the Message Log went nowhere on stores using\nWooCommerce's High Performance Order Storage, where an order is no longer a\npost. Both the log and the Inbox now ask WooCommerce for the address of an\norder rather than assembling it themselves.<\/li>\n<li>A log row for an order that has since been deleted shows the number without\na link, instead of a link that leads to an error page.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: an Inbox screen. Everything sent and received, grouped by number and\nlaid out as conversations rather than as log rows.<\/li>\n<li>Approved templates are shown as the customer read them: the wording you had\napproved, with that order's details filled in, and the buttons underneath.<\/li>\n<li>Messages that failed or were held back are marked in the thread with the\nreason, so a broken number stops being invisible.<\/li>\n<li>Search across numbers and message text, a link straight to the order each\nmessage was about, and a button that opens the same chat on your own phone\nto reply.<\/li>\n<li>Reading only. Nothing can be sent from this screen.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>New: a deadline for orders the customer never answers. Set the hours you are\nwilling to wait, and choose whether the order is then cancelled and restocked\nor put on hold for you to look at. Off until you switch it on.<\/li>\n<li>The clock runs from the last confirmation request sent, so a reminder that\nfalls back to the template gives the customer the full wait again.<\/li>\n<li>An order that has been answered, or that you have already dealt with by hand,\nis never touched by the deadline.<\/li>\n<li>Orders closed this way count towards the return-to-origin savings on the\ndashboard, and alert you on WhatsApp like any other decision.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<p>First public release.<\/p>\n\n<ul>\n<li>Asks every Cash on Delivery customer to confirm their order on WhatsApp,\nwith Yes and No buttons.<\/li>\n<li>Cancels and restocks the orders they refuse, before anything is packed.<\/li>\n<li>Sends an order update on every WooCommerce status change.<\/li>\n<li>Recovers abandoned baskets with a link that restores the basket, sent only\nto shoppers who agreed to it at checkout.<\/li>\n<li>Alerts you on new COD orders and on every customer decision.<\/li>\n<li>Passes on anything a customer writes that is not a Yes or a No, by WhatsApp\nwhen your service window is open and by email otherwise.<\/li>\n<li>Honours STOP and START, so a customer can unsubscribe themselves.<\/li>\n<li>Creates your Meta message templates for you, keeping the template variables\nand what the plugin sends in step.<\/li>\n<li>Previews every message against a real order before you send anything.<\/li>\n<li>Connection check that tells you which part of a Cloud API setup is wrong,\nrather than leaving you to guess why nothing happened.<\/li>\n<li>Full message log with Meta's error codes explained in plain English.<\/li>\n<li>Dashboard reporting on returns avoided and baskets recovered.<\/li>\n<li>Works with High Performance Order Storage and the block checkout.<\/li>\n<li>Supports WordPress's Export and Erase Personal Data tools.<\/li>\n<li>Fully translatable, with a template in \/languages.<\/li>\n<\/ul>","raw_excerpt":"Ask every Cash-on-Delivery customer to confirm before you ship. Refused orders cancel and restock themselves.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/371825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=371825"}],"author":[{"embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/curatedtools"}],"wp:attachment":[{"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=371825"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=371825"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=371825"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=371825"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=371825"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/si.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=371825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}