{"id":296916,"date":"2026-04-30T15:29:08","date_gmt":"2026-04-30T15:29:08","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/besked-notifications\/"},"modified":"2026-04-30T15:28:30","modified_gmt":"2026-04-30T15:28:30","slug":"besked-wa-notifications","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/besked-wa-notifications\/","author":6017941,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.5.4","stable_tag":"1.5.4","tested":"6.9.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Besked Notifications","header_author":"Hardweb.it","header_description":"Send WhatsApp notifications via the Besked API. Native WooCommerce integration for order notifications.","assets_banners_color":"545454","last_updated":"2026-04-30 15:28:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/besked.it","header_author_uri":"https:\/\/hardweb.it","rating":0,"author_block_rating":0,"active_installs":0,"downloads":61,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.4":{"tag":"1.5.4","author":"giangel84","date":"2026-04-30 15:28:30"}},"upgrade_notice":{"1.4.0":"<p>New: WordPress user import, custom phone field mapping, media attachments for campaigns.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3519684,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3519684,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3519711,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3519711,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings page \u2014 API configuration and session management","2":"Contact address book with search, filters, and bulk actions","3":"Campaign editor with live WhatsApp preview","4":"WooCommerce order notification templates","5":"Abandoned cart automation rules"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2512,4906,711,3160,286],"plugin_category":[41,45],"plugin_contributors":[128517],"plugin_business_model":[],"class_list":["post-296916","plugin","type-plugin","status-publish","hentry","plugin_tags-messaging","plugin_tags-notifications","plugin_tags-sms","plugin_tags-whatsapp","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_contributors-giangel84","plugin_committers-giangel84"],"banners":{"banner":"https:\/\/ps.w.org\/besked-wa-notifications\/assets\/banner-772x250.png?rev=3519711","banner_2x":"https:\/\/ps.w.org\/besked-wa-notifications\/assets\/banner-1544x500.png?rev=3519711","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/besked-wa-notifications\/assets\/icon-128x128.jpg?rev=3519684","icon_2x":"https:\/\/ps.w.org\/besked-wa-notifications\/assets\/icon-256x256.jpg?rev=3519684","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Besked WhatsApp Notifications connects your WordPress site to the Besked WhatsApp messaging platform, enabling you to:<\/p>\n\n<ul>\n<li>Send automated WhatsApp notifications for WooCommerce orders (new order, processing, completed, cancelled, refunded, on-hold, and custom statuses)<\/li>\n<li>Manage a contact address book with WhatsApp consent (GDPR-compliant)<\/li>\n<li>Create and schedule broadcast campaigns to contact lists with per-recipient personalisation<\/li>\n<li>Track abandoned carts and send automated recovery messages<\/li>\n<li>Import contacts from WooCommerce orders, WordPress users, or CSV files<\/li>\n<li>Collect WhatsApp consent at checkout, on the account page, and via a dedicated \"My Account\" section<\/li>\n<\/ul>\n\n<h4>Key Features<\/h4>\n\n<p><strong>Order Notifications<\/strong>\nAutomatically notify customers on every order status change with fully customisable message templates and dynamic placeholders (<code>{order_number}<\/code>, <code>{order_total}<\/code>, <code>{customer_first_name}<\/code>, etc.).<\/p>\n\n<p><strong>Contact Management<\/strong>\nFull-featured address book with search, filtering, list segmentation, CSV import\/export, and bulk actions (enable\/revoke consent, add\/remove from lists).<\/p>\n\n<p><strong>Broadcast Campaigns<\/strong>\nCompose WhatsApp campaigns with a live preview editor (bold, italic, strikethrough, monospace), attach images or documents, schedule delivery, and track per-contact delivery logs.<\/p>\n\n<p><strong>Abandoned Cart Recovery<\/strong>\nDetect abandoned carts and automatically send recovery messages after a configurable delay, with optional discount coupon codes.<\/p>\n\n<p><strong>GDPR &amp; Consent<\/strong>\nCollect explicit WhatsApp consent at checkout and in the account area. Contacts can unsubscribe via a secure tokenised link in any message.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>A Besked account and API key \u2014 sign up at <a href=\"https:\/\/besked.it\">besked.it<\/a><\/li>\n<li>WordPress 6.2 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>WooCommerce 5.0+ (optional \u2014 required only for order notifications and cart tracking)<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Besked WhatsApp messaging API (provided by Besked.it, https:\/\/besked.it) to deliver WhatsApp messages and to manage WhatsApp sessions. Using the plugin therefore requires an active Besked account and an API key, which the site owner enters in the plugin settings.<\/p>\n\n<p><strong>What the service is and what it is used for<\/strong><\/p>\n\n<p>Besked is a third-party WhatsApp messaging gateway. The plugin relies on it to:<\/p>\n\n<ul>\n<li>Send single WhatsApp messages (for example, WooCommerce order status notifications).<\/li>\n<li>Send bulk\/broadcast WhatsApp campaigns to contact lists, with optional media attachments.<\/li>\n<li>Retrieve the list of WhatsApp sessions available for the account.<\/li>\n<li>Check the connection status of a WhatsApp session.<\/li>\n<\/ul>\n\n<p><strong>What data is sent, and when<\/strong><\/p>\n\n<p>The following requests are made to <code>https:\/\/app.besked.it<\/code>:<\/p>\n\n<ul>\n<li><code>POST \/api\/v1\/send<\/code> \u2014 every time a single WhatsApp notification is sent (for example, when a WooCommerce order changes status, or an abandoned cart recovery message is triggered). Data sent: the configured Session ID, the recipient phone number in E.164 format, the message body, and optionally a media URL, media type and file name.<\/li>\n<li><code>POST \/api\/v1\/send\/bulk<\/code> \u2014 every time a campaign is dispatched. Data sent: the Session ID, the message template and the recipient list (phone number plus any per-recipient personalisation variables), and optional media.<\/li>\n<li><code>GET \/api\/v1\/sessions<\/code> \u2014 when the site administrator opens the plugin settings page, to display the list of available WhatsApp sessions.<\/li>\n<li><code>GET \/api\/v1\/sessions\/{session_id}\/status<\/code> \u2014 when the site administrator checks the connection status of a session.<\/li>\n<\/ul>\n\n<p>Every request includes the API key configured by the site owner, sent as the <code>X-API-Key<\/code> HTTP header for authentication. No data is sent to Besked for visitors who have not given WhatsApp consent (consent is stored per contact as <code>whatsapp_consent = 1<\/code>).<\/p>\n\n<p><strong>Service provider, terms and privacy<\/strong><\/p>\n\n<p>The service is provided by Besked.it. For details about how Besked handles the data it receives, please refer to the provider's legal documents:<\/p>\n\n<ul>\n<li>Terms of Service: https:\/\/besked.it\/termini.html<\/li>\n<li>Privacy Policy: https:\/\/besked.it\/privacy-policy.html<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>besked-wa-notifications<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install directly from the WordPress plugin directory.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Besked \u2192 Impostazioni<\/strong> and enter your API Key and Session ID from your <a href=\"https:\/\/app.besked.it\">Besked dashboard<\/a>.<\/li>\n<li>Configure notification templates under <strong>Notifiche WooCommerce<\/strong>.<\/li>\n<li>(Optional) Enable WhatsApp consent collection under <strong>GDPR &amp; Consenso<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20besked%20account%3F\"><h3>Do I need a Besked account?<\/h3><\/dt>\n<dd><p>Yes. The plugin sends messages through the Besked API. You need a Besked account and an active WhatsApp session. Sign up at <a href=\"https:\/\/besked.it\">besked.it<\/a>.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20woocommerce%3F\"><h3>Does it work without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. The contact address book, campaign management, and manual messaging features work independently of WooCommerce. Order notification and cart abandonment features require WooCommerce.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr%20compliant%3F\"><h3>Is it GDPR compliant?<\/h3><\/dt>\n<dd><p>The plugin includes a built-in consent system. You can collect explicit opt-in at checkout and in the customer account area. Contacts can unsubscribe at any time via a secure link. No message is sent to contacts without <code>whatsapp_consent = 1<\/code>.<\/p><\/dd>\n<dt id=\"what%20placeholders%20are%20available%20in%20message%20templates%3F\"><h3>What placeholders are available in message templates?<\/h3><\/dt>\n<dd><p>Order templates: <code>{order_number}<\/code>, <code>{order_date}<\/code>, <code>{order_total}<\/code>, <code>{order_status}<\/code>, <code>{customer_first_name}<\/code>, <code>{customer_last_name}<\/code>, <code>{customer_email}<\/code>, <code>{billing_address}<\/code>, <code>{shipping_address}<\/code>, <code>{payment_method}<\/code>, <code>{order_items}<\/code>, <code>{site_name}<\/code>, <code>{site_url}<\/code>, <code>{customer_note}<\/code>, <code>{bacs_details}<\/code>, <code>{unsubscribe}<\/code>.<\/p>\n\n<p>Campaign templates: <code>{first_name}<\/code>, <code>{last_name}<\/code>, <code>{phone}<\/code>, <code>{email}<\/code>, <code>{site_name}<\/code>, <code>{site_url}<\/code>, <code>{unsubscribe}<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20send%20to%20contacts%20without%20woocommerce%3F\"><h3>Can I send to contacts without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Import contacts via CSV or from existing WordPress users (with custom phone field mapping via <strong>Impostazioni \u2192 Mappa campi custom<\/strong>), then create a campaign or send manual messages.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.4<\/h4>\n\n<ul>\n<li>Code quality: in <code>ajax_media_upload()<\/code> removed the unused <code>require_once wp-admin\/includes\/media.php<\/code> and moved <code>require_once wp-admin\/includes\/image.php<\/code> immediately before <code>wp_generate_attachment_metadata()<\/code>, so each core admin file is loaded right before the function from it is used<\/li>\n<li>Security: added an explicit <code>wp_verify_nonce( 'woocommerce-process_checkout' )<\/code> check at the start of <code>validate_phone()<\/code>, <code>sanitize_phone_on_save()<\/code> and <code>save_checkout_data()<\/code> in the WooCommerce checkout integration, so the nonce verification is visible inline (it was already enforced upstream by WooCommerce)<\/li>\n<li>Security: added a <code>besked_media_filters<\/code> nonce to the Besked Media admin page sort\/filter links and form, with <code>wp_verify_nonce<\/code> on incoming requests; filter and sort query args are now ignored unless accompanied by a valid nonce<\/li>\n<\/ul>\n\n<h4>1.5.3<\/h4>\n\n<ul>\n<li>Code quality: replaced all inline <code>&lt;script&gt;<\/code> and <code>&lt;style&gt;<\/code> tags with <code>wp_enqueue_script()<\/code>, <code>wp_enqueue_style()<\/code>, <code>wp_add_inline_script()<\/code>, and <code>wp_localize_script()<\/code> per WordPress coding standards<\/li>\n<li>Security: added nonce verification to the checkout cart-tracking AJAX endpoint (<code>besked_track_billing<\/code>)<\/li>\n<li>Security: input fields of the abandoned-cart automation save handler are now individually sanitised with the appropriate WordPress functions (<code>sanitize_text_field<\/code>, <code>wp_kses_post<\/code>, <code>absint<\/code>, whitelist checks)<\/li>\n<li>Security: replaced direct SQL interpolation with <code>$wpdb-&gt;prepare()<\/code> and placeholders across campaigns, messages, contacts, abandoned-carts and lists queries<\/li>\n<li>Docs: added the <code>== External services ==<\/code> section describing the Besked API usage, data sent and links to the provider's Terms of Service and Privacy Policy<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added \"Import from WordPress users\" feature with phone field mapping<\/li>\n<li>Added \"Custom field mapping\" settings tab for non-WooCommerce phone fields<\/li>\n<li>Added media attachments (image\/document) to broadcast campaigns<\/li>\n<li>Added Besked Media library page with bulk delete<\/li>\n<li>Added CSV import with auto-detected delimiter and column mapping<\/li>\n<li>Improved bulk action confirmation prompts<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added broadcast campaigns with per-recipient variable substitution<\/li>\n<li>Added live WhatsApp preview editor with formatting toolbar<\/li>\n<li>Added campaign scheduling and per-contact delivery logs<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added contact list segmentation<\/li>\n<li>Added GDPR unsubscribe tokens<\/li>\n<li>Added My Account \"Notification preferences\" endpoint<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added abandoned cart tracking and automated recovery messages<\/li>\n<li>Added Formidable Forms integration<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Send WhatsApp notifications via Besked API. Native WooCommerce integration for order notifications, contact management, and broadcast campaigns.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/296916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=296916"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/giangel84"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=296916"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=296916"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=296916"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=296916"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=296916"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=296916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}