{"id":346104,"date":"2026-08-15T17:55:48","date_gmt":"2026-08-15T17:55:48","guid":{"rendered":"https:\/\/en-gb.wordpress.org\/plugins\/arrival-for-woo\/"},"modified":"2026-09-22T16:43:58","modified_gmt":"2026-09-22T16:43:58","slug":"arrival-for-woo","status":"publish","type":"plugin","link":"https:\/\/hy.wordpress.org\/plugins\/arrival-for-woo\/","author":18781233,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.1","stable_tag":"1.3.1","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Arrival for Woo","header_author":"EMBARK","header_description":"Delivery date and cutoff clarity for Woo \u2014 help shoppers know exactly when their order will arrive before they buy.","assets_banners_color":"101010","last_updated":"2026-09-22 16:43:58","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/embark.studio\/products\/arrival-for-woo\/","header_author_uri":"https:\/\/embark.studio","rating":0,"author_block_rating":0,"active_installs":0,"downloads":443,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"embarkstudio","date":"2026-08-15 17:55:13","revision":3648909},"1.0.1":{"tag":"1.0.1","author":"embarkstudio","date":"2026-08-17 13:27:54","revision":3651217},"1.0.2":{"tag":"1.0.2","author":"embarkstudio","date":"2026-08-19 16:32:35","revision":3655027},"1.0.3":{"tag":"1.0.3","author":"embarkstudio","date":"2026-08-20 13:46:29","revision":3657000},"1.1.0":{"tag":"1.1.0","author":"embarkstudio","date":"2026-08-23 11:16:36","revision":3661713},"1.1.1":{"tag":"1.1.1","author":"embarkstudio","date":"2026-08-24 09:58:35","revision":3663091},"1.2.0":{"tag":"1.2.0","author":"embarkstudio","date":"2026-09-01 15:23:36","revision":3676415},"1.3.0":{"tag":"1.3.0","author":"embarkstudio","date":"2026-09-22 16:26:14","revision":3707757},"1.3.1":{"tag":"1.3.1","author":"embarkstudio","date":"2026-09-22 16:43:58","revision":3707781}},"upgrade_notice":{"1.3.1":"<p>Removes a developer error message that could appear on your shop pages while WooCommerce was inactive, such as during its own update.<\/p>","1.3.0":"<p>Fixes a checkout fault where the method a shopper picked could be replaced by the one remembered from the product page, sending an order through as collection when they had chosen delivery, or the other way round. Also adds the fulfilment module to the Bricks element picker, a &quot;place it yourself&quot; option, and says when a postcode is outside your delivery area rather than hiding delivery.<\/p>","1.2.0":"<p>Product, cart and checkout pages can now be page-cached \u2014 checking a delivery date no longer starts a WooCommerce session. Adds a service summary per fulfilment method, per-method price display, and a placeable &quot;what happens next&quot; message.<\/p>","1.1.1":"<p>Fixes warning messages that could appear on shop, basket and checkout pages in 1.1.0, and restores per-country wording on the postcode field.<\/p>","1.1.0":"<p>Fixes a serious slowdown on cart and checkout for stores that ship to a single country. Also adds per-method opening hours and new blocks and shortcodes for the order confirmation page.<\/p>","1.0.3":"<p>Fixes a settings screen that could leave the Save button out of sight, and lists the opening-hours shortcode under Documentation.<\/p>","1.0.2":"<p>Delivery estimates now appear on the order summary and in order emails, alongside a new after-order message and opening-hours output.<\/p>","1.0.1":"<p>Deleting the plugin now keeps your settings.<\/p>","1.0.0":"<p>Initial public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3651291,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3651291,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3648909,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3648909,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3707781,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/?product=stoneware-table-lamp\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"features\":{\"networking\":true},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"arrival-for-woo\"},\"options\":{\"activate\":true}},{\"step\":\"setSiteOptions\",\"options\":{\"blogname\":\"Alder & Ash\",\"blogdescription\":\"Considered homeware, made to last.\"}},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\\\/arwoo-demo-postcode.php\",\"data\":\"<?php\\n\\\/**\\n * Alder & Ash demo: pre-seed the visitor's postcode so the Arrival module opens\\n * straight to results instead of an empty field. Demo-only; lives in mu-plugins\\n * inside the Playground instance and ships nowhere else.\\n *\\\/\\nadd_action( 'wp_head', function () {\\n    ?>\\n    <script>\\n    try {\\n        if ( ! localStorage.getItem( 'arwoo_postcode' ) ) {\\n            var now = Date.now().toString();\\n            localStorage.setItem( 'arwoo_postcode', '94110' );\\n            localStorage.setItem( 'arwoo_postcode_timestamp', now );\\n            localStorage.setItem( 'arwoo_country', 'US' );\\n            localStorage.setItem( 'arwoo_country_timestamp', now );\\n        }\\n    } catch ( e ) {}\\n    <\\\/script>\\n    <?php\\n}, 1 );\\n\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; if ( ! function_exists( 'WC' ) ) { return; }\\n\\n\\\/* Quiet WooCommerce's first-run onboarding so the preview opens on the store, not a wizard. *\\\/\\nupdate_option( 'woocommerce_onboarding_profile', array( 'skipped' => true ) );\\nupdate_option( 'woocommerce_task_list_hidden', 'yes' );\\nupdate_option( 'woocommerce_task_list_welcome_modal_dismissed', 'yes' );\\nupdate_option( 'woocommerce_show_marketplace_suggestions', 'no' );\\ndelete_transient( '_wc_activation_redirect' );\\n\\n\\\/* Alder & Ash \\u2014 San Francisco homeware store, USD. *\\\/\\nupdate_option( 'woocommerce_store_address', '60 29th Street' );\\nupdate_option( 'woocommerce_store_city', 'San Francisco' );\\nupdate_option( 'woocommerce_store_postcode', '94110' );\\nupdate_option( 'woocommerce_default_country', 'US:CA' );\\nupdate_option( 'woocommerce_currency', 'USD' );\\nupdate_option( 'woocommerce_calc_shipping', 'yes' );\\nupdate_option( 'woocommerce_enable_checkout_login_reminder', 'no' );\\n\\n\\\/* Let demo visitors complete a real order: guest checkout + Cash on Delivery\\n * (core gateway, no external service, works inside Playground). *\\\/\\nupdate_option( 'woocommerce_enable_guest_checkout', 'yes' );\\nupdate_option( 'woocommerce_cod_settings', array( 'enabled' => 'yes', 'title' => 'Pay on delivery', 'description' => 'Pay in cash when your order arrives.', 'enable_for_virtual' => 'yes' ) );\\n\\n\\\/* Catalogue: 8 believable products. Images sideloaded below (networking is on). *\\\/\\n$catalogue = array(\\n    array( 'Stoneware Table Lamp', 'stoneware-table-lamp', '89', 'Hand-glazed stoneware base with a natural linen shade. Warm, low and calm.', 'https:\\\/\\\/ps.w.org\\\/arrival-for-woo\\\/assets\\\/demo\\\/stoneware-table-lamp.jpg' ),\\n    array( 'Oak Side Table', 'oak-side-table', '149', 'Solid European oak, turned by hand. A quiet place for a book and a cup.', 'https:\\\/\\\/ps.w.org\\\/arrival-for-woo\\\/assets\\\/demo\\\/oak-side-table.jpg' ),\\n    array( 'Wool Area Rug 5x8', 'wool-area-rug', '219', 'Flat-woven New Zealand wool in undyed natural tones. Softens any room.', 'https:\\\/\\\/ps.w.org\\\/arrival-for-woo\\\/assets\\\/demo\\\/wool-area-rug.jpg' ),\\n    array( 'Rattan Pendant Shade', 'rattan-pendant-shade', '68', 'Open-weave rattan that throws warm, dappled evening light.', 'https:\\\/\\\/ps.w.org\\\/arrival-for-woo\\\/assets\\\/demo\\\/rattan-pendant-shade.jpg' ),\\n    array( 'Linen Throw', 'linen-throw', '45', 'Stonewashed Belgian linen. Gets softer every year you own it.', 'https:\\\/\\\/ps.w.org\\\/arrival-for-woo\\\/assets\\\/demo\\\/linen-throw.jpg' ),\\n    array( 'Ceramic Vase Set of 2', 'ceramic-vase-set', '38', 'Two matte, hand-thrown vessels in complementary heights.', 'https:\\\/\\\/ps.w.org\\\/arrival-for-woo\\\/assets\\\/demo\\\/ceramic-vase-set.jpg' ),\\n    array( 'Walnut Serving Board', 'walnut-serving-board', '32', 'End-grain walnut, food-safe oil finish. Kitchen workhorse, table centrepiece.', 'https:\\\/\\\/ps.w.org\\\/arrival-for-woo\\\/assets\\\/demo\\\/walnut-serving-board.jpg' ),\\n    array( 'Cast-Iron Candle Holders', 'cast-iron-candle-holders', '26', 'A weighted pair in blackened cast iron. Steady, simple, sculptural.', 'https:\\\/\\\/ps.w.org\\\/arrival-for-woo\\\/assets\\\/demo\\\/cast-iron-candle-holders.jpg' ),\\n);\\n\\nrequire_once ABSPATH . 'wp-admin\\\/includes\\\/media.php';\\nrequire_once ABSPATH . 'wp-admin\\\/includes\\\/file.php';\\nrequire_once ABSPATH . 'wp-admin\\\/includes\\\/image.php';\\n\\n$cat = wp_insert_term( 'Homeware', 'product_cat' );\\n$cat_id = is_wp_error( $cat ) ? 0 : (int) $cat['term_id'];\\n\\nforeach ( $catalogue as $row ) {\\n    list( $name, $slug, $price, $blurb, $img ) = $row;\\n    $product = new WC_Product_Simple();\\n    $product->set_name( $name );\\n    $product->set_slug( $slug );\\n    $product->set_regular_price( $price );\\n    $product->set_short_description( $blurb );\\n    $product->set_status( 'publish' );\\n    if ( $cat_id ) { $product->set_category_ids( array( $cat_id ) ); }\\n    $pid = $product->save();\\n    $att = media_sideload_image( $img, $pid, $name, 'id' );\\n    if ( ! is_wp_error( $att ) ) { set_post_thumbnail( $pid, $att ); }\\n}\\n\\n\\\/* Shipping: one US zone, three methods designed to show three DIFFERENT dates\\n * and two different countdowns at any time of day. *\\\/\\n$zone = new WC_Shipping_Zone();\\n$zone->set_zone_name( 'United States' );\\n$zone->add_location( 'US', 'country' );\\n$zone->save();\\n$standard = $zone->add_shipping_method( 'flat_rate' );\\n$express  = $zone->add_shipping_method( 'flat_rate' );\\n$free     = $zone->add_shipping_method( 'free_shipping' );\\n\\nupdate_option( 'woocommerce_flat_rate_' . $standard . '_settings', array( 'title' => 'Standard Delivery', 'cost' => '6.95', 'tax_status' => 'none' ) );\\nupdate_option( 'woocommerce_flat_rate_' . $express . '_settings', array( 'title' => 'Express Delivery', 'cost' => '14.95', 'tax_status' => 'none' ) );\\nupdate_option( 'woocommerce_free_shipping_' . $free . '_settings', array( 'title' => 'Free Delivery', 'requires' => 'min_amount', 'min_amount' => '150' ) );\\n\\n$weekdays = array( 1, 2, 3, 4, 5 );\\nupdate_option( 'arwoo_method_settings_' . $standard, array( 'min_days' => 2, 'max_days' => 4, 'processing_days' => 1, 'cutoff_time' => '15:00', 'delivery_days' => $weekdays ) );\\nupdate_option( 'arwoo_method_settings_' . $express,  array( 'min_days' => 1, 'max_days' => 1, 'processing_days' => 0, 'cutoff_time' => '17:30', 'delivery_days' => $weekdays ) );\\nupdate_option( 'arwoo_method_settings_' . $free,     array( 'min_days' => 3, 'max_days' => 5, 'processing_days' => 2, 'cutoff_time' => '15:00', 'delivery_days' => $weekdays ) );\\n\\n\\\/* Service days & hours: weekdays 08:00-18:00. Weekend gaps make the dates jump,\\n * which is the visible proof the plugin is computing rather than decorating. *\\\/\\n$schedule = array();\\nfor ( $d = 1; $d <= 7; $d++ ) {\\n    $schedule[ (string) $d ] = ( $d <= 5 )\\n        ? array( 'enabled' => 1, 'windows' => array( array( 'start' => '08:00', 'end' => '18:00' ) ) )\\n        : array( 'enabled' => 0, 'windows' => array() );\\n}\\n$general = get_option( 'arwoo_general_settings', array() );\\n$general = is_array( $general ) ? $general : array();\\n$general['delivery_service_schedule'] = $schedule;\\n$general['default_working_days']      = $weekdays;\\nupdate_option( 'arwoo_general_settings', $general );\\n\\nflush_rewrite_rules();\\n\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.1.0","1.1.1","1.2.0","1.3.0","1.3.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3676415,"resolution":"1","location":"assets","locale":"","width":2880,"height":1800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3676415,"resolution":"2","location":"assets","locale":"","width":2880,"height":1800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3676415,"resolution":"3","location":"assets","locale":"","width":2880,"height":1800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3676415,"resolution":"4","location":"assets","locale":"","width":2880,"height":1800}},"screenshots":{"1":"The delivery card on a product page \u2014 the arrival date, the cutoff countdown, and free delivery one click away.","2":"Free-delivery progress in the basket, with the arrival date on the delivery row.","3":"Checkout \u2014 every shipping option carries its own arrival date.","4":"Delivery days, windows and cutoffs, under WooCommerce \u2192 Arrival."}},"plugin_section":[],"plugin_tags":[3148,984,23288,3546,286],"plugin_category":[45,55],"plugin_contributors":[275880],"plugin_business_model":[],"class_list":["post-346104","plugin","type-plugin","status-publish","hentry","plugin_tags-checkout","plugin_tags-conversion","plugin_tags-delivery-date","plugin_tags-shipping","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-seo-and-marketing","plugin_contributors-embarkstudio","plugin_committers-embarkstudio","plugin_support_reps-embarkstudio"],"banners":{"banner":"https:\/\/ps.w.org\/arrival-for-woo\/assets\/banner-772x250.png?rev=3648909","banner_2x":"https:\/\/ps.w.org\/arrival-for-woo\/assets\/banner-1544x500.png?rev=3648909","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/arrival-for-woo\/assets\/icon-128x128.gif?rev=3651291","icon_2x":"https:\/\/ps.w.org\/arrival-for-woo\/assets\/icon-256x256.gif?rev=3651291","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/arrival-for-woo\/assets\/screenshot-1.png?rev=3676415","caption":"The delivery card on a product page \u2014 the arrival date, the cutoff countdown, and free delivery one click away."},{"src":"https:\/\/ps.w.org\/arrival-for-woo\/assets\/screenshot-2.png?rev=3676415","caption":"Free-delivery progress in the basket, with the arrival date on the delivery row."},{"src":"https:\/\/ps.w.org\/arrival-for-woo\/assets\/screenshot-3.png?rev=3676415","caption":"Checkout \u2014 every shipping option carries its own arrival date."},{"src":"https:\/\/ps.w.org\/arrival-for-woo\/assets\/screenshot-4.png?rev=3676415","caption":"Delivery days, windows and cutoffs, under WooCommerce \u2192 Arrival."}],"raw_content":"<!--section=description-->\n<p>Every shopper asks the same question: <strong>when will it get here?<\/strong><\/p>\n\n<p>Arrival reads your shipping zones, schedules and order cutoffs, then answers that question everywhere it matters \u2014 product page, cart, checkout \u2014 the way a board announces flights: a date, a time, a countdown. No guessing before the buy button. Fewer \"do you deliver to\u2026\" emails. Fewer abandoned carts.<\/p>\n\n<h4>What the board shows<\/h4>\n\n<ul>\n<li><strong>A real delivery date<\/strong> \u2014 \"Get it by Wed 22 Jul\", calculated from your zones, schedule and cutoffs, shown on product pages, cart and checkout.<\/li>\n<li><strong>An order-cutoff countdown<\/strong> \u2014 \"Order within 2 h 14 m\" states the deadline as a fact, so urgency never has to shout.<\/li>\n<li><strong>Postcode-aware answers<\/strong> \u2014 shoppers enter their postcode once and see the methods, prices and dates that actually apply to them.<\/li>\n<li><strong>Free-shipping progress<\/strong> \u2014 \"Add $7.20 more to unlock free delivery\" builds baskets with information, not persuasion.<\/li>\n<li><strong>Cache-compatible behaviour<\/strong> \u2014 dynamic postcode and date messaging designed for real WooCommerce environments with page caching.<\/li>\n<\/ul>\n\n<h4>Why store owners install it<\/h4>\n\n<p>Clarity converts. When the answer to \"when will it arrive?\" is on the page, shoppers don't leave to ask it by email \u2014 or leave for a store that answers it. Arrival exists to raise conversion, cut cart abandonment, and shrink your support inbox by moving fulfilment answers in front of the buy button.<\/p>\n\n<h4>Bricks Builder dynamic tags<\/h4>\n\n<ul>\n<li><code>{delivery_date}<\/code> \u2014 calculated delivery date<\/li>\n<li><code>{delivery_date:X}<\/code> \u2014 delivery date with additional days<\/li>\n<li><code>{delivery_location}<\/code> \u2014 postcode display or entry prompt<\/li>\n<li><code>{delivery_cutoff}<\/code> \u2014 order cutoff countdown<\/li>\n<li><code>{postcode_display}<\/code> \u2014 plain-text postcode display<\/li>\n<li><code>{order_delivery}<\/code> \u2014 the estimate saved against a placed order (also <code>{order_delivery:range}<\/code> and <code>{order_delivery:both}<\/code>)<\/li>\n<li><code>{delivery_hours}<\/code> \/ <code>{pickup_hours}<\/code> \u2014 opening hours for that channel<\/li>\n<\/ul>\n\n<h4>Shortcodes<\/h4>\n\n<ul>\n<li><code>[arwoo_calculator]<\/code> \u2014 the full delivery board<\/li>\n<li><code>[arwoo_delivery_date]<\/code> \u2014 delivery date for the current postcode<\/li>\n<li><code>[arwoo_delivery_cutoff]<\/code> \u2014 cutoff countdown<\/li>\n<li><code>[arwoo_postcode_display]<\/code> \u2014 cache-compatible postcode display<\/li>\n<li><code>[arwoo_delivery_location]<\/code> \u2014 cache-compatible delivery location info<\/li>\n<li><code>[arwoo_order_delivery]<\/code> \u2014 the estimate saved against a placed order, for thank-you pages, emails and account pages<\/li>\n<li><code>[arwoo_service_hours]<\/code> \u2014 your opening hours, stated once and kept accurate (<code>channel=\"pickup\"<\/code>, <code>format=\"list\"<\/code>)<\/li>\n<\/ul>\n\n<h4>Arrival Pro \u2014 know when to arrive<\/h4>\n\n<p>Delivery tells shoppers when it lands. <strong>Pickup tells them when to arrive<\/strong> \u2014 and that's what <a href=\"https:\/\/embark.studio\/products\/arrival-for-woo\/\">Arrival Pro<\/a> adds:<\/p>\n\n<ul>\n<li><strong>Pickup readiness<\/strong> \u2014 \"Ready from 16:40 \u00b7 Open until 17:30\", aware of your store's opening days and hours, so the trip is never a guess.<\/li>\n<li><strong>Unlimited pickup locations<\/strong> \u2014 multi-branch and multi-yard support.<\/li>\n<li><strong>Holidays<\/strong> \u2014 one-off closures the board respects automatically.<\/li>\n<li><strong>Recurring holidays<\/strong> \u2014 set Christmas once, forget it forever.<\/li>\n<li><strong>Custom styling<\/strong> \u2014 brand colours and CSS variables to match your storefront.<\/li>\n<li><strong>Google Places<\/strong> \u2014 address-assisted location entry.<\/li>\n<\/ul>\n\n<p>Arrival Pro is sold separately at <a href=\"https:\/\/embark.studio\/products\/arrival-for-woo\/\">embark.studio<\/a>. Everything described above the Pro section works in this free plugin, forever.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin does not connect to any external service. Delivery dates, order cutoffs, shipping\nmethods and free-shipping progress are all calculated locally from your WooCommerce shipping\nzones and settings. No data about your site or your shoppers is sent anywhere.<\/p>\n\n<h3>Third-party libraries<\/h3>\n\n<p>This plugin bundles the following GPL-compatible third-party assets:<\/p>\n\n<ul>\n<li>Phosphor Icons (regular weight) \u2014 MIT licensed, Copyright (c) 2020-2021 Phosphor Icons.\nUnmodified from the official distribution: https:\/\/github.com\/phosphor-icons\/web<\/li>\n<li>jQuery UI 1.13.2 theme stylesheet \u2014 MIT licensed, Copyright jQuery Foundation and other\ncontributors. Shipped as the official minified distribution\n(assets\/vendor\/jquery-ui\/jquery-ui.min.css); the unminified source and the ThemeRoller\nsettings used to build it are linked in the file's own header comment and available at\nhttps:\/\/jqueryui.com\/download\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/arrival-for-woo<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the <code>Plugins<\/code> screen in WordPress.<\/li>\n<li>Navigate to <code>WooCommerce &gt; Arrival<\/code> to configure your schedule, cutoffs and messaging.<\/li>\n<li>Set up your shipping settings in WooCommerce.<\/li>\n<li>Use shortcodes or Bricks Builder dynamic tags to place the board wherever your theme needs it.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20all%20woocommerce%20shipping%20methods%3F\"><h3>Does this work with all WooCommerce shipping methods?<\/h3><\/dt>\n<dd><p>Yes. Arrival works with standard WooCommerce shipping methods including flat rate, free shipping, and compatible third-party method setups.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20caching%20plugins%3F\"><h3>Is it compatible with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. The plugin uses cache-aware dynamic behaviour for postcode and date messaging, so customer-facing information stays reliable on cached pages.<\/p><\/dd>\n<dt id=\"does%20it%20support%20local%20pickup%3F\"><h3>Does it support local pickup?<\/h3><\/dt>\n<dd><p>Pickup readiness \u2014 including store opening days and hours, unlimited locations, and holiday handling \u2014 is part of <a href=\"https:\/\/embark.studio\/products\/arrival-for-woo\/\">Arrival Pro<\/a>. The free plugin focuses on shipping clarity.<\/p><\/dd>\n<dt id=\"can%20i%20customise%20the%20wording%20%E2%80%94%20for%20example%20%22delivery%20%26%20collection%22%20for%20a%20uk%20store%3F\"><h3>Can I customise the wording \u2014 for example \"delivery &amp; collection\" for a UK store?<\/h3><\/dt>\n<dd><p>The free plugin covers standard labels; full custom terminology, branding and styling are part of Arrival Pro.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20bricks%20builder%3F\"><h3>Does it work with Bricks Builder?<\/h3><\/dt>\n<dd><p>Yes. Arrival includes Bricks Builder dynamic-tag support and shortcode-based flexibility for custom storefront builds.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.1 - 2026-09-22<\/h4>\n\n<p><strong>Fixed<\/strong><\/p>\n\n<ul>\n<li><strong>No error message on your shop when WooCommerce is switched off.<\/strong> A block placed by shortcode printed a red developer message onto the page \u2014 visible to customers, who could do nothing about it and for whom it read as the shop being broken. WooCommerce is briefly inactive while it updates itself, so this could appear without anyone touching a setting. The block now shows nothing at all, and administrators get a plain explanation in its place.<\/li>\n<\/ul>\n\n<h4>1.3.0 - 2026-09-22<\/h4>\n\n<p><strong>New<\/strong><\/p>\n\n<ul>\n<li><strong>Put the product-page module where you want it.<\/strong> Alongside before and after Add to Basket, there is now \"Only where I place it\" \u2014 nothing is placed automatically, and you drop it in yourself with the shortcode or the Bricks element. Placing it by hand previously meant switching the module off under Integrations and then adding the shortcode: two settings that did not look related, and if you missed the first one the module appeared twice.<\/li>\n<li><strong>The fulfilment module is now a Bricks element<\/strong>, not only a shortcode. It sits in the Arrival group in the element picker with Display and Layout controls, and its heading and description can each be hidden or reworded on their own \u2014 useful where the section around it already names it, but you still want the line explaining what the field does.<\/li>\n<li><strong>See the module as your shoppers will, from the builder.<\/strong> \"Preview as\" shows it with no postcode entered, or worked out for a postcode you type, without touching the one your own browser is set to. Real rates and real dates; nothing is invented. It changes the canvas only.<\/li>\n<li><strong>Near dates are said in words.<\/strong> A delivery landing today or tomorrow reads \"Today\" or \"Tomorrow\" rather than a date you have to check against your own calendar. Only those two days, and never in email or on a placed order, where a message read the next day would say \"Today\" about yesterday. Switch it off under Customise \u2192 Date &amp; time formatting.<\/li>\n<\/ul>\n\n<p><strong>Improved<\/strong><\/p>\n\n<ul>\n<li><strong>A postcode you cannot deliver to now says so<\/strong>, instead of the delivery option disappearing. Shown alongside collection, dimmed, it says delivery is not available to that postcode yet, with a prompt to try another. Removing the option made a delivery-area limit look as though the shop does not deliver at all, and took the way out with it. Stores that genuinely do not deliver are unaffected.<\/li>\n<li><strong>Checking a postcode now shows the delivery forecast strip's loading placeholder<\/strong> while it works, the same one it shows on page load. Nothing happened on screen for the second the check takes, and the strip could ask for a postcode from somebody who had just entered one.<\/li>\n<li><strong>The \"enter your postcode\" invitation on the forecast strip now looks like something you can press<\/strong>, with a location pin and an underlined label. A dashed box of grey text reads as a placeholder or a disabled field, so there was no reason to think clicking it would do anything.<\/li>\n<\/ul>\n\n<p><strong>Fixed<\/strong><\/p>\n\n<ul>\n<li><strong>The method a shopper picks at checkout is the method they get.<\/strong> The remembered choice from the product page was applied again when the cart or checkout page loaded, and on a slow connection that could land a moment after the shopper had already switched to something else \u2014 quietly putting the remembered method back on the order while the checkout carried on showing the one they picked. An order placed in that moment went through as collection when the shopper had chosen delivery, or the other way round.<\/li>\n<li><strong>Delivery day numbers now mean the same thing all day.<\/strong> A method set to \"3 days\" delivered on the third day in the afternoon and the fourth in the morning, because the day the cutoff moved you to was being counted twice. \"3 days\" is now the third day either way. If you had adjusted a method's day count to work around this, check it after updating \u2014 its dates will now land a day earlier.<\/li>\n<li><strong>The fulfilment card no longer breaks for shoppers who can collect but cannot get delivery.<\/strong> Their card squeezed the availability text to nothing, which then wrapped one character per line into a tall column of empty card. The postcodes affected are the ones furthest from the shop.<\/li>\n<li><strong>Clearing your postcode now clears the delivery forecast strip too.<\/strong> Every other block updated and the strip kept showing the dates worked out for the postcode you had just removed, until the page was reloaded.<\/li>\n<li><strong>The postcode drawer slides in wherever it is opened from, and pressing Enter submits it.<\/strong> It never actually animated \u2014 the panel had nowhere to travel from \u2014 and the field is not inside a form, so the browser's usual \"Enter means go\" never applied.<\/li>\n<li><strong>A postcode button placed outside the delivery module now opens the address drawer.<\/strong> It only ever worked for buttons sitting inside the module itself.<\/li>\n<li><strong>The loading placeholder's sheen sweeps smoothly and in the right place.<\/strong> It had been travelling a longer path than it was drawn for, and doing it the expensive way.<\/li>\n<li><strong>Spacing in and around the fulfilment module is even.<\/strong> A gap above the module was left behind when the postcode form is hidden, and the space above the delivery date doubled up where there is no free-delivery progress to show.<\/li>\n<\/ul>\n\n<h4>1.2.0 - 2026-09-01<\/h4>\n\n<p><strong>New<\/strong><\/p>\n\n<ul>\n<li><strong>A service summary for each way of getting an order<\/strong>\u2014 a short explanation of how delivery, or collection, actually works. Show it above the cards, below them, or behind a \"How delivery works\" link. Each is written on that method's own settings screen, next to the message customers see after ordering.<\/li>\n<li><strong>The estimate on a placed order can now be written as a span<\/strong>\u2014 \"Get it between Mon 24 Aug and Thu 27 Aug\" \u2014 or as a single date for stores with a fixed lead time. Both are yours to edit, in their own Order page estimate section.<\/li>\n<li><strong>Show the price on a fulfilment card only when there is a charge (the new default), always, or never<\/strong>\u2014 set for each method.<\/li>\n<li><strong>The \"what happens next\" message can now be placed anywhere on a page you have designed yourself<\/strong>, as a block or a shortcode, so it can sit beside the order details rather than always above them.<\/li>\n<li><strong>Two more ways to present a method description<\/strong>: collapsed behind the method row, or as a text link below the cards.<\/li>\n<li><strong>A setting for the earliest-delivery line beneath the date<\/strong>, and the order number and customer email address are now available for your own wording.<\/li>\n<\/ul>\n\n<p><strong>Improved<\/strong><\/p>\n\n<ul>\n<li><strong>Pages carrying the fulfilment widget can now be held by a page cache.<\/strong> Checking a delivery date no longer starts a WooCommerce session or touches the shopper's basket, which is what made those pages uncacheable and slow.<\/li>\n<li><strong>The fulfilment card has been tightened throughout<\/strong>: blocks meet on a line, the date leads the method it belongs to, and the countdown is a plain row rather than a coloured panel competing with everything around it.<\/li>\n<li><strong>The loading placeholder now matches the card that replaces it, row for row<\/strong>, so the page no longer shifts as the card arrives.<\/li>\n<li><strong>Opening hours are now a \"View hours\" link on the method row itself, beside the service it describes.<\/strong> Where two cards sit side by side they stay the same height, whichever is selected.<\/li>\n<li><strong>Settings screens open and scroll noticeably faster on stores with several methods, collection points or stages.<\/strong><\/li>\n<li><strong>Wording in Customise now uses named tokens<\/strong>\u2014 {day}, {time_window}, {earliest}, {latest} \u2014 so a percent sign in your own copy is simply a percent sign.<\/li>\n<\/ul>\n\n<p><strong>Fixed<\/strong><\/p>\n\n<ul>\n<li><strong>\"Order within\" is legible on dark cards again, and sits evenly in its row.<\/strong><\/li>\n<li><strong>Turning off the collection method description now works<\/strong>\u2014 it used to follow the delivery setting and report nothing \u2014 and the secondary date line setting now governs both delivery and collection.<\/li>\n<li><strong>On a translated store the delivery countdown no longer reverts to English a second after the page loads.<\/strong><\/li>\n<li><strong>The free-delivery progress bar in the basket keeps up with the basket.<\/strong> Lowering a quantity back below the threshold left it saying free delivery had been applied while the totals charged for it, until the page was reloaded.<\/li>\n<li><strong>Smaller fixes to spacing inside the cards<\/strong>, and to addresses that printed the same line twice when a detail had been entered in two fields.<\/li>\n<\/ul>\n\n<h4>1.1.1 - 2026-08-24<\/h4>\n\n<p><strong>Fixed<\/strong><\/p>\n\n<ul>\n<li><strong>1.1.0 could show warning messages on your shop, basket and checkout pages.<\/strong> If your store also sells to more than one country, the postcode field used your store's default wording for every shopper instead of theirs \u2014 \"postcode\" for an Irish customer who should have seen \"Eircode\", or an American who should have seen \"ZIP Code\". No order was ever affected. Stores selling to one country saw only the warnings.<\/li>\n<\/ul>\n\n<h4>1.1.0 - 2026-08-23<\/h4>\n\n<p><strong>New<\/strong><\/p>\n\n<ul>\n<li><strong>Opening hours can now be set per delivery method.<\/strong> A next-day service and a weekly run no longer have to share one cut-off, so each one tells customers the truth about when it dispatches.<\/li>\n<li><strong>Where the order is going and who paid for it, and the service the order is on, are now available for your order confirmation page<\/strong> \u2014 as elements for Bricks, and as shortcodes for anywhere else.<\/li>\n<li><strong>New values you can drop into your own wording<\/strong>: the customer's name, the delivery or billing address, and the fulfilment method.<\/li>\n<li><strong>The opening-hours output is now placeable in Bricks as well as by shortcode<\/strong>, with an option to open it in a pop-up rather than sitting on the page.<\/li>\n<\/ul>\n\n<p><strong>Improved<\/strong><\/p>\n\n<ul>\n<li><strong>The \"order within\" countdown now changes as the cut-off gets closer<\/strong>, so a customer with ten minutes left sees something different from one with six hours.<\/li>\n<\/ul>\n\n<p><strong>Fixed<\/strong><\/p>\n\n<ul>\n<li><strong>Cart and checkout could take many seconds to load on stores that ship to a single country.<\/strong> The plugin was re-checking your shipping zone setup hundreds of times on every page load instead of once; it now works it out once and remembers the answer until you change your zones. Stores that ship to several countries were never affected.<\/li>\n<li><strong>A number of smaller corrections to the opening-hours output.<\/strong><\/li>\n<\/ul>\n\n<h4>1.0.3 - 2026-08-20<\/h4>\n\n<p><strong>Fixed<\/strong><\/p>\n\n<ul>\n<li><strong>The settings screen no longer cuts content off.<\/strong> The panel had been scrolling inside the page instead of with it, which left blank space below the shorter screens and put anything past the fold \u2014 the Save button included \u2014 behind a second scrollbar that was easy to miss.<\/li>\n<\/ul>\n\n<p><strong>Improved<\/strong><\/p>\n\n<ul>\n<li><strong>The <code>[arwoo_service_hours]<\/code> shortcode is now listed under Documentation.<\/strong> It has worked since 1.0.2, but there was no way to find it without being told it existed.<\/li>\n<li><strong>Shorter, plainer help text under the settings fields.<\/strong><\/li>\n<\/ul>\n\n<h4>1.0.2 - 2026-08-19<\/h4>\n\n<p><strong>New<\/strong><\/p>\n\n<ul>\n<li><strong>The delivery estimate now appears on the order summary<\/strong> \u2014 thank-you page, the customer's account order page, and order emails. It is saved with the order too, so packing slips, dispatch labels and exports can print it. Put it anywhere else with the new <code>[arwoo_order_delivery]<\/code> shortcode or Bricks tag.<\/li>\n<li><strong>A new After-order message<\/strong> under Arrival &gt; Delivery tells customers what happens next \u2014 \"we will call to confirm your slot\" \u2014 on the confirmation page, in their account and in the order email. Web and email addresses in it become links, so you can send people straight to your contact form.<\/li>\n<li><strong>Opening hours can now be shown anywhere<\/strong>, with the new <code>[arwoo_service_hours]<\/code> shortcode or Bricks tag. Consecutive days are grouped for you, so seven rows read as \"Monday to Friday 07:30\u201316:30, Saturday 08:00\u201315:00 and Sunday 09:30\u201313:00\". Write <code>{hours}<\/code> in your after-order message and they appear there too \u2014 and stay right when you change them.<\/li>\n<li><strong>On an order being collected, the estimate is headed with your own word for collection<\/strong>\u2014 \"Ready for Pickup\", or \"Ready for Click &amp; Collect\" if that is what you call it \u2014 instead of \"Estimated delivery\".<\/li>\n<\/ul>\n\n<p><strong>Fixed<\/strong><\/p>\n\n<ul>\n<li><strong>A cancelled, failed or refunded order no longer shows the after-order message<\/strong> telling the customer their order is on its way.<\/li>\n<li><strong>General fixes and polish<\/strong>: a same-day estimate no longer reads as a span from a date to itself, the after-order message keeps the paragraphs you type and is set apart so it reads as guidance rather than stray text, and long messages sit correctly on themes with their own spacing rules.<\/li>\n<\/ul>\n\n<h4>1.0.1 - 2026-08-17<\/h4>\n\n<p><strong>Improved<\/strong><\/p>\n\n<ul>\n<li><strong>Deleting the plugin now keeps your settings.<\/strong> If you do want everything removed, there is a new option under Arrival &gt; Debug \u2014 it is off by default, so deleting to reinstall, or moving between the free and Pro editions, no longer loses your setup.<\/li>\n<\/ul>\n\n<h4>1.0.0 - 2026-08-15<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Delivery dates, order-cutoff countdowns, and free-shipping progress on product, cart, and checkout.<\/li>\n<li>Postcode-aware shipping methods, prices, and arrival dates.<\/li>\n<li>Shortcodes and cache-compatible display for real WooCommerce environments (block themes, mini-cart sync, Tax Switch aware).<\/li>\n<li>Bricks Builder dynamic tags and Automatic.css token support.<\/li>\n<li>Arrival Pro (sold separately): pickup readiness with opening days and hours, unlimited pickup locations, one-off and recurring holidays, custom terminology and styling, Google Places.<\/li>\n<\/ul>","raw_excerpt":"The arrivals board for your Woo store \u2014 show shoppers exactly when orders arrive, with delivery dates, cutoff countdowns and free-shipping progress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/346104","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=346104"}],"author":[{"embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/embarkstudio"}],"wp:attachment":[{"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=346104"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=346104"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=346104"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=346104"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=346104"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=346104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}