{"id":389566,"date":"2026-10-23T10:51:52","date_gmt":"2026-10-23T10:51:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/devdiggers-order-communication-for-woocommerce\/"},"modified":"2026-10-23T21:10:55","modified_gmt":"2026-10-23T21:10:55","slug":"devdiggers-order-communication-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/devdiggers-order-communication-for-woocommerce\/","author":20777317,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"DevDiggers Order Communication for WooCommerce","header_author":"DevDiggers","header_description":"Give every WooCommerce order its own private conversation. Customers message you from My Account, your team replies from one shared Inbox, with read receipts and email alerts on both sides.","assets_banners_color":"dcdee1","last_updated":"2026-10-23 21:10:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/devdiggers.com\/product\/woocommerce-order-communication\/","header_author_uri":"https:\/\/devdiggers.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":57,"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":"devdiggers","date":"2026-10-23 21:10:55","revision":3762455}},"upgrade_notice":{"1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3761452,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3761452,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500-rtl.png":{"filename":"banner-1544x500-rtl.png","revision":3761452,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3761452,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-rtl.png":{"filename":"banner-772x250-rtl.png","revision":3761452,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3761452,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3762457,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"Order Communication for WooCommerce demo\",\"description\":\"A homeware store with real order chats in the Inbox.\",\"author\":\"devdiggers\",\"categories\":[\"WooCommerce\"]},\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=ddwcoc-dashboard&menu=inbox\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"devdiggers-order-communication-for-woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"installTheme\",\"themeData\":{\"resource\":\"wordpress.org\\\/themes\",\"slug\":\"kadence\"},\"options\":{\"activate\":true}},{\"step\":\"setSiteOptions\",\"options\":{\"woocommerce_onboarding_profile\":{\"skipped\":true},\"woocommerce_task_list_hidden\":\"yes\",\"woocommerce_task_list_complete\":\"yes\",\"woocommerce_show_marketplace_suggestions\":\"no\",\"woocommerce_allow_tracking\":\"no\",\"woocommerce_coming_soon\":\"no\",\"_ddwcoc_enabled\":\"yes\",\"ddfw_setup_wizard_completed_devdiggers-order-communication-for-woocommerce\":true}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire '\\\/wordpress\\\/wp-load.php';\\nrequire_once ABSPATH . 'wp-admin\\\/includes\\\/image.php';\\n\\ndelete_transient( '_wc_activation_redirect' );\\ndelete_transient( 'ddfw_activation_redirect_devdiggers-order-communication-for-woocommerce' );\\n\\n\\\/\\\/ Real faces for everyone in the demo (portraits load in the visitor's browser).\\n$faces = [\\n\\t'admin@localhost.com'       => 'https:\\\/\\\/randomuser.me\\\/api\\\/portraits\\\/women\\\/68.jpg',\\n\\t'amara.okafor@example.com'  => 'https:\\\/\\\/randomuser.me\\\/api\\\/portraits\\\/women\\\/44.jpg',\\n\\t'liam.carter@example.com'   => 'https:\\\/\\\/randomuser.me\\\/api\\\/portraits\\\/men\\\/32.jpg',\\n\\t'sofia.romero@example.com'  => 'https:\\\/\\\/randomuser.me\\\/api\\\/portraits\\\/women\\\/65.jpg',\\n\\t'kenji.watanabe@example.com'=> 'https:\\\/\\\/randomuser.me\\\/api\\\/portraits\\\/men\\\/75.jpg',\\n\\t'priya.sharma@example.com'  => 'https:\\\/\\\/randomuser.me\\\/api\\\/portraits\\\/women\\\/90.jpg',\\n\\t'noah.mueller@example.com'  => 'https:\\\/\\\/randomuser.me\\\/api\\\/portraits\\\/men\\\/46.jpg',\\n\\t'chloe.dubois@example.com'  => 'https:\\\/\\\/randomuser.me\\\/api\\\/portraits\\\/women\\\/24.jpg',\\n\\t'marcus.bell@example.com'   => 'https:\\\/\\\/randomuser.me\\\/api\\\/portraits\\\/men\\\/86.jpg',\\n];\\nwp_mkdir_p( WPMU_PLUGIN_DIR );\\nfile_put_contents(\\n\\tWPMU_PLUGIN_DIR . '\\\/demo-avatars.php',\\n\\t\\\"<?php\\\\n\\\/\\\/ Live Preview only: show a portrait for each demo person.\\\\nadd_filter( 'pre_get_avatar_data', function ( \\\\$args, \\\\$id ) {\\\\n\\\\t\\\\$faces = \\\" . var_export( $faces, true ) . \\\";\\\\n\\\\t\\\\$email = '';\\\\n\\\\tif ( is_numeric( \\\\$id ) ) { \\\\$u = get_userdata( (int) \\\\$id ); \\\\$email = \\\\$u ? \\\\$u->user_email : ''; }\\\\n\\\\telseif ( is_string( \\\\$id ) ) { \\\\$email = \\\\$id; }\\\\n\\\\telseif ( \\\\$id instanceof WP_User ) { \\\\$email = \\\\$id->user_email; }\\\\n\\\\telseif ( \\\\$id instanceof WP_Comment ) { \\\\$email = \\\\$id->comment_author_email; }\\\\n\\\\t\\\\$email = strtolower( \\\\$email );\\\\n\\\\tif ( isset( \\\\$faces[ \\\\$email ] ) ) { \\\\$args['url'] = \\\\$faces[ \\\\$email ]; \\\\$args['found_avatar'] = true; }\\\\n\\\\treturn \\\\$args;\\\\n}, 10, 2 );\\\\n\\\"\\n);\\n\\n\\\/\\\/ Store details.\\nupdate_option( 'blogname', 'Fern & Fable' );\\nupdate_option( 'blogdescription', 'Handmade homeware and slow living goods' );\\nupdate_option( 'woocommerce_currency', 'USD' );\\nupdate_option( 'woocommerce_store_address', '418 Larch Street' );\\nupdate_option( 'woocommerce_store_city', 'Portland' );\\nupdate_option( 'woocommerce_default_country', 'US:OR' );\\nupdate_option( 'woocommerce_store_postcode', '97209' );\\n\\n$admin = get_user_by( 'id', 1 );\\nwp_update_user( [ 'ID' => 1, 'display_name' => 'Maya Lin', 'first_name' => 'Maya', 'last_name' => 'Lin', 'user_email' => 'admin@localhost.com' ] );\\n\\n\\\/\\\/ Products with real photos that ship inside WooCommerce.\\n$img_dir  = WP_PLUGIN_DIR . '\\\/woocommerce\\\/assets\\\/images\\\/pattern-placeholders\\\/';\\n$catalog  = [\\n\\t'vase'    => [ 'Sage Ceramic Vase', 48, 'sun-glass-vase-green-ceramic-shelf.jpg', 'Wheel-thrown stoneware vase in a soft sage glaze.' ],\\n\\t'lamp'    => [ 'Ivory Pattern Table Lamp', 129, 'white-vase-decoration-pattern-ceramic-lamp.jpg', 'Hand-carved ceramic base with a linen shade.' ],\\n\\t'stool'   => [ 'Oak Bistro Stool', 185, 'Image-table-wood-chair-stool-interior-restaurant.jpg', 'Solid white oak with a hand-rubbed oil finish.' ],\\n\\t'carafe'  => [ 'Blown Glass Carafe Set', 64, 'drinkware-liquid-tableware-dishware-bottle-fluid.jpg', 'A one litre carafe with two matching tumblers.' ],\\n\\t'jars'    => [ 'Green Glass Pantry Jars', 42, 'green-glass-jars-on-stairs.jpg', 'Set of three recycled glass jars with cork lids.' ],\\n\\t'budvase' => [ 'Eucalyptus Bud Vase', 36, 'plant-white-leaf-flower-vase-green.jpg', 'Matte white porcelain, styled with dried eucalyptus.' ],\\n\\t'chair'   => [ 'Window Reading Chair', 420, 'table-wood-house-chair-floor-window.jpg', 'Ash frame with a woven paper cord seat.' ],\\n\\t'watch'   => [ 'Heritage Twin-Lens Camera', 240, 'watch-hand-brand-jewellery-strap-platinum.jpg', 'A restored 1960s twin-lens reflex camera, tested and ready to shoot.' ],\\n\\t'player'  => [ 'Walnut Record Player', 349, 'music-needle-turntable-black-and-white-white-photography.jpg', 'Belt drive turntable in a walnut plinth.' ],\\n];\\n$products = [];\\nforeach ( $catalog as $key => $p ) {\\n\\t$upload = wp_upload_bits( $p[2], null, file_get_contents( $img_dir . $p[2] ) );\\n\\t$att_id = wp_insert_attachment( [ 'post_mime_type' => 'image\\\/jpeg', 'post_title' => $p[0], 'post_status' => 'inherit' ], $upload['file'] );\\n\\twp_update_attachment_metadata( $att_id, wp_generate_attachment_metadata( $att_id, $upload['file'] ) );\\n\\t$prod = new WC_Product_Simple();\\n\\t$prod->set_name( $p[0] );\\n\\t$prod->set_regular_price( $p[1] );\\n\\t$prod->set_short_description( $p[3] );\\n\\t$prod->set_description( $p[3] );\\n\\t$prod->set_image_id( $att_id );\\n\\t$prod->set_status( 'publish' );\\n\\t$products[ $key ] = $prod->save();\\n}\\n\\n$people = [\\n\\t'amara'  => [ 'Amara', 'Okafor', 'amara.okafor@example.com', '12 Harbour Street', 'Seattle', 'WA', '98101' ],\\n\\t'liam'   => [ 'Liam', 'Carter', 'liam.carter@example.com', '77 Maple Avenue', 'Denver', 'CO', '80203' ],\\n\\t'sofia'  => [ 'Sofia', 'Romero', 'sofia.romero@example.com', '9 Bayview Road', 'San Diego', 'CA', '92101' ],\\n\\t'kenji'  => [ 'Kenji', 'Watanabe', 'kenji.watanabe@example.com', '230 Pine Street', 'San Francisco', 'CA', '94104' ],\\n\\t'priya'  => [ 'Priya', 'Sharma', 'priya.sharma@example.com', '58 Elm Court', 'Austin', 'TX', '78701' ],\\n\\t'noah'   => [ 'Noah', 'Mueller', 'noah.mueller@example.com', '4 Riverside Drive', 'Chicago', 'IL', '60601' ],\\n\\t'chloe'  => [ 'Chloe', 'Dubois', 'chloe.dubois@example.com', '19 Rue Street', 'Boston', 'MA', '02108' ],\\n\\t'marcus' => [ 'Marcus', 'Bell', 'marcus.bell@example.com', '301 Ocean Boulevard', 'Miami', 'FL', '33139' ],\\n];\\n$users = [];\\nforeach ( $people as $key => $p ) {\\n\\t$users[ $key ] = wp_insert_user( [ 'user_login' => $key, 'user_pass' => 'password', 'user_email' => $p[2], 'first_name' => $p[0], 'last_name' => $p[1], 'display_name' => $p[0] . ' ' . $p[1], 'role' => 'customer' ] );\\n}\\n\\n\\\/\\\/ Conversations: [customer, products, status, minutes ago the order was placed, state, messages].\\n\\\/\\\/ Message: [c|s, text, minutes ago]. state: unread (awaiting reply), replied, closed.\\n$threads = [\\n\\t[ 'amara', [ 'vase', 'budvase' ], 'processing', 2900, 'unread', [\\n\\t\\t[ 'c', 'Hi! I just ordered the Sage Ceramic Vase. Is it watertight enough for fresh flowers, or only dried stems?', 2860 ],\\n\\t\\t[ 's', 'Hi Amara! It is fully glazed inside, so fresh flowers are perfect. Just empty it every few days.', 2840 ],\\n\\t\\t[ 'c', 'Lovely, thank you. One more thing: could you gift wrap the bud vase? It is a birthday present for my sister.', 2 ],\\n\\t] ],\\n\\t[ 'liam', [ 'stool' => 2 ], 'on-hold', 180, 'unread', [\\n\\t\\t[ 'c', 'Hey, I ordered two Oak Bistro Stools. Any chance they can ship today? I have guests coming on Friday.', 9 ],\\n\\t] ],\\n\\t[ 'sofia', [ 'lamp' ], 'completed', 9000, 'replied', [\\n\\t\\t[ 'c', 'The lamp arrived and it is gorgeous. Which bulb do you recommend for a warm glow?', 8700 ],\\n\\t\\t[ 's', 'So happy you love it! A 2700K E26 LED bulb gives that soft warm light we use in our photos.', 8650 ],\\n\\t\\t[ 'c', 'Perfect, ordered one. Thanks Maya!', 8600 ],\\n\\t\\t[ 's', 'Any time, Sofia. Enjoy those cosy evenings!', 8590 ],\\n\\t] ],\\n\\t[ 'kenji', [ 'player' ], 'processing', 1500, 'replied', [\\n\\t\\t[ 'c', 'Does the Walnut Record Player come with a built-in preamp? My speakers are passive.', 1440 ],\\n\\t\\t[ 's', 'Great question! Yes, it has a switchable phono preamp, so you can plug it straight into an amplifier or active speakers. For passive speakers you will need a small amp.', 1400 ],\\n\\t\\t[ 'c', 'Got it. I will add a small amp then. Can you hold the order until tomorrow?', 1380 ],\\n\\t\\t[ 's', 'Done. Your order is on hold until tomorrow noon, just message us here when you are ready.', 1350 ],\\n\\t] ],\\n\\t[ 'priya', [ 'carafe', 'jars' ], 'completed', 20000, 'closed', [\\n\\t\\t[ 'c', 'One of the tumblers in my carafe set arrived chipped. Photo is in my email.', 19800 ],\\n\\t\\t[ 's', 'I am so sorry, Priya. A replacement tumbler shipped this morning and you do not need to send the old one back.', 19700 ],\\n\\t\\t[ 'c', 'The new one arrived today, perfect condition. Thank you for sorting it so fast!', 17000 ],\\n\\t\\t[ 's', 'Wonderful! I will close this conversation now. Enjoy your new set.', 16950 ],\\n\\t] ],\\n\\t[ 'noah', [ 'chair' ], 'processing', 4300, 'unread', [\\n\\t\\t[ 'c', 'I just placed an order for the Window Reading Chair. Could you deliver to my office instead of my home address?', 4200 ],\\n\\t\\t[ 's', 'Of course, Noah. Please send the office address and a contact name here and I will update the shipping label.', 4150 ],\\n\\t\\t[ 'c', 'It is 4 Riverside Drive, Suite 1200, Chicago. Ask for Noah at reception. Thanks!', 42 ],\\n\\t] ],\\n\\t[ 'chloe', [ 'watch' ], 'completed', 13000, 'replied', [\\n\\t\\t[ 'c', 'Does the Twin-Lens Camera take standard 120 film? I would love to shoot with it this weekend.', 12900 ],\\n\\t\\t[ 's', 'It does! Any 120 roll fits, and we include a roll of Portra 400 so you can start right away.', 12860 ],\\n\\t] ],\\n\\t[ 'marcus', [ 'jars', 'budvase' ], 'pending', 400, 'unread', [\\n\\t\\t[ 'c', 'My payment failed twice at checkout. Can I pay by bank transfer instead?', 18 ],\\n\\t] ],\\n];\\n\\n\\\/\\\/ Earlier completed orders, so each customer card shows a real order history.\\n$history = [ 'amara' => [ 'lamp', 'jars' ], 'liam' => [ 'chair' ], 'sofia' => [ 'carafe', 'vase' ], 'kenji' => [ 'watch' ], 'priya' => [ 'budvase', 'lamp' ], 'noah' => [ 'player' ], 'chloe' => [ 'vase' ], 'marcus' => [ 'carafe' ] ];\\n$questions = [\\n\\t[ 'Has my order shipped yet?', 'Yes! It left our studio this morning. The tracking link is in your shipping email.' ],\\n\\t[ 'Can I add a gift note to this order?', 'Of course. Tell us what to write and we will tuck a handwritten card in the box.' ],\\n\\t[ 'Is this dishwasher safe?', 'It is, on a gentle cycle. Hand washing keeps the glaze looking new for longer.' ],\\n\\t[ 'Could you ship this with my next order to save on postage?', 'Happy to. We will hold it and send both together.' ],\\n\\t[ 'Do you have this in a larger size?', 'Not yet, but a larger version arrives next month. We will message you here when it lands.' ],\\n\\t[ 'The box looks damaged, should I worry?', 'Thanks for checking. Please open it and let us know, we replace anything that arrives broken.' ],\\n];\\n$q = 0;\\nforeach ( $history as $who => $items ) {\\n\\tforeach ( $items as $i => $key ) {\\n\\t\\t$p     = $people[ $who ];\\n\\t\\t$addr  = [ 'first_name' => $p[0], 'last_name' => $p[1], 'email' => $p[2], 'address_1' => $p[3], 'city' => $p[4], 'state' => $p[5], 'postcode' => $p[6], 'country' => 'US' ];\\n\\t\\t$order = wc_create_order( [ 'customer_id' => $users[ $who ] ] );\\n\\t\\t$order->add_product( wc_get_product( $products[ $key ] ), 1 );\\n\\t\\t$order->set_address( $addr, 'billing' );\\n\\t\\t$order->set_address( $addr, 'shipping' );\\n\\t\\t$order->set_payment_method_title( 'Credit card' );\\n\\t\\t$placed = time() - wp_rand( 6, 55 ) * DAY_IN_SECONDS;\\n\\t\\t$order->set_date_created( $placed );\\n\\t\\t$order->calculate_totals();\\n\\t\\t$order->set_status( 'completed' );\\n\\t\\t$order->save();\\n\\n\\t\\t\\\/\\\/ A short, answered question on each past order fills the activity chart.\\n\\t\\t$qa    = $questions[ $q++ % count( $questions ) ];\\n\\t\\t$asked = $placed + wp_rand( 1, 3 ) * DAY_IN_SECONDS;\\n\\t\\tforeach ( [ [ 'customer', $qa[0], $asked ], [ 'staff', $qa[1], $asked + wp_rand( 20, 240 ) * 60 ] ] as $m ) {\\n\\t\\t\\t$is_c = 'customer' === $m[0];\\n\\t\\t\\twp_insert_comment( [ 'comment_agent' => 'WooCommerce', 'comment_approved' => 1, 'comment_author' => $is_c ? $p[0] . ' ' . $p[1] : 'Maya Lin', 'comment_author_email' => $is_c ? $p[2] : 'admin@localhost.com', 'comment_content' => $m[1], 'comment_post_ID' => $order->get_id(), 'comment_type' => 'ddwcoc_order_message', 'user_id' => $is_c ? $users[ $who ] : 1, 'comment_date' => gmdate( 'Y-m-d H:i:s', $m[2] + (int) ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ), 'comment_date_gmt' => gmdate( 'Y-m-d H:i:s', $m[2] ), 'comment_meta' => $is_c ? [ '_ddwcoc_sender' => 'customer', '_ddwcoc_message_status' => 'replied' ] : [ '_ddwcoc_sender' => 'staff' ] ] );\\n\\t\\t}\\n\\t\\t$order->update_meta_data( '_ddwcoc_customer_last_seen', $asked + DAY_IN_SECONDS );\\n\\t\\t$order->update_meta_data( '_ddwcoc_staff_last_seen', $asked + DAY_IN_SECONDS );\\n\\t\\t$order->save_meta_data();\\n\\t}\\n}\\n\\n$offset = (int) ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );\\n$now    = time();\\nforeach ( $threads as $t ) {\\n\\t$p     = $people[ $t[0] ];\\n\\t$addr  = [ 'first_name' => $p[0], 'last_name' => $p[1], 'email' => $p[2], 'phone' => '555-01' . wp_rand( 10, 99 ), 'address_1' => $p[3], 'city' => $p[4], 'state' => $p[5], 'postcode' => $p[6], 'country' => 'US' ];\\n\\t$order = wc_create_order( [ 'customer_id' => $users[ $t[0] ] ] );\\n\\tforeach ( $t[1] as $key => $qty ) {\\n\\t\\tif ( is_int( $key ) ) {\\n\\t\\t\\t$key = $qty;\\n\\t\\t\\t$qty = 1;\\n\\t\\t}\\n\\t\\t$order->add_product( wc_get_product( $products[ $key ] ), $qty );\\n\\t}\\n\\t$order->set_address( $addr, 'billing' );\\n\\t$order->set_address( $addr, 'shipping' );\\n\\t$order->set_payment_method_title( 'Credit card' );\\n\\t$order->set_date_created( $now - $t[3] * 60 );\\n\\t$order->calculate_totals();\\n\\t$order->set_status( $t[2] );\\n\\t$order->save();\\n\\tif ( 'amara' === $t[0] ) {\\n\\t\\t$amara_order = $order->get_id();\\n\\t}\\n\\n\\t$last = 0;\\n\\tforeach ( $t[5] as $m ) {\\n\\t\\t$is_c = 'c' === $m[0];\\n\\t\\t$meta = [ '_ddwcoc_sender' => $is_c ? 'customer' : 'staff' ];\\n\\t\\tif ( $is_c ) {\\n\\t\\t\\t$meta['_ddwcoc_message_status'] = ( 'unread' === $t[4] && $m === end( $t[5] ) ) ? 'unread' : 'replied';\\n\\t\\t}\\n\\t\\t$time = $now - $m[2] * 60;\\n\\t\\t$last = max( $last, $time );\\n\\t\\twp_insert_comment( [\\n\\t\\t\\t'comment_agent'        => 'WooCommerce',\\n\\t\\t\\t'comment_approved'     => 1,\\n\\t\\t\\t'comment_author'       => $is_c ? $p[0] . ' ' . $p[1] : 'Maya Lin',\\n\\t\\t\\t'comment_author_email' => $is_c ? $p[2] : 'admin@localhost.com',\\n\\t\\t\\t'comment_content'      => $m[1],\\n\\t\\t\\t'comment_post_ID'      => $order->get_id(),\\n\\t\\t\\t'comment_type'         => 'ddwcoc_order_message',\\n\\t\\t\\t'user_id'              => $is_c ? $users[ $t[0] ] : 1,\\n\\t\\t\\t'comment_date'         => gmdate( 'Y-m-d H:i:s', $time + $offset ),\\n\\t\\t\\t'comment_date_gmt'     => gmdate( 'Y-m-d H:i:s', $time ),\\n\\t\\t\\t'comment_meta'         => $meta,\\n\\t\\t] );\\n\\t}\\n\\n\\t\\\/\\\/ Read receipts: the customer has seen every reply on answered threads.\\n\\tif ( 'unread' !== $t[4] ) {\\n\\t\\t$order->update_meta_data( '_ddwcoc_customer_last_seen', $last + 60 );\\n\\t\\t$order->update_meta_data( '_ddwcoc_staff_last_seen', $last + 60 );\\n\\t}\\n\\tif ( 'closed' === $t[4] ) {\\n\\t\\t$order->update_meta_data( '_ddwcoc_conversation_status', 'closed' );\\n\\t}\\n\\t$order->save_meta_data();\\n}\\n\\n\\nupdate_option( 'ddwc_demo_order', $amara_order );\\n\\n\\\/\\\/ ---- Storefront (Kadence + DevDiggers demo kit) ----\\n\\n\\\/\\\/ ---- DevDiggers Live Preview demo kit (Apple design language on Kadence) ----\\n\\\/**\\n * Inserted by build.py where a seed says \\\/\\\/ @kit. Call, after products and users exist:\\n *   ddwc_demo_kit_style( [ 'accent' => '#0071e3', 'css' => '' ] )  Kadence + global CSS.\\n *   ddwc_demo_kit_home( [...] )                                     Home page, set as front page.\\n *   ddwc_demo_kit_menu( [ 'Shop' => url, ... ] )                    Primary menu.\\n *   ddwc_demo_kit_switcher( $views_php )                            \\\"View as\\\" switcher mu-plugin.\\n *   ddwc_demo_kit_icon( 'chat' )                                    SVG line icon (names in the list below).\\n * Widget classes for the hero showcase: dk-widget, dk-w-head, dk-w-app, dk-w-label, dk-w-title,\\n * dk-w-big, dk-w-row, dk-w-pill, dk-w-avatar, dk-w-bubble, dk-w-note.\\n *\\\/\\n\\nfunction ddwc_demo_kit_icon( $name, $size = 24 ) {\\n\\t$paths = [\\n\\t\\t'admin'    => '<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"9\\\" rx=\\\"1.5\\\"\\\/><rect x=\\\"14\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"5\\\" rx=\\\"1.5\\\"\\\/><rect x=\\\"14\\\" y=\\\"12\\\" width=\\\"7\\\" height=\\\"9\\\" rx=\\\"1.5\\\"\\\/><rect x=\\\"3\\\" y=\\\"16\\\" width=\\\"7\\\" height=\\\"5\\\" rx=\\\"1.5\\\"\\\/>',\\n\\t\\t'customer' => '<circle cx=\\\"12\\\" cy=\\\"8\\\" r=\\\"4\\\"\\\/><path d=\\\"M4 21c0-4 3.6-7 8-7s8 3 8 7\\\"\\\/>',\\n\\t\\t'store'    => '<path d=\\\"M3 9l1.5-5h15L21 9\\\"\\\/><path d=\\\"M3 9h18v2a3 3 0 0 1-6 0 3 3 0 0 1-6 0 3 3 0 0 1-6 0z\\\"\\\/><path d=\\\"M5 13v8h14v-8\\\"\\\/><path d=\\\"M10 21v-5h4v5\\\"\\\/>',\\n\\t\\t'product'  => '<path d=\\\"M20.6 13.4 13.4 20.6a2 2 0 0 1-2.8 0L3 13V3h10l7.6 7.6a2 2 0 0 1 0 2.8z\\\"\\\/><circle cx=\\\"7.5\\\" cy=\\\"7.5\\\" r=\\\"1.5\\\"\\\/>',\\n\\t\\t'cart'     => '<circle cx=\\\"9\\\" cy=\\\"20\\\" r=\\\"1.5\\\"\\\/><circle cx=\\\"18\\\" cy=\\\"20\\\" r=\\\"1.5\\\"\\\/><path d=\\\"M2 3h3l2.7 12.4a2 2 0 0 0 2 1.6h8.6a2 2 0 0 0 2-1.5L22 7H6\\\"\\\/>',\\n\\t\\t'chat'     => '<path d=\\\"M21 12a8 8 0 0 1-11.6 7.1L4 20l1-4.6A8 8 0 1 1 21 12z\\\"\\\/>',\\n\\t\\t'wallet'   => '<path d=\\\"M3 7a2 2 0 0 1 2-2h13v4\\\"\\\/><rect x=\\\"3\\\" y=\\\"7\\\" width=\\\"18\\\" height=\\\"13\\\" rx=\\\"2\\\"\\\/><circle cx=\\\"16.5\\\" cy=\\\"13.5\\\" r=\\\"1.3\\\"\\\/>',\\n\\t\\t'star'     => '<path d=\\\"m12 3 2.8 5.7 6.2.9-4.5 4.4 1.1 6.2L12 17.3 6.4 20.2l1.1-6.2L3 9.6l6.2-.9z\\\"\\\/>',\\n\\t\\t'register' => '<rect x=\\\"3\\\" y=\\\"4\\\" width=\\\"18\\\" height=\\\"12\\\" rx=\\\"2\\\"\\\/><path d=\\\"M7 20h10M12 16v4M7 8h4M7 11h2\\\"\\\/>',\\n\\t\\t'link'     => '<path d=\\\"M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1\\\"\\\/><path d=\\\"M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1\\\"\\\/>',\\n\\t\\t'cube'     => '<path d=\\\"M12 2 21 7v10l-9 5-9-5V7z\\\"\\\/><path d=\\\"m3 7 9 5 9-5M12 12v10\\\"\\\/>',\\n\\t\\t'ar'       => '<path d=\\\"M3 7V4h3M21 7V4h-3M3 17v3h3M21 17v3h-3\\\"\\\/><rect x=\\\"8\\\" y=\\\"8\\\" width=\\\"8\\\" height=\\\"8\\\" rx=\\\"1.5\\\"\\\/>',\\n\\t\\t'rx'       => '<path d=\\\"M9 3h6v4H9z\\\"\\\/><path d=\\\"M7 5H5v16h14V5h-2\\\"\\\/><path d=\\\"M9 12h6M9 16h4\\\"\\\/>',\\n\\t\\t'phone'    => '<rect x=\\\"6\\\" y=\\\"2\\\" width=\\\"12\\\" height=\\\"20\\\" rx=\\\"3\\\"\\\/><path d=\\\"M11 18h2\\\"\\\/>',\\n\\t\\t'orders'   => '<path d=\\\"M4 7 12 3l8 4v10l-8 4-8-4z\\\"\\\/><path d=\\\"m4 7 8 4 8-4M12 11v10\\\"\\\/>',\\n\\t\\t'calendar' => '<rect x=\\\"3\\\" y=\\\"5\\\" width=\\\"18\\\" height=\\\"16\\\" rx=\\\"2\\\"\\\/><path d=\\\"M3 10h18M8 3v4M16 3v4\\\"\\\/>',\\n\\t\\t'clock'    => '<circle cx=\\\"12\\\" cy=\\\"13\\\" r=\\\"8\\\"\\\/><path d=\\\"M12 9v4l2.5 2.5M9 2h6\\\"\\\/>',\\n\\t\\t'mail'     => '<rect x=\\\"3\\\" y=\\\"5\\\" width=\\\"18\\\" height=\\\"14\\\" rx=\\\"2\\\"\\\/><path d=\\\"m3 7 9 6 9-6\\\"\\\/>',\\n\\t\\t'chart'    => '<path d=\\\"M3 3v18h18\\\"\\\/><path d=\\\"m7 15 4-4 3 3 5-6\\\"\\\/>',\\n\\t\\t'card'     => '<rect x=\\\"2\\\" y=\\\"5\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\"\\\/><path d=\\\"M2 10h20M6 15h4\\\"\\\/>',\\n\\t\\t'scan'     => '<path d=\\\"M3 7V5a2 2 0 0 1 2-2h2M17 3h2a2 2 0 0 1 2 2v2M21 17v2a2 2 0 0 1-2 2h-2M7 21H5a2 2 0 0 1-2-2v-2M7 8v8M11 8v8M14 8v8M17 8v8\\\"\\\/>',\\n\\t\\t'receipt'  => '<path d=\\\"M5 3h14v18l-3-2-2 2-2-2-2 2-2-2-3 2z\\\"\\\/><path d=\\\"M9 8h6M9 12h6\\\"\\\/>',\\n\\t\\t'heart'    => '<path d=\\\"M12 21s-7-4.4-7-10a4 4 0 0 1 7-2.6A4 4 0 0 1 19 11c0 5.6-7 10-7 10z\\\"\\\/>',\\n\\t\\t'upload'   => '<path d=\\\"M12 16V4M7 9l5-5 5 5\\\"\\\/><path d=\\\"M4 16v3a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-3\\\"\\\/>',\\n\\t\\t'lock'     => '<rect x=\\\"4\\\" y=\\\"11\\\" width=\\\"16\\\" height=\\\"10\\\" rx=\\\"2\\\"\\\/><path d=\\\"M8 11V7a4 4 0 0 1 8 0v4\\\"\\\/>',\\n\\t\\t'shield'   => '<path d=\\\"M12 3 4 6v6c0 4.5 3.4 8 8 9 4.6-1 8-4.5 8-9V6z\\\"\\\/><path d=\\\"m8.5 12 2.5 2.5 4.5-5\\\"\\\/>',\\n\\t\\t'wifi'     => '<path d=\\\"M2 8.8a15 15 0 0 1 20 0M5 12.5a10 10 0 0 1 14 0M8.5 16a5 5 0 0 1 7 0\\\"\\\/><circle cx=\\\"12\\\" cy=\\\"19.5\\\" r=\\\"1\\\"\\\/>',\\n\\t\\t'bell'     => '<path d=\\\"M6 8a6 6 0 0 1 12 0c0 7 3 8 3 8H3s3-1 3-8\\\"\\\/><path d=\\\"M10.3 21a1.9 1.9 0 0 0 3.4 0\\\"\\\/>',\\n\\t\\t'gift'     => '<rect x=\\\"3\\\" y=\\\"8\\\" width=\\\"18\\\" height=\\\"13\\\" rx=\\\"2\\\"\\\/><path d=\\\"M3 12h18M12 8v13M12 8C10 5 7 5 7 7s3 1 5 1c2 0 5 1 5-1s-3-2-5 1\\\"\\\/>',\\n\\t\\t'bolt'     => '<path d=\\\"M13 2 4 14h7l-1 8 9-12h-7z\\\"\\\/>',\\n\\t\\t'ask'      => '<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"9\\\"\\\/><path d=\\\"M9.5 9.5a2.5 2.5 0 1 1 3.5 2.3c-.7.3-1 .9-1 1.7M12 17h.01\\\"\\\/>',\\n\\t\\t'check'    => '<path d=\\\"m5 12 5 5 9-10\\\"\\\/>',\\n\\t\\t'pay'      => '<rect x=\\\"3\\\" y=\\\"6\\\" width=\\\"18\\\" height=\\\"13\\\" rx=\\\"2\\\"\\\/><path d=\\\"M3 10h18M7 15h3\\\"\\\/>',\\n\\t];\\n\\treturn '<svg viewBox=\\\"0 0 24 24\\\" width=\\\"' . (int) $size . '\\\" height=\\\"' . (int) $size . '\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"1.7\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" aria-hidden=\\\"true\\\">' . ( $paths[ $name ] ?? $paths['store'] ) . '<\\\/svg>';\\n}\\n\\n\\\/** Product photo URL (for hero_img and tile img). *\\\/\\nfunction ddwc_demo_kit_img( $product_id, $size = 'large' ) {\\n\\treturn wp_get_attachment_image_url( get_post_thumbnail_id( $product_id ), $size );\\n}\\n\\n\\\/**\\n * Brand the store: Apple's neutral system (SF Pro via the system font stack, #1d1d1f \\\/ #6e6e73 \\\/ #f5f5f7)\\n * with one accent colour per brand. Global CSS goes in an mu-plugin so the seed may still use Additional CSS.\\n *\\n * @param array $a accent (hex), css (extra CSS appended after the kit CSS).\\n *\\\/\\nfunction ddwc_demo_kit_style( $a ) {\\n\\t$a      = array_merge( [ 'accent' => '#0071e3', 'css' => '' ], $a );\\n\\t$accent = $a['accent'];\\n\\t$rgb    = sscanf( $accent, '#%02x%02x%02x' );\\n\\t$dark   = vsprintf( '#%02x%02x%02x', array_map( function ( $c ) { return (int) round( $c * 0.84 ); }, $rgb ) );\\n\\t$tint   = vsprintf( 'rgba(%d,%d,%d,.1)', $rgb );\\n\\t$stack  = '-apple-system,BlinkMacSystemFont,\\\"SF Pro Text\\\",\\\"SF Pro Display\\\",\\\"Helvetica Neue\\\",Helvetica,Arial,sans-serif';\\n\\n\\t$colors  = [ $accent, $dark, '#1d1d1f', '#1d1d1f', '#6e6e73', '#86868b', '#d2d2d7', '#f5f5f7', '#ffffff', '#ffffff', '#248a3d', '#0071e3', '#d70015', '#bf4800', '#b25e09' ];\\n\\t$palette = [];\\n\\tforeach ( $colors as $i => $color ) {\\n\\t\\t$palette[] = [ 'color' => $color, 'slug' => 'palette' . ( $i + 1 ), 'name' => 'Palette Color ' . ( $i + 1 ) ];\\n\\t}\\n\\tupdate_option( 'kadence_global_palette', wp_json_encode( [ 'palette' => $palette, 'second-palette' => $palette, 'third-palette' => $palette, 'active' => 'palette' ] ) );\\n\\n\\tset_theme_mod( 'base_font', [ 'family' => $stack, 'google' => false, 'weight' => '400', 'variant' => 'regular', 'size' => [ 'desktop' => 17 ], 'lineHeight' => [ 'desktop' => 1.47 ], 'color' => 'palette4' ] );\\n\\tset_theme_mod( 'heading_font', [ 'family' => $stack, 'google' => false, 'weight' => '600', 'variant' => [ '600' ] ] );\\n\\tforeach ( [ 'h1_font' => [ 48, 1.08 ], 'h2_font' => [ 40, 1.1 ], 'h3_font' => [ 28, 1.14 ], 'h4_font' => [ 21, 1.2 ], 'h5_font' => [ 17, 1.3 ], 'h6_font' => [ 14, 1.4 ] ] as $mod => $size ) {\\n\\t\\tset_theme_mod( $mod, [ 'size' => [ 'desktop' => $size[0] ], 'lineHeight' => [ 'desktop' => $size[1] ], 'family' => 'inherit', 'google' => false, 'weight' => '600', 'variant' => '600', 'color' => 'palette3' ] );\\n\\t}\\n\\tset_theme_mod( 'load_fonts_local', false );\\n\\n\\tset_theme_mod( 'site_background', [ 'desktop' => [ 'color' => 'palette9' ] ] );\\n\\tset_theme_mod( 'content_background', [ 'desktop' => [ 'color' => 'palette9' ] ] );\\n\\tset_theme_mod( 'page_content_style', 'unboxed' );\\n\\tset_theme_mod( 'product_archive_content_style', 'unboxed' );\\n\\tset_theme_mod( 'product_content_style', 'unboxed' );\\n\\tset_theme_mod( 'product_archive_columns', '4' );\\n\\tset_theme_mod( 'buttons_border_radius', [ 'size' => [ 980, 980, 980, 980 ], 'unit' => 'px', 'locked' => true ] );\\n\\tset_theme_mod( 'buttons_typography', [ 'size' => [ 'desktop' => 15 ], 'family' => 'inherit', 'weight' => '400', 'variant' => 'regular', 'letterSpacing' => [ 'desktop' => -0.01 ], 'letterType' => 'em' ] );\\n\\tset_theme_mod( 'buttons_padding', [ 'size' => [ 'desktop' => [ 11, 22, 11, 22 ] ], 'unit' => [ 'desktop' => 'px' ], 'locked' => [ 'desktop' => false ] ] );\\n\\n\\t\\\/\\\/ Header: one slim frosted bar, logo left, menu and bag right.\\n\\tset_theme_mod(\\n\\t\\t'header_desktop_items',\\n\\t\\t[\\n\\t\\t\\t'top'    => [ 'top_left' => [], 'top_left_center' => [], 'top_center' => [], 'top_right_center' => [], 'top_right' => [] ],\\n\\t\\t\\t'main'   => [ 'main_left' => [ 'logo' ], 'main_left_center' => [], 'main_center' => [], 'main_right_center' => [], 'main_right' => [ 'navigation', 'cart' ] ],\\n\\t\\t\\t'bottom' => [ 'bottom_left' => [], 'bottom_left_center' => [], 'bottom_center' => [], 'bottom_right_center' => [], 'bottom_right' => [] ],\\n\\t\\t]\\n\\t);\\n\\tset_theme_mod( 'header_sticky', 'main' );\\n\\tset_theme_mod( 'header_main_height', [ 'size' => [ 'mobile' => 52, 'tablet' => 52, 'desktop' => 52 ], 'unit' => [ 'mobile' => 'px', 'tablet' => 'px', 'desktop' => 'px' ] ] );\\n\\tset_theme_mod( 'header_main_background', [ 'desktop' => [ 'color' => 'rgba(255,255,255,0.8)' ] ] );\\n\\tset_theme_mod( 'header_sticky_background', [ 'desktop' => [ 'color' => 'rgba(255,255,255,0.8)' ] ] );\\n\\tset_theme_mod( 'header_main_bottom_border', [ 'desktop' => [ 'width' => 1, 'unit' => 'px', 'style' => 'solid', 'color' => 'rgba(0,0,0,0.08)' ] ] );\\n\\tset_theme_mod( 'brand_typography', [ 'size' => [ 'desktop' => 19 ], 'family' => 'inherit', 'google' => false, 'weight' => '600', 'variant' => '600', 'letterSpacing' => [ 'desktop' => -0.02 ], 'letterType' => 'em', 'color' => 'palette3' ] );\\n\\tset_theme_mod( 'primary_navigation_typography', [ 'size' => [ 'desktop' => 13 ], 'family' => 'inherit', 'weight' => '400', 'variant' => 'regular' ] );\\n\\tset_theme_mod( 'primary_navigation_color', [ 'color' => 'palette4', 'hover' => 'palette1', 'active' => 'palette3' ] );\\n\\n\\tset_theme_mod( 'page_title_layout', 'above' );\\n\\tset_theme_mod( 'page_title_background', [ 'desktop' => [ 'color' => 'palette8' ] ] );\\n\\tset_theme_mod( 'product_archive_title_background', [ 'desktop' => [ 'color' => 'palette8' ] ] );\\n\\tset_theme_mod( 'footer_html_content', '{copyright} {year} {site-title}. A DevDiggers live demo store.' );\\n\\tset_theme_mod( 'footer_bottom_background', [ 'desktop' => [ 'color' => 'palette8' ] ] );\\n\\n\\t$css = <<<'DDWCCSS'\\n:root{--dk-accent:__A__;--dk-accent-dark:__D__;--dk-tint:__T__;--dk-ink:#1d1d1f;--dk-gray:#6e6e73;--dk-line:#d2d2d7;--dk-fog:#f5f5f7;--dk-ease:cubic-bezier(.25,.1,.25,1)}\\nbody{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.022em;color:var(--dk-ink)}\\nh1,h2,h3,h4{letter-spacing:-.015em}\\na{color:var(--dk-accent)}\\n#masthead .site-main-header-wrap,#masthead .item-is-fixed{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}\\n.main-navigation .primary-menu-container>ul>li.menu-item>a{padding-left:.9em;padding-right:.9em;opacity:.85}\\n.main-navigation .primary-menu-container>ul>li.menu-item>a:hover{opacity:1}\\n.button,button.button,.wp-element-button,input[type=submit],.woocommerce a.button,.woocommerce button.button{background:var(--dk-accent);color:#fff;border:0;box-shadow:none!important;transition:background .2s var(--dk-ease)}\\n.button:hover,.wp-element-button:hover,input[type=submit]:hover,.woocommerce a.button:hover,.woocommerce button.button:hover{background:var(--dk-accent-dark);color:#fff}\\ninput[type=text],input[type=email],input[type=tel],input[type=password],input[type=number],input[type=search],textarea,select{border:1px solid var(--dk-line)!important;border-radius:12px!important;padding:12px 14px!important;background:#fff!important;font-size:17px;transition:border-color .2s,box-shadow .2s}\\ninput:focus,textarea:focus,select:focus{border-color:var(--dk-accent)!important;box-shadow:0 0 0 4px var(--dk-tint)!important;outline:0}\\n.entry-hero .entry-header,.page-title{padding-top:56px;padding-bottom:40px}\\n.entry-hero h1,.page-title h1,.woocommerce-products-header__title{font-size:48px;letter-spacing:-.02em}\\n.woocommerce-store-notice{display:none!important}\\n.woocommerce-message,.woocommerce-info,.woocommerce-error{border:0!important;border-radius:14px;background:var(--dk-fog)!important;color:var(--dk-ink)}\\n\\\/* Product cards, Apple Store style. *\\\/\\nul.products li.product{background:#fff;border-radius:18px;padding:0 0 22px;overflow:hidden;box-shadow:0 2px 12px rgba(0,0,0,.08);transition:box-shadow .3s var(--dk-ease),transform .3s var(--dk-ease)}\\nul.products li.product:hover{box-shadow:0 10px 34px rgba(0,0,0,.14);transform:translateY(-2px)}\\nul.products li.product img{border-radius:0!important;aspect-ratio:1\\\/1;object-fit:cover;margin:0!important}\\nul.products li.product .woocommerce-loop-product__title,ul.products li.product .product-details,ul.products li.product .entry-content-wrap{padding-left:20px;padding-right:20px}\\nul.products li.product .woocommerce-loop-product__title{font-size:17px;font-weight:600;margin-top:16px}\\nul.products li.product .price{color:var(--dk-gray);font-size:15px;font-weight:400}\\nul.products li.product .button{font-size:14px;padding:8px 16px}\\nul.products li.product .onsale{border-radius:980px;background:var(--dk-accent);font-weight:600;font-size:12px}\\n.single-product div.product .product_title{font-size:40px;letter-spacing:-.02em}\\n.single-product div.product .price{font-size:21px;color:var(--dk-ink)}\\n.single-product div.product .woocommerce-product-gallery img{border-radius:24px}\\n\\\/* My account, as a settings sidebar. *\\\/\\n.woocommerce-MyAccount-navigation ul{background:var(--dk-fog);border-radius:18px;padding:8px!important}\\n.woocommerce-MyAccount-navigation ul li{border:0!important}\\n.woocommerce-MyAccount-navigation ul li a{display:block;padding:10px 14px!important;border-radius:10px;color:var(--dk-ink)!important;font-size:15px}\\n.woocommerce-MyAccount-navigation ul li.is-active a{background:#fff;font-weight:600;box-shadow:0 1px 4px rgba(0,0,0,.08)}\\ntable.shop_table{border-radius:18px!important;border-color:var(--dk-line)!important;overflow:hidden}\\n.site-footer{font-size:12px;color:var(--dk-gray)}\\n\\\/* Home page building blocks. *\\\/\\n.dk-wrap{max-width:1180px;margin:0 auto;padding-left:22px;padding-right:22px}\\n.dk-hero{text-align:center;padding-top:72px}\\n.dk-eyebrow{display:inline-block;color:var(--dk-accent);font-size:17px;font-weight:600;letter-spacing:-.01em;margin-bottom:10px}\\n.dk-hero h1{font-size:clamp(44px,7vw,80px);line-height:1.05;letter-spacing:-.025em;margin:0 auto 14px!important;max-width:16ch;text-wrap:balance}\\n.dk-lead{font-size:clamp(19px,2.2vw,24px);line-height:1.38;color:var(--dk-gray);max-width:36em;margin:0 auto 28px!important;text-wrap:pretty;letter-spacing:-.015em}\\n.dk-ctas{display:flex;gap:28px;justify-content:center;align-items:center;flex-wrap:wrap}\\n.dk-btn{display:inline-flex;align-items:center;padding:12px 24px;border-radius:980px;background:var(--dk-accent);color:#fff!important;font-size:17px;text-decoration:none!important;transition:background .2s var(--dk-ease)}\\n.dk-btn:hover{background:var(--dk-accent-dark)}\\n.dk-btn.is-light{background:#fff;color:var(--dk-ink)!important}.dk-btn.is-light:hover{background:#e8e8ed}\\n.dk-more{font-size:17px;color:var(--dk-accent)!important;text-decoration:none!important}\\n.dk-more:after{content:\\\"\\\\203A\\\";display:inline-block;margin-left:6px;font-size:1.2em;line-height:0;transition:transform .2s var(--dk-ease)}\\n.dk-more:hover{text-decoration:underline!important}.dk-more:hover:after{transform:translateX(3px)}\\n.dk-stage{position:relative;margin:56px auto 0;max-width:1180px;border-radius:32px;overflow:hidden;background:var(--dk-fog);aspect-ratio:16\\\/9}\\n.dk-stage>img{width:100%;height:100%;object-fit:cover;display:block}\\n.dk-stage.is-trio{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:#fff}\\n.dk-stage.is-trio>img{min-width:0}\\n.dk-stage .dk-widget{position:absolute;right:32px;bottom:32px}\\n.dk-widget{width:330px;max-width:calc(100% - 32px);text-align:left;padding:18px;border-radius:22px;background:rgba(255,255,255,.78);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);box-shadow:0 22px 60px rgba(0,0,0,.18),inset 0 0 0 .5px rgba(255,255,255,.6);color:var(--dk-ink);font-size:15px;line-height:1.35}\\n.dk-w-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}\\n.dk-w-app{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--dk-accent);color:#fff}\\n.dk-w-app svg{width:19px;height:19px}\\n.dk-w-label{display:block;font-size:12px;font-weight:600;color:var(--dk-gray);letter-spacing:0;text-transform:uppercase}\\n.dk-w-title{display:block;font-size:16px;font-weight:600;letter-spacing:-.02em}\\n.dk-w-big{display:block;font-size:40px;font-weight:600;letter-spacing:-.03em;line-height:1.1;margin:4px 0}\\n.dk-w-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-top:.5px solid rgba(0,0,0,.12);font-size:14px}\\n.dk-w-row span:last-child{color:var(--dk-gray)}\\n.dk-w-row.is-total{font-weight:600}.dk-w-row.is-total span:last-child{color:var(--dk-ink)}\\n.dk-w-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:980px;background:var(--dk-tint);color:var(--dk-accent);font-size:13px;font-weight:600}\\n.dk-w-avatar{flex:none;width:34px;height:34px;border-radius:50%;object-fit:cover}\\n.dk-w-bubble{padding:10px 14px;border-radius:18px 18px 18px 6px;background:#e9e9eb;font-size:15px;margin-top:6px}\\n.dk-w-bubble.is-me{border-radius:18px 18px 6px 18px;background:var(--dk-accent);color:#fff;margin-left:30px}\\n.dk-w-note{display:block;font-size:12px;color:var(--dk-gray);margin-top:10px}\\n.dk-cd{display:flex;gap:8px;margin:10px 0 4px}.dk-cd span{flex:1;text-align:center;padding:10px 0 8px;border-radius:12px;background:var(--dk-ink);color:#fff;font-size:22px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.02em}\\n.dk-cd small{display:block;font-size:10px;font-weight:500;color:#a1a1a6;letter-spacing:.04em;text-transform:uppercase;margin-top:3px}\\n.dk-band{background:var(--dk-fog);margin-top:96px;padding:88px 0}\\n.dk-title{text-align:center!important;font-size:clamp(34px,4.6vw,56px);letter-spacing:-.025em;line-height:1.08;margin:0 auto 48px!important;max-width:20ch;text-wrap:balance}\\n.dk-shelf-title{font-size:clamp(28px,3.4vw,40px);letter-spacing:-.02em;line-height:1.1;margin:0 0 28px}\\n.dk-shelf-title span{color:var(--dk-gray)}\\n.dk-features{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}\\n.dk-feature{background:#fff;border-radius:28px;padding:36px 32px 40px}\\n.dk-feature svg{color:var(--dk-accent);width:36px;height:36px}\\n.dk-feature h3{font-size:24px;letter-spacing:-.02em;margin:18px 0 8px}\\n.dk-feature p{margin:0;font-size:17px;color:var(--dk-gray)}\\n.dk-shelf{padding-top:96px}\\n.dk-shelf-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap}\\n.dk-tile{margin:96px auto 104px;display:grid;grid-template-columns:1fr 1fr;align-items:center;border-radius:32px;overflow:hidden;background:#000;color:#f5f5f7}\\n.dk-tile-copy{padding:64px}\\n.dk-tile h2{color:#f5f5f7;font-size:clamp(32px,3.8vw,48px);letter-spacing:-.025em;line-height:1.08;margin:0 0 16px}\\n.dk-tile p{color:#a1a1a6;font-size:19px;line-height:1.42}\\n.dk-tile .dk-more{color:#2997ff!important}\\n.dk-tile img{width:100%;height:100%;min-height:440px;max-height:600px;object-fit:cover;display:block}\\n.dk-stats{display:flex;gap:36px;margin:28px 0}.dk-stats b{display:block;font-size:32px;font-weight:600;letter-spacing:-.02em;color:#f5f5f7}.dk-stats span{font-size:14px;color:#a1a1a6}\\n.dk-list{list-style:none;padding:0;margin:24px 0}.dk-list li{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:.5px solid rgba(255,255,255,.16);color:#f5f5f7;font-size:17px}\\n.dk-list li b{display:grid;place-items:center;flex:none;width:26px;height:26px;border-radius:50%;background:#f5f5f7;color:#000;font-size:13px}\\n@media(max-width:900px){.dk-features,.dk-tile{grid-template-columns:1fr}.dk-stage{aspect-ratio:4\\\/5;border-radius:24px}.dk-stage .dk-widget{left:16px;right:16px;bottom:16px;width:auto}.dk-stage.is-trio{grid-template-columns:1fr 1fr}.dk-stage.is-trio>img:nth-child(3){display:none}.dk-tile-copy{padding:40px 28px}.dk-tile img{min-height:300px}.dk-band{padding:64px 0}}\\n@media(prefers-reduced-motion:reduce){*{transition:none!important}}\\nDDWCCSS;\\n\\t$css  = str_replace( [ '__A__', '__D__', '__T__' ], [ $accent, $dark, $tint ], $css ) . $a['css'];\\n\\t$code = \\\"<?php\\\\n\\\/\\\/ Live Preview only: the demo kit's global stylesheet.\\\\nadd_action( 'wp_head', function () { echo '<style id=\\\\\\\"ddwc-demo-kit\\\\\\\">' . \\\" . var_export( $css, true ) . \\\" . '<\\\/style>'; }, 99 );\\\\n\\\";\\n\\twp_mkdir_p( WPMU_PLUGIN_DIR );\\n\\tfile_put_contents( WPMU_PLUGIN_DIR . '\\\/demo-style.php', $code );\\n}\\n\\n\\\/**\\n * Build the home page and make it the front page.\\n *\\n * @param array $h eyebrow, title, lead, ctas [ [label, url], [label, url] ] (first is the filled button),\\n *                 hero_img (url, or three urls for a photo trio), hero_alt, widget (HTML on the hero stage), after_ctas (HTML, e.g. a shortcode),\\n *                 features_title, features [ [title, text, icon] ], shelf_title, shelf_sub, shelf (shortcode),\\n *                 shelf_more [label, url], tile [title, text, cta [label, url], img, alt, extra HTML], script.\\n * @return int Page ID.\\n *\\\/\\nfunction ddwc_demo_kit_home( $h ) {\\n\\t$ctas = '';\\n\\tforeach ( $h['ctas'] as $i => $cta ) {\\n\\t\\t$ctas .= '<a class=\\\"' . ( $i ? 'dk-more' : 'dk-btn' ) . '\\\" href=\\\"' . esc_url( $cta[1] ) . '\\\">' . esc_html( $cta[0] ) . '<\\\/a>';\\n\\t}\\n\\t$features = '';\\n\\tforeach ( $h['features'] as $f ) {\\n\\t\\t$features .= '<div class=\\\"dk-feature\\\">' . ddwc_demo_kit_icon( $f[2], 36 ) . '<h3>' . $f[0] . '<\\\/h3><p>' . $f[1] . '<\\\/p><\\\/div>';\\n\\t}\\n\\t\\\/\\\/ One wide photo, or three product photos side by side (works with portrait shots).\\n\\t$trio = is_array( $h['hero_img'] );\\n\\t$imgs = '';\\n\\tforeach ( (array) $h['hero_img'] as $src ) {\\n\\t\\t$imgs .= '<img src=\\\"' . esc_url( $src ) . '\\\" alt=\\\"' . esc_attr( $h['hero_alt'] ) . '\\\"\\\/>';\\n\\t}\\n\\t$t    = $h['tile'];\\n\\t$more = $h['shelf_more'] ?? [ 'View all products', wc_get_page_permalink( 'shop' ) ];\\n\\t$html = '<!-- wp:html --><section class=\\\"dk-hero dk-wrap\\\"><span class=\\\"dk-eyebrow\\\">' . $h['eyebrow'] . '<\\\/span><h1>' . $h['title'] . '<\\\/h1><p class=\\\"dk-lead\\\">' . $h['lead'] . '<\\\/p><div class=\\\"dk-ctas\\\">' . $ctas . ( $h['after_ctas'] ?? '' ) . '<\\\/div>'\\n\\t\\t. '<div class=\\\"dk-stage' . ( $trio ? ' is-trio' : '' ) . '\\\">' . $imgs . $h['widget'] . '<\\\/div><\\\/section><!-- \\\/wp:html -->'\\n\\t\\t. '<!-- wp:html --><section class=\\\"dk-band\\\"><div class=\\\"dk-wrap\\\"><h2 class=\\\"dk-title\\\">' . $h['features_title'] . '<\\\/h2><div class=\\\"dk-features\\\">' . $features . '<\\\/div><\\\/div><\\\/section><!-- \\\/wp:html -->'\\n\\t\\t. '<!-- wp:html --><section class=\\\"dk-shelf dk-wrap\\\"><div class=\\\"dk-shelf-head\\\"><h2 class=\\\"dk-shelf-title\\\">' . $h['shelf_title'] . ' <span>' . $h['shelf_sub'] . '<\\\/span><\\\/h2><a class=\\\"dk-more\\\" href=\\\"' . esc_url( $more[1] ) . '\\\">' . esc_html( $more[0] ) . '<\\\/a><\\\/div><!-- \\\/wp:html -->'\\n\\t\\t. '<!-- wp:shortcode -->' . $h['shelf'] . '<!-- \\\/wp:shortcode -->'\\n\\t\\t. '<!-- wp:html --><\\\/section><!-- \\\/wp:html -->'\\n\\t\\t. '<!-- wp:html --><section class=\\\"dk-wrap\\\"><div class=\\\"dk-tile\\\"><div class=\\\"dk-tile-copy\\\"><h2>' . $t['title'] . '<\\\/h2><p>' . $t['text'] . '<\\\/p>' . ( $t['extra'] ?? '' ) . '<p><a class=\\\"dk-btn is-light\\\" href=\\\"' . esc_url( $t['cta'][1] ) . '\\\">' . esc_html( $t['cta'][0] ) . '<\\\/a><\\\/p><\\\/div><img src=\\\"' . esc_url( $t['img'] ) . '\\\" alt=\\\"' . esc_attr( $t['alt'] ) . '\\\"\\\/><\\\/div><\\\/section>' . ( $h['script'] ?? '' ) . '<!-- \\\/wp:html -->';\\n\\n\\t$id = wp_insert_post( [ 'post_type' => 'page', 'post_status' => 'publish', 'post_title' => 'Home', 'post_content' => $html ] );\\n\\tforeach ( [ '_kad_post_title' => 'hide', '_kad_post_layout' => 'fullwidth', '_kad_post_content_style' => 'unboxed', '_kad_post_vertical_padding' => 'hide', '_kad_post_feature' => 'hide' ] as $k => $v ) {\\n\\t\\tupdate_post_meta( $id, $k, $v );\\n\\t}\\n\\tupdate_option( 'show_on_front', 'page' );\\n\\tupdate_option( 'page_on_front', $id );\\n\\twp_delete_post( 2, true ); \\\/\\\/ Sample Page.\\n\\twp_delete_post( 1, true ); \\\/\\\/ Hello world.\\n\\tupdate_option( 'permalink_structure', '\\\/%postname%\\\/' );\\n\\tflush_rewrite_rules();\\n\\treturn $id;\\n}\\n\\n\\\/**\\n * Primary menu.\\n *\\n * @param array $items label => url.\\n *\\\/\\nfunction ddwc_demo_kit_menu( $items ) {\\n\\t$menu_id = wp_create_nav_menu( 'Main menu' );\\n\\tif ( is_wp_error( $menu_id ) ) {\\n\\t\\t$menu_id = wp_get_nav_menu_object( 'Main menu' )->term_id;\\n\\t}\\n\\tforeach ( $items as $label => $url ) {\\n\\t\\twp_update_nav_menu_item( $menu_id, 0, [ 'menu-item-title' => $label, 'menu-item-url' => $url, 'menu-item-status' => 'publish', 'menu-item-type' => 'custom' ] );\\n\\t}\\n\\t$locations            = get_theme_mod( 'nav_menu_locations', [] );\\n\\t$locations['primary'] = $menu_id;\\n\\t$locations['mobile']  = $menu_id;\\n\\tset_theme_mod( 'nav_menu_locations', $locations );\\n}\\n\\n\\\/**\\n * Write the \\\"View as\\\" switcher mu-plugin.\\n *\\n * Pass a PHP expression string that returns the views array; each view:\\n *   [ 'label' => 'Store admin', 'hint' => 'Dashboard & settings', 'icon' => 'admin', 'user' => 'admin', 'url' => admin_url(...) ]\\n * user '' logs the visitor out. icon: any ddwc_demo_kit_icon() name.\\n *\\n * @param string $views_php PHP code (no <?php) that returns the array.\\n *\\\/\\nfunction ddwc_demo_kit_switcher( $views_php ) {\\n\\t$icons = [];\\n\\tforeach ( [ 'admin', 'customer', 'store', 'product', 'cart', 'chat', 'wallet', 'star', 'register', 'link', 'cube', 'rx', 'phone', 'orders', 'calendar' ] as $n ) {\\n\\t\\t$icons[ $n ] = ddwc_demo_kit_icon( $n, 18 );\\n\\t}\\n\\t$code = <<<'DDWCKIT'\\n<?php\\n\\\/**\\n * Live Preview only: \\\"View as\\\" switcher so visitors can jump between the store owner's\\n * admin and the shopper's side without any password.\\n *\\\/\\nfunction ddwc_demo_switcher_views() {\\n\\t__VIEWS__\\n}\\n\\nadd_action(\\n\\t'init',\\n\\tfunction () {\\n\\t\\tif ( ! isset( $_GET['ddwc_demo_view'] ) ) { \\\/\\\/ phpcs:ignore WordPress.Security.NonceVerification -- demo site only.\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\t$views = ddwc_demo_switcher_views();\\n\\t\\t$view  = $views[ absint( $_GET['ddwc_demo_view'] ) ] ?? null; \\\/\\\/ phpcs:ignore WordPress.Security.NonceVerification\\n\\t\\tif ( ! $view ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\t\\twp_clear_auth_cookie();\\n\\t\\twp_set_current_user( 0 );\\n\\t\\t$user = $view['user'] ? get_user_by( 'login', $view['user'] ) : null;\\n\\t\\tif ( $user ) {\\n\\t\\t\\twp_set_current_user( $user->ID );\\n\\t\\t\\twp_set_auth_cookie( $user->ID, true );\\n\\t\\t}\\n\\t\\twp_safe_redirect( $view['url'] );\\n\\t\\texit;\\n\\t},\\n\\t1\\n);\\n\\n\\\/\\\/ Live Preview: keep the storefront clean, the admin bar only appears in wp-admin.\\nadd_filter( 'show_admin_bar', '__return_false' );\\n\\nfunction ddwc_demo_switcher_render() {\\n\\t$icons   = __ICONS__;\\n\\t$views   = ddwc_demo_switcher_views();\\n\\t$current = wp_get_current_user();\\n\\t$here    = untrailingslashit( set_url_scheme( 'http:\\\/\\\/' . ( $_SERVER['HTTP_HOST'] ?? '' ) . ( $_SERVER['REQUEST_URI'] ?? '' ) ) ); \\\/\\\/ phpcs:ignore\\n\\t$items   = '';\\n\\t$label   = '';\\n\\tforeach ( $views as $i => $view ) {\\n\\t\\t$active = untrailingslashit( set_url_scheme( $view['url'] ) ) === $here && ( ! $view['user'] || ( $current->exists() && $current->user_login === $view['user'] ) );\\n\\t\\tif ( $active ) {\\n\\t\\t\\t$label = $view['label'];\\n\\t\\t}\\n\\t\\t$items .= sprintf(\\n\\t\\t\\t'<a href=\\\"%s\\\" class=\\\"ddwc-ds-item%s\\\"><span class=\\\"ddwc-ds-ico\\\">%s<\\\/span><span class=\\\"ddwc-ds-text\\\"><strong>%s<\\\/strong><small>%s<\\\/small><\\\/span><\\\/a>',\\n\\t\\t\\tesc_url( add_query_arg( 'ddwc_demo_view', $i, home_url( '\\\/' ) ) ),\\n\\t\\t\\t$active ? ' is-active' : '',\\n\\t\\t\\t$icons[ $view['icon'] ?? 'store' ] ?? $icons['store'],\\n\\t\\t\\tesc_html( $view['label'] ),\\n\\t\\t\\tesc_html( $view['hint'] ?? '' )\\n\\t\\t);\\n\\t}\\n\\t?>\\n\\t<div id=\\\"ddwc-demo-switcher\\\">\\n\\t\\t<div class=\\\"ddwc-ds-panel\\\" role=\\\"menu\\\">\\n\\t\\t\\t<div class=\\\"ddwc-ds-head\\\">Explore this live demo<\\\/div>\\n\\t\\t\\t<?php echo $items; \\\/\\\/ phpcs:ignore WordPress.Security.EscapeOutput -- escaped above. ?>\\n\\t\\t<\\\/div>\\n\\t\\t<button type=\\\"button\\\" class=\\\"ddwc-ds-toggle\\\" aria-expanded=\\\"false\\\">\\n\\t\\t\\t<span class=\\\"ddwc-ds-dot\\\"><\\\/span>\\n\\t\\t\\t<span>View as<?php echo $label ? ' <b>' . esc_html( $label ) . '<\\\/b>' : ''; ?><\\\/span>\\n\\t\\t\\t<svg viewBox=\\\"0 0 24 24\\\" width=\\\"14\\\" height=\\\"14\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2.2\\\" stroke-linecap=\\\"round\\\" aria-hidden=\\\"true\\\"><path d=\\\"m6 15 6-6 6 6\\\"\\\/><\\\/svg>\\n\\t\\t<\\\/button>\\n\\t<\\\/div>\\n\\t<style>\\n\\t\\t#ddwc-demo-switcher{position:fixed;left:20px;bottom:20px;z-index:999999;font:400 14px\\\/1.3 -apple-system,BlinkMacSystemFont,\\\"SF Pro Text\\\",\\\"Helvetica Neue\\\",Arial,sans-serif;letter-spacing:-.01em;color:#1d1d1f;-webkit-font-smoothing:antialiased}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-toggle{display:flex;align-items:center;gap:9px;padding:10px 16px;border:0;border-radius:980px;background:rgba(29,29,31,.82);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);color:#f5f5f7;font:inherit;cursor:pointer;box-shadow:0 10px 30px rgba(0,0,0,.24)}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-toggle b{font-weight:600;color:#fff}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-toggle svg{transition:transform .25s cubic-bezier(.25,.1,.25,1);opacity:.7}\\n\\t\\t#ddwc-demo-switcher.is-open .ddwc-ds-toggle svg{transform:rotate(180deg)}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-dot{width:7px;height:7px;border-radius:50%;background:#30d158;box-shadow:0 0 0 3px rgba(48,209,88,.28)}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-panel{position:absolute;left:0;bottom:calc(100% + 10px);width:300px;max-width:calc(100vw - 40px);padding:6px;border-radius:18px;background:rgba(255,255,255,.82);-webkit-backdrop-filter:saturate(180%) blur(24px);backdrop-filter:saturate(180%) blur(24px);box-shadow:0 24px 70px rgba(0,0,0,.22),inset 0 0 0 .5px rgba(0,0,0,.08);opacity:0;visibility:hidden;transform:translateY(6px) scale(.98);transform-origin:bottom left;transition:opacity .2s,transform .25s cubic-bezier(.25,.1,.25,1),visibility .2s}\\n\\t\\t#ddwc-demo-switcher.is-open .ddwc-ds-panel{opacity:1;visibility:visible;transform:none}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-head{padding:10px 12px 8px;font-size:12px;font-weight:600;color:#6e6e73}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-item{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:12px;color:#1d1d1f;text-decoration:none}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-item:hover{background:rgba(0,0,0,.05)}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-item.is-active{background:rgba(0,113,227,.1)}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-ico{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:#e8e8ed;color:#1d1d1f}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-item.is-active .ddwc-ds-ico{background:#0071e3;color:#fff}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-text{display:flex;flex-direction:column;min-width:0}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-text strong{font-weight:600;font-size:14px}\\n\\t\\t#ddwc-demo-switcher .ddwc-ds-text small{font-size:12px;color:#6e6e73}\\n\\t\\t@media (max-width:782px){#ddwc-demo-switcher{left:12px;bottom:auto;top:58px}#ddwc-demo-switcher .ddwc-ds-panel{bottom:auto;top:calc(100% + 10px);transform-origin:top left}}\\n\\t<\\\/style>\\n\\t<script>\\n\\t\\t(function(){var w=document.getElementById('ddwc-demo-switcher');if(!w)return;var b=w.querySelector('.ddwc-ds-toggle');b.addEventListener('click',function(e){e.stopPropagation();var o=w.classList.toggle('is-open');b.setAttribute('aria-expanded',o)});document.addEventListener('click',function(e){if(!w.contains(e.target)){w.classList.remove('is-open');b.setAttribute('aria-expanded','false')}});try{if(!sessionStorage.getItem('ddwcDemoSeen')){w.classList.add('is-open');sessionStorage.setItem('ddwcDemoSeen','1');setTimeout(function(){w.classList.remove('is-open');b.setAttribute('aria-expanded','false')},5000)}}catch(e){}})();\\n\\t<\\\/script>\\n\\t<?php\\n}\\nadd_action( 'wp_footer', 'ddwc_demo_switcher_render' );\\nadd_action( 'admin_footer', 'ddwc_demo_switcher_render' );\\nDDWCKIT;\\n\\twp_mkdir_p( WPMU_PLUGIN_DIR );\\n\\tfile_put_contents( WPMU_PLUGIN_DIR . '\\\/demo-switcher.php', str_replace( [ '__VIEWS__', '__ICONS__' ], [ $views_php, var_export( $icons, true ) ], $code ) );\\n}\\n\\n\\nwp_set_current_user( 1 );\\nddwc_demo_kit_style( [ 'accent' => '#5e5ce6' ] );\\n\\n$shop    = wc_get_page_permalink( 'shop' );\\n$account = wc_get_page_permalink( 'myaccount' );\\n$home_id = ddwc_demo_kit_home( [\\n\\t'eyebrow'        => 'Order chat, built in',\\n\\t'title'          => 'Slow living, made by hand.',\\n\\t'lead'           => 'Stoneware, glass and oak from small studios. A question about your order? Message our team right from your account. We usually reply within hours.',\\n\\t'ctas'           => [ [ 'Shop the collection', $shop ], [ 'Track an order', $account ] ],\\n\\t'hero_img'       => [ ddwc_demo_kit_img( $products['vase'] ), ddwc_demo_kit_img( $products['lamp'] ), ddwc_demo_kit_img( $products['budvase'] ) ],\\n\\t'hero_alt'       => 'Fern & Fable ceramics',\\n\\t'widget'         => '<div class=\\\"dk-widget\\\"><div class=\\\"dk-w-head\\\"><img class=\\\"dk-w-avatar\\\" src=\\\"https:\\\/\\\/randomuser.me\\\/api\\\/portraits\\\/women\\\/68.jpg\\\" alt=\\\"\\\"\\\/><span><span class=\\\"dk-w-title\\\">Maya, Fern &amp; Fable<\\\/span><span class=\\\"dk-w-label\\\">Order #1042<\\\/span><\\\/span><\\\/div>'\\n\\t\\t. '<div class=\\\"dk-w-bubble is-me\\\">Is the sage vase glazed inside? I want to use fresh flowers.<\\\/div>'\\n\\t\\t. '<div class=\\\"dk-w-bubble\\\">Hi Amara! Yes, it is fully glazed inside, so fresh flowers are perfect.<\\\/div>'\\n\\t\\t. '<span class=\\\"dk-w-note\\\">Read 10:42<\\\/span><\\\/div>',\\n\\t'features_title' => 'Questions answered. Right where the order is.',\\n\\t'features'       => [\\n\\t\\t[ 'A chat on every order', 'Each order has its own private conversation in My Account, with the order right beside it.', 'chat' ],\\n\\t\\t[ 'Made by small studios', 'We work directly with twelve makers, so every piece is small batch and signed.', 'heart' ],\\n\\t\\t[ 'Packed with care', 'Plastic-free packaging and free returns within 30 days on every order.', 'orders' ],\\n\\t],\\n\\t'shelf_title'    => 'New in the studio.',\\n\\t'shelf_sub'      => 'Fresh from the kiln.',\\n\\t'shelf'          => '[products limit=\\\"8\\\" columns=\\\"4\\\" orderby=\\\"date\\\"]',\\n\\t'tile'           => [\\n\\t\\t'title' => 'No more lost email threads.',\\n\\t\\t'text'  => 'Open the order in your account, send a message and see when we have read it. Every reply stays with the order it belongs to.',\\n\\t\\t'cta'   => [ 'Go to my account', $account ],\\n\\t\\t'img'   => ddwc_demo_kit_img( $products['chair'] ),\\n\\t\\t'alt'   => 'Reading chair by a window',\\n\\t],\\n] );\\nddwc_demo_kit_menu( [ 'Shop' => $shop, 'My account' => $account ] );\\n\\nddwc_demo_kit_switcher( <<<'DDWCVIEWS'\\n$order   = (int) get_option( 'ddwc_demo_order' );\\n\\t$account = wc_get_page_permalink( 'myaccount' );\\n\\treturn [\\n\\t\\t[ 'label' => 'Store team inbox', 'hint' => 'Reply to customers in one place', 'icon' => 'chat', 'user' => 'admin', 'url' => admin_url( 'admin.php?page=ddwcoc-dashboard&menu=inbox' ) ],\\n\\t\\t[ 'label' => 'Message dashboard', 'hint' => 'Replies, response time and activity', 'icon' => 'admin', 'user' => 'admin', 'url' => admin_url( 'admin.php?page=ddwcoc-dashboard' ) ],\\n\\t\\t[ 'label' => 'Customer order chat', 'hint' => 'Amara chats about her order', 'icon' => 'customer', 'user' => 'amara', 'url' => wc_get_endpoint_url( 'view-order', $order, $account ) ],\\n\\t\\t[ 'label' => 'Storefront', 'hint' => 'The shop your customers see', 'icon' => 'store', 'user' => '', 'url' => home_url( '\\\/' ) ],\\n\\t];\\nDDWCVIEWS\\n);\\n\"},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3761452,"resolution":"1","location":"assets","locale":"","width":1600,"height":1000},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3761452,"resolution":"2","location":"assets","locale":"","width":1600,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3761452,"resolution":"3","location":"assets","locale":"","width":1600,"height":1000},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3761452,"resolution":"4","location":"assets","locale":"","width":1600,"height":1000},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3761452,"resolution":"5","location":"assets","locale":"","width":1600,"height":1000},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3761452,"resolution":"6","location":"assets","locale":"","width":1600,"height":1000},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3761452,"resolution":"7","location":"assets","locale":"","width":1600,"height":1000}},"screenshots":{"1":"Inbox with every order conversation, the chat and the order details side by side.","2":"Dashboard with messages received, first response time and reply rate.","3":"Customers chat about an order from the view order page in My Account.","4":"The conversation box on the WooCommerce order edit screen.","5":"General settings for allowed order statuses and closing conversations.","6":"Chat colors and live updates.","7":"Setup wizard."}},"plugin_section":[],"plugin_tags":[288063,2369,265119,288062,30768],"plugin_category":[],"plugin_contributors":[220149],"plugin_business_model":[],"class_list":["post-389566","plugin","type-plugin","status-publish","hentry","plugin_tags-customer-messages","plugin_tags-customer-support","plugin_tags-order-chat","plugin_tags-order-messages","plugin_tags-woocommerce-chat","plugin_contributors-devdiggers","plugin_committers-devdiggers"],"banners":{"banner":"https:\/\/ps.w.org\/devdiggers-order-communication-for-woocommerce\/assets\/banner-772x250.png?rev=3761452","banner_2x":"https:\/\/ps.w.org\/devdiggers-order-communication-for-woocommerce\/assets\/banner-1544x500.png?rev=3761452","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/devdiggers-order-communication-for-woocommerce\/assets\/icon-128x128.gif?rev=3761452","icon_2x":"https:\/\/ps.w.org\/devdiggers-order-communication-for-woocommerce\/assets\/icon-256x256.gif?rev=3761452","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/devdiggers-order-communication-for-woocommerce\/assets\/screenshot-1.png?rev=3761452","caption":"Inbox with every order conversation, the chat and the order details side by side."},{"src":"https:\/\/ps.w.org\/devdiggers-order-communication-for-woocommerce\/assets\/screenshot-2.png?rev=3761452","caption":"Dashboard with messages received, first response time and reply rate."},{"src":"https:\/\/ps.w.org\/devdiggers-order-communication-for-woocommerce\/assets\/screenshot-3.png?rev=3761452","caption":"Customers chat about an order from the view order page in My Account."},{"src":"https:\/\/ps.w.org\/devdiggers-order-communication-for-woocommerce\/assets\/screenshot-4.png?rev=3761452","caption":"The conversation box on the WooCommerce order edit screen."},{"src":"https:\/\/ps.w.org\/devdiggers-order-communication-for-woocommerce\/assets\/screenshot-5.png?rev=3761452","caption":"General settings for allowed order statuses and closing conversations."},{"src":"https:\/\/ps.w.org\/devdiggers-order-communication-for-woocommerce\/assets\/screenshot-6.png?rev=3761452","caption":"Chat colors and live updates."},{"src":"https:\/\/ps.w.org\/devdiggers-order-communication-for-woocommerce\/assets\/screenshot-7.png?rev=3761452","caption":"Setup wizard."}],"raw_content":"<!--section=description-->\n<p>When a customer has a question about an order, it usually lands in your email inbox with no order number, gets forwarded around, and waits. You then search WooCommerce for the order, reply from your mail client, and hope the customer sees it.<\/p>\n\n<p>This <strong><a href=\"https:\/\/devdiggers.com\/product\/woocommerce-order-communication\/\">WooCommerce order communication plugin<\/a><\/strong> gives every WooCommerce order its own private order chat. The customer writes from <strong>My Account &gt; Orders &gt; View<\/strong>, right under the order details. Your team answers from a dedicated <strong>Inbox<\/strong> in the WordPress admin, or straight from the order edit screen, with the customer and the order beside the messages.<\/p>\n\n<p>Customer messages stay with the order in your own database. There is no chat service to sign up for, no monthly fee and no widget loaded from another site. Want to see it first? <a href=\"https:\/\/demo.devdiggers.com\/order-communication-for-woocommerce\/\">Try the live demo<\/a>.<\/p>\n\n<h4>Quick links<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/demo.devdiggers.com\/order-communication-for-woocommerce\/\">Free Plugin Live Demo<\/a><\/li>\n<li><a href=\"https:\/\/demo.devdiggers.com\/woocommerce-order-communication\/\">Pro Demo<\/a><\/li>\n<li><a href=\"https:\/\/docs.devdiggers.com\/woocommerce-order-communication\/\">Documentation<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/support\/plugin\/devdiggers-order-communication-for-woocommerce\/\">Support<\/a><\/li>\n<li><a href=\"https:\/\/devdiggers.com\/product\/woocommerce-order-communication\/#free-vs-pro\">Free vs Pro<\/a><\/li>\n<li><a href=\"https:\/\/devdiggers.com\/product\/woocommerce-order-communication\/\">Upgrade to Pro<\/a><\/li>\n<\/ul>\n\n<h4>How the order chat works<\/h4>\n\n<ol>\n<li>A customer opens an order in My Account and sends a message about it.<\/li>\n<li>Your team gets an email and the conversation moves to the top of the Inbox, with an unread count on the menu.<\/li>\n<li>You reply from the Inbox or the order screen. The customer gets an email with a button that opens the conversation.<\/li>\n<li>While the chat is open, new messages appear on both sides without reloading, and your own messages show a \"Seen\" tick once the other side has read them.<\/li>\n<\/ol>\n\n<h4>What the free plugin does<\/h4>\n\n<h3>A private chat on every WooCommerce order<\/h3>\n\n<p>The conversation sits under the order details on the customer's view order page in My Account, and in an <strong>Order Communication<\/strong> box on the WooCommerce order edit screen. Both show the same thread, so whoever on your team opens the order sees the full history.<\/p>\n\n<ul>\n<li>One conversation per order, for every order the customer placed.<\/li>\n<li>Live updates while the chat is open. You choose how often it checks for new messages.<\/li>\n<li>Read receipts on your own messages.<\/li>\n<li>Links in messages become clickable.<\/li>\n<li>Enter sends a message and Shift + Enter adds a new line.<\/li>\n<\/ul>\n\n<h3>Shared support Inbox for your team<\/h3>\n\n<p>The Inbox lists every order conversation in one place, newest first, so nobody has to dig through the orders list to find who is waiting.<\/p>\n\n<ul>\n<li>Search by customer name, email, order number or any word in a message.<\/li>\n<li>Filter by <strong>All<\/strong>, <strong>Awaiting Reply<\/strong> or <strong>Closed<\/strong>, with a count on each.<\/li>\n<li>The order panel beside the chat shows the customer's contact details, order count, total spent, shipping address, items, payment method and order total.<\/li>\n<li>Close a conversation when the question is answered. The customer sees it is closed and can write again once you reopen it.<\/li>\n<\/ul>\n\n<h3>Email notifications for new customer messages<\/h3>\n\n<ul>\n<li>The store gets an email when a customer writes, with the message quoted and a link to the conversation.<\/li>\n<li>The customer gets an email when you reply, with a button that opens the chat in My Account.<\/li>\n<li>Send store alerts to one or more email addresses.<\/li>\n<li>Edit the subject, heading and message of both emails, with placeholders for the customer name, order number, order total and more.<\/li>\n<li>The emails use your WooCommerce email template, header and footer.<\/li>\n<\/ul>\n\n<h3>Unread counts where your team already works<\/h3>\n\n<ul>\n<li>An unread badge on the plugin menu and on the Inbox tab.<\/li>\n<li>A <strong>Messages<\/strong> column on the WooCommerce orders list, with an unread count.<\/li>\n<li>A <strong>Messages<\/strong> column in the customer's My Account orders list showing new replies.<\/li>\n<\/ul>\n\n<h3>Settings and dashboard<\/h3>\n\n<ul>\n<li>Choose which order statuses customers can message on. Your team can always reply.<\/li>\n<li>Match the chat bubbles and the Send button to your brand colors.<\/li>\n<li>A dashboard with messages received, store replies, active conversations, conversations awaiting a reply, a daily activity chart and the latest customer messages.<\/li>\n<li>A short setup wizard on first activation.<\/li>\n<li>Compatible with WooCommerce High-Performance Order Storage (HPOS).<\/li>\n<\/ul>\n\n<h4>Free vs Pro<\/h4>\n\n<p>The free plugin is a complete order chat. <a href=\"https:\/\/devdiggers.com\/product\/woocommerce-order-communication\/\">WooCommerce Order Communication Pro<\/a> is for stores where answering customers takes real time every day. Inside the free plugin you can see each Pro feature where it would sit, marked PRO.<\/p>\n\n<h3>File sharing (Pro)<\/h3>\n\n<ul>\n<li>Customers and staff attach photos and documents by picking, dragging or pasting them into the chat.<\/li>\n<li>Images, PDF, text and Word files, several files per message, with your own size limit.<\/li>\n<li>Files are checked by their real content, shown inline in the conversation and attached to the notification emails.<\/li>\n<\/ul>\n\n<h3>Faster replies (Pro)<\/h3>\n\n<ul>\n<li><strong>Saved replies<\/strong>: write your common answers once and insert them from the chat box, with the customer name, order number and total filled in.<\/li>\n<li><strong>Private notes<\/strong>: notes on a conversation that only your team can see.<\/li>\n<li><strong>Instant auto-reply<\/strong>, with an optional delay so a person can answer first.<\/li>\n<li><strong>Order status messages<\/strong>: your own message for each order status, posted into the chat and emailed automatically.<\/li>\n<\/ul>\n\n<h3>More control (Pro)<\/h3>\n\n<ul>\n<li><strong>Business hours<\/strong>: online or away status in the chat, and what happens to messages sent while you are closed.<\/li>\n<li><strong>Message limits<\/strong>: a daily cap per customer to stop spam and floods.<\/li>\n<\/ul>\n\n<h3>Records and reporting (Pro)<\/h3>\n\n<ul>\n<li><strong>Communications list<\/strong>: every conversation in a sortable table with filters and bulk actions.<\/li>\n<li><strong>CSV export<\/strong> of conversations, and a <strong>printable transcript<\/strong> of any order conversation.<\/li>\n<li><strong>Response analytics<\/strong>: average first response time, reply rate, a daily response time chart and the split of awaiting, answered and closed conversations.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>The plugin itself sends no data to any outside service. Messages are stored in your WordPress database, and notifications go out through the WooCommerce mailer. It contains no licence checks, no update checks and no telemetry.<\/p>\n\n<p><strong>1. Gravatar (avatar images)<\/strong><\/p>\n\n<ul>\n<li>What it is: Gravatar, the avatar service operated by Automattic, used through WordPress core's <code>get_avatar()<\/code> and <code>get_avatar_url()<\/code>.<\/li>\n<li>What it is used for: Showing customer and staff avatars in the chat, the Inbox and the plugin dashboard. This is standard WordPress behaviour.<\/li>\n<li>When data is sent: When one of those screens is viewed and avatars are enabled under <strong>Settings &gt; Discussion<\/strong>. Turning avatars off there stops the requests.<\/li>\n<li>What data is sent: A hash of the person's email address inside the image URL, plus the usual request data of the viewer's browser such as IP address and user agent.<\/li>\n<li>Terms of Service: https:\/\/automattic.com\/terms\/<\/li>\n<li>Privacy Policy: https:\/\/automattic.com\/privacy\/<\/li>\n<\/ul>\n\n<p>The bundled DevDiggers framework, which draws the admin screens, connects to the two services below. Both run only inside the WordPress admin.<\/p>\n\n<p><strong>2. DevDiggers extensions directory<\/strong><\/p>\n\n<ul>\n<li>What it is: A read only API on devdiggers.com that returns the public list of DevDiggers extensions.<\/li>\n<li>What it is used for: Showing available DevDiggers extensions on the Extensions admin page.<\/li>\n<li>When data is sent: Only when a logged in administrator opens the Extensions admin page. The response is cached for 24 hours.<\/li>\n<li>What data is sent: A standard outbound HTTP request only, meaning your server's IP address and a plugin user agent string. No personal data and no store data are sent. The page also loads each listed extension's image from devdiggers.com in the administrator's browser.<\/li>\n<li>Endpoint: https:\/\/devdiggers.com\/wp-json\/ddwcs\/v1\/plugins<\/li>\n<\/ul>\n\n<p><strong>3. Newsletter subscription (optional)<\/strong><\/p>\n\n<ul>\n<li>What it is: A contact and newsletter endpoint on devdiggers.com.<\/li>\n<li>What it is used for: Adding your email address to the DevDiggers newsletter, only if you choose to subscribe.<\/li>\n<li>When data is sent: Only when an administrator submits the optional newsletter form in the plugin dashboard. Nothing is sent automatically.<\/li>\n<li>What data is sent: The email address you enter and your site URL.<\/li>\n<li>Endpoint: https:\/\/devdiggers.com\/?fluentcrm=1&amp;route=contact<\/li>\n<\/ul>\n\n<p>The DevDiggers services are provided by DevDiggers. By using them you agree to the DevDiggers Terms and Conditions (https:\/\/devdiggers.com\/terms-and-conditions\/) and Privacy Policy (https:\/\/devdiggers.com\/privacy-policy\/).<\/p>\n\n<h3>Source code and build tools<\/h3>\n\n<p>The admin and storefront JavaScript and CSS in <code>assets\/<\/code> are compiled from the <code>src\/<\/code> folder with webpack and Babel. The complete, human readable source code, including all build configuration, is published in our public GitHub repository:<\/p>\n\n<p>https:\/\/github.com\/DevDiggers-Technologies\/order-communication-for-woocommerce<\/p>\n\n<p>To build the assets from source:<\/p>\n\n<ol>\n<li>Run <code>npm install<\/code> to install the build dependencies listed in <code>package.json<\/code>.<\/li>\n<li>Run <code>npm run build<\/code> to compile the production assets into <code>assets\/js<\/code> and <code>assets\/css<\/code>.<\/li>\n<\/ol>\n\n<p>Two third party libraries used by the admin screens ship unmodified under the MIT licence inside <code>devdiggers-framework\/assets\/js\/<\/code>: Chart.js (https:\/\/www.chartjs.org) and Select2 (https:\/\/select2.org).<\/p>\n\n<!--section=installation-->\n<h4>Automatic installation<\/h4>\n\n<ol>\n<li>In your WordPress admin go to <strong>Plugins &gt; Add New Plugin<\/strong>.<\/li>\n<li>Search for \"Order Communication for WooCommerce\".<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<\/ol>\n\n<h4>Manual installation<\/h4>\n\n<ol>\n<li>Download the plugin zip from WordPress.org.<\/li>\n<li>Go to <strong>Plugins &gt; Add New Plugin &gt; Upload Plugin<\/strong> and upload the zip.<\/li>\n<li>Activate the plugin.<\/li>\n<\/ol>\n\n<h4>After activating<\/h4>\n\n<p>The setup wizard opens. Turn on order conversations and choose which emails to send, and you are done. Everything can be changed later under <strong>Order Communication &gt; Configuration<\/strong>.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.5 or later<\/li>\n<li>WooCommerce 9.0 or later<\/li>\n<li>PHP 7.4 or later<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20customers%20message%20the%20store%20about%20an%20order%3F\"><h3>How do customers message the store about an order?<\/h3><\/dt>\n<dd><p>They open the order in <strong>My Account &gt; Orders &gt; View<\/strong> and write in the chat under the order details. The <strong>Messages<\/strong> column in their orders list also links to it.<\/p><\/dd>\n<dt id=\"where%20does%20my%20team%20reply%20to%20customer%20messages%3F\"><h3>Where does my team reply to customer messages?<\/h3><\/dt>\n<dd><p>In the <strong>Inbox<\/strong> under Order Communication, or in the Order Communication box on the WooCommerce order edit screen. Both show the same conversation.<\/p><\/dd>\n<dt id=\"can%20guests%20who%20checked%20out%20without%20an%20account%20use%20the%20chat%3F\"><h3>Can guests who checked out without an account use the chat?<\/h3><\/dt>\n<dd><p>No. The chat lives in My Account, so customers need to be logged in. If a guest later creates an account with the same email address and the order is linked to it, they can use the chat on that order.<\/p><\/dd>\n<dt id=\"can%20customers%20send%20photos%20or%20files%3F\"><h3>Can customers send photos or files?<\/h3><\/dt>\n<dd><p>File sharing is part of Pro. In the free plugin, messages are text only.<\/p><\/dd>\n<dt id=\"is%20this%20a%20live%20chat%20widget%20for%20my%20whole%20site%3F\"><h3>Is this a live chat widget for my whole site?<\/h3><\/dt>\n<dd><p>No. Each conversation belongs to one WooCommerce order, which keeps post-purchase support tied to the right order. For pre-sale questions on product pages you would still use a contact form or a site-wide chat.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20tidio%2C%20crisp%20or%20whatsapp%20account%3F\"><h3>Do I need a Tidio, Crisp or WhatsApp account?<\/h3><\/dt>\n<dd><p>No. Messages are stored in your own WordPress database and sent with the WooCommerce mailer. No third party chat service is involved.<\/p><\/dd>\n<dt id=\"do%20new%20messages%20show%20up%20without%20reloading%20the%20page%3F\"><h3>Do new messages show up without reloading the page?<\/h3><\/dt>\n<dd><p>Yes. An open chat checks for new messages every 15 seconds by default. You can change the interval under <strong>Configuration &gt; Chat<\/strong>.<\/p><\/dd>\n<dt id=\"can%20i%20stop%20customers%20writing%20on%20old%20or%20cancelled%20orders%3F\"><h3>Can I stop customers writing on old or cancelled orders?<\/h3><\/dt>\n<dd><p>Yes. Under <strong>Configuration &gt; General<\/strong>, choose the order statuses customers can write on. You can also close any single conversation from its header.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20email%20wording%3F\"><h3>Can I change the email wording?<\/h3><\/dt>\n<dd><p>Yes. Under <strong>Configuration &gt; Emails<\/strong> you can edit the subject, heading and message of the store and customer emails, use placeholders such as {customer_name} and {order_number}, and choose who receives the store alerts.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20hpos%3F\"><h3>Does it work with HPOS?<\/h3><\/dt>\n<dd><p>Yes. The plugin supports WooCommerce High-Performance Order Storage and the classic orders table.<\/p><\/dd>\n<dt id=\"will%20my%20conversations%20be%20kept%20if%20i%20upgrade%20to%20pro%3F\"><h3>Will my conversations be kept if I upgrade to Pro?<\/h3><\/dt>\n<dd><p>Yes. Pro reads the same messages and settings. Activate Pro and the free plugin steps aside on its own.<\/p><\/dd>\n<dt id=\"can%20i%20translate%20the%20plugin%3F\"><h3>Can I translate the plugin?<\/h3><\/dt>\n<dd><p>Yes. All text is translation ready, and a .pot file is included in the i18n folder.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Order chat for WooCommerce. Customers message you about an order from My Account, and your team replies from one shared support Inbox.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/389566","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=389566"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/devdiggers"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=389566"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=389566"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=389566"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=389566"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=389566"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=389566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}