{"id":387046,"date":"2026-10-18T08:06:21","date_gmt":"2026-10-18T08:06:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/boxintellect-ai-package-size-calculator-for-woocommerce\/"},"modified":"2026-10-19T14:25:16","modified_gmt":"2026-10-19T14:25:16","slug":"boxintellect-ai-box-packing-package-dimensions-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/","author":23578309,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.5","stable_tag":"1.0.5","tested":"7.1.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"BoxIntellect \u2013 AI Box Packing & Package Dimensions for WooCommerce","header_author":"M1Sh0u","header_description":"Calculates the parcels of every WooCommerce order (boxes, outer dimensions and weight) with a 3D packing algorithm, and fills in missing product dimensions with the AI provider you connected in Settings \u2192 Connectors.","assets_banners_color":"e8defe","last_updated":"2026-10-19 14:25:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/boxintellect.pro\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":125,"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":"m1sh0u","date":"2026-10-18 08:06:08","revision":3752728},"1.0.1":{"tag":"1.0.1","author":"m1sh0u","date":"2026-10-18 10:57:20","revision":3752920},"1.0.2":{"tag":"1.0.2","author":"m1sh0u","date":"2026-10-18 16:12:53","revision":3753307},"1.0.3":{"tag":"1.0.3","author":"m1sh0u","date":"2026-10-19 08:37:40","revision":3754303},"1.0.4":{"tag":"1.0.4","author":"m1sh0u","date":"2026-10-19 12:10:46","revision":3754687},"1.0.5":{"tag":"1.0.5","author":"m1sh0u","date":"2026-10-19 14:25:16","revision":3754966}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3752728,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3752728,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3752728,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3752728,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3752728,"resolution":"1","location":"assets","locale":"","width":1872,"height":942},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3752728,"resolution":"10","location":"assets","locale":"","width":1920,"height":1227},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3752728,"resolution":"2","location":"assets","locale":"","width":1863,"height":1682},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3752728,"resolution":"3","location":"assets","locale":"","width":1863,"height":1650},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3752728,"resolution":"4","location":"assets","locale":"","width":1422,"height":1134},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3752728,"resolution":"5","location":"assets","locale":"","width":2343,"height":1068},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3752728,"resolution":"6","location":"assets","locale":"","width":1863,"height":1061},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3752728,"resolution":"7","location":"assets","locale":"","width":1860,"height":1464},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3752728,"resolution":"8","location":"assets","locale":"","width":1863,"height":1368},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3752728,"resolution":"9","location":"assets","locale":"","width":1863,"height":629}},"screenshots":{"1":"The parcels of every order on the order screen: which box, outer size, weight and how full it is.","2":"Packing test: pick products and see which boxes they ship in, with a 3D view of each parcel.","3":"Overview: catalog completeness and the products that still need dimensions.","4":"\"Estimate with AI\" and the packing rules in the product Shipping tab.","5":"Your boxes, with inside and outside sizes, empty weight and maximum contents.","6":"Pro: AI estimates for the whole catalog wait on the Review tab until you approve them.","7":"Pro: the shipping report compares what customers paid for shipping with what your parcels cost.","8":"Pro: the box advisor finds the box sizes that ship your real orders in the least volume.","9":"Pro: the data quality check flags weights and sizes that don't add up.","10":"Pro: packing slip with your logo, an order barcode and a 3D diagram of each parcel."}},"plugin_section":[],"plugin_tags":[287325,260760,287326,3546,286],"plugin_category":[45],"plugin_contributors":[285255],"plugin_business_model":[],"class_list":["post-387046","plugin","type-plugin","status-publish","hentry","plugin_tags-box-packing","plugin_tags-dimensional-weight","plugin_tags-package-dimensions","plugin_tags-shipping","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-m1sh0u","plugin_committers-m1sh0u"],"banners":{"banner":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/banner-772x250.png?rev=3752728","banner_2x":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/banner-1544x500.png?rev=3752728","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/icon-128x128.png?rev=3752728","icon_2x":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/icon-256x256.png?rev=3752728","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/screenshot-1.png?rev=3752728","caption":"The parcels of every order on the order screen: which box, outer size, weight and how full it is."},{"src":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/screenshot-2.png?rev=3752728","caption":"Packing test: pick products and see which boxes they ship in, with a 3D view of each parcel."},{"src":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/screenshot-3.png?rev=3752728","caption":"Overview: catalog completeness and the products that still need dimensions."},{"src":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/screenshot-4.png?rev=3752728","caption":"\"Estimate with AI\" and the packing rules in the product Shipping tab."},{"src":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/screenshot-5.png?rev=3752728","caption":"Your boxes, with inside and outside sizes, empty weight and maximum contents."},{"src":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/screenshot-6.png?rev=3752728","caption":"Pro: AI estimates for the whole catalog wait on the Review tab until you approve them."},{"src":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/screenshot-7.png?rev=3752728","caption":"Pro: the shipping report compares what customers paid for shipping with what your parcels cost."},{"src":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/screenshot-8.png?rev=3752728","caption":"Pro: the box advisor finds the box sizes that ship your real orders in the least volume."},{"src":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/screenshot-9.png?rev=3752728","caption":"Pro: the data quality check flags weights and sizes that don't add up."},{"src":"https:\/\/ps.w.org\/boxintellect-ai-box-packing-package-dimensions-for-woocommerce\/assets\/screenshot-10.png?rev=3752728","caption":"Pro: packing slip with your logo, an order barcode and a 3D diagram of each parcel."}],"raw_content":"<!--section=description-->\n<p><strong>Your shipping rates are only as good as your product dimensions.<\/strong><\/p>\n\n<p>Carriers charge by parcel size and weight, but WooCommerce only knows the size of each product, and only if someone entered it. Measuring hundreds of products by hand never happens, so rates are calculated on blanks and defaults. Some orders are undercharged and you pay the surcharges. Others are overcharged and the customer leaves the cart.<\/p>\n\n<p>BoxIntellect fills in the missing data with AI, then works out exactly which boxes every order ships in.<\/p>\n\n<p><strong>See it in action (under 6 minutes):<\/strong> setting up your boxes, filling in missing dimensions with AI, and the parcels of every order.<\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=mF91hoQNtUU<\/p>\n\n<p>You can also <a href=\"https:\/\/boxintellect.pro\/how-to-install\/#how-to-use\">watch the video in higher quality<\/a> on our website.<\/p>\n\n<p><strong>How it works<\/strong><\/p>\n\n<ol>\n<li><strong>AI fills in what's missing.<\/strong> Click \"Estimate with AI\" on a product. BoxIntellect reads the product name, description, attributes and photo, and suggests the shipping size and weight of one unit, with a confidence level and a short note. You check the values before they are saved.<\/li>\n<li><strong>Every order is packed into your real boxes.<\/strong> A 3D packing algorithm places each item in your boxes, turning items to make them fit and respecting weight limits, then picks the smallest boxes that hold everything. It runs on your server in milliseconds and gives the same answer every time. No AI is involved in packing.<\/li>\n<li><strong>Shipping gets the real parcels.<\/strong> Each order shows its parcels: which box, how many, outer size and gross weight. ShipStation receives the real box size automatically, and label tools that import CSV files can use a parcel export.<\/li>\n<\/ol>\n\n<p><strong>Why BoxIntellect<\/strong><\/p>\n\n<ul>\n<li><strong>Packing plus the data it needs.<\/strong> Box packing only works if your dimensions are right. BoxIntellect fills them in first.<\/li>\n<li><strong>Your AI, your keys, no middleman.<\/strong> It uses the AI provider you connected in WordPress (OpenAI, Anthropic, Google or any other provider plugin). No credits to buy, and product data goes straight to your provider.<\/li>\n<li><strong>Customer data never leaves your site.<\/strong> Packing runs on your server. No orders or addresses are sent to us or to the AI.<\/li>\n<li><strong>Works with any carrier.<\/strong> It is not tied to a single carrier.<\/li>\n<\/ul>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Your boxes: inside and outside sizes, empty weight and maximum contents. A starter set of common carton sizes is added on activation.<\/li>\n<li>Parcels of every new order calculated at checkout and shown on the order screen (with a Recalculate button) and in the order list.<\/li>\n<li>Parcels added to the cart's shipping packages (<code>$package['boxintellect_parcels']<\/code>) so shipping methods and carrier plugins can use them.<\/li>\n<li><strong>ShipStation:<\/strong> with the ShipStation for WooCommerce plugin, orders that ship in one parcel reach ShipStation with the outer size of their box, and every order gets a parcel summary in a custom field.<\/li>\n<li><strong>Parcel CSV export:<\/strong> select orders in the order list and choose \"Export parcels (CSV)\": one row per parcel with the shipping address, box, outer size and weight, ready to import into label tools that let you map CSV columns.<\/li>\n<li>Parcels in the WooCommerce REST API order response (<code>boxintellect_parcels<\/code>), for services that read your orders through the API.<\/li>\n<li>\"Estimate with AI\" button in the product Shipping tab; a Package column in the product list showing which products are missing dimensions.<\/li>\n<li>Overview with catalog completeness and inline AI estimates for the products that still need dimensions, page by page (you choose how many per page).<\/li>\n<li><strong>Check before shipping:<\/strong> flag high-value orders, orders with fragile items and orders packed with estimated or missing data. Flagged orders get a notice in the Parcels box with \"Mark as checked\" (which adds an order note), a Check badge and filter in the order list, and an optional email.<\/li>\n<li><strong>Poly mailers:<\/strong> add bags next to your cartons. Clothing and other soft goods go in the mailer when they fit, and the parcel is sent as the size of its contents. Fragile and keep-upright products always go in a box.<\/li>\n<li>Packing rules per product: fragile (extra padding), keep upright, ship alone, ships in its own packaging, never in a mailer, nesting items (cups, bowls), allowed boxes. The AI can suggest them with each estimate.<\/li>\n<li>Packing test: pick products and quantities to see how they would be packed.<\/li>\n<li>Padding for bubble wrap, fallback size for products without dimensions, fast volume estimate for very large orders.<\/li>\n<li>Works in your store units (cm, mm, m, in, yd; kg, g, lbs, oz). Compatible with HPOS and the block checkout.<\/li>\n<li>Packing works without AI. Connect an AI provider only if you want the estimates.<\/li>\n<\/ul>\n\n<p>Stop guessing parcel sizes. Fill in your catalog and ship every order in the right box.<\/p>\n\n<p><strong>Pro add-on<\/strong><\/p>\n\n<p>The free plugin estimates one product at a time. <a href=\"https:\/\/boxintellect.pro\/#pricing\">BoxIntellect Pro<\/a> puts AI catalog data, box packing and per-parcel shipping rates in one plugin:<\/p>\n\n<ul>\n<li><strong>Bulk AI estimates<\/strong> for your whole catalog, held for your review before anything is saved<\/li>\n<li><strong>AI that learns from your corrections:<\/strong> shows how accurate the estimates were per category, and tells new estimates how you corrected similar products<\/li>\n<li><strong>Automatic estimates<\/strong> for new products<\/li>\n<li><strong>Shipping method<\/strong> with per-parcel rates and dimensional weight<\/li>\n<li><strong>Shipping report:<\/strong> what your parcels cost to ship compared with what customers paid, and which orders lost money on shipping<\/li>\n<li><strong>Box advisor:<\/strong> finds the box sizes that fit your real orders best, and AI explains why<\/li>\n<li><strong>Data quality check:<\/strong> flags suspicious dimensions and weights, such as a 40 kg T-shirt<\/li>\n<li><strong>Packing slips with a 3D diagram<\/strong>, your logo, a scannable order barcode and a combined pick list, to print or download as PDF, so your packers know what goes where<\/li>\n<li><strong>AI usage and spending caps:<\/strong> what your estimates cost, a monthly cap, a daily limit for automatic estimates, and the cost of a bulk run before you start it<\/li>\n<li><strong>REST API and WP-CLI<\/strong><\/li>\n<\/ul>\n\n<p>Staging and local sites are free.<\/p>\n\n<h3>External services<\/h3>\n\n<p>The packing calculation runs on your server and sends nothing anywhere.<\/p>\n\n<p>AI estimates use the WordPress AI Client (built into WordPress 7.0+), which sends requests to the AI provider the site owner connected in <code>Settings \u2192 Connectors<\/code>. Nothing is sent until a provider is connected and you click \"Estimate with AI\" (or a Pro automation you turn on runs).<\/p>\n\n<p>For each estimate the product name, SKU, GTIN, categories, attributes, short description and description (shortened), any dimensions already entered, and, unless turned off in the settings, a resized copy of the product image are sent to the connected provider, for example:<\/p>\n\n<ul>\n<li><strong>OpenAI<\/strong> (api.openai.com): <a href=\"https:\/\/openai.com\/policies\/terms-of-use\">Terms of use<\/a>, <a href=\"https:\/\/openai.com\/policies\/privacy-policy\">Privacy policy<\/a><\/li>\n<li><strong>Anthropic<\/strong> (api.anthropic.com): <a href=\"https:\/\/www.anthropic.com\/legal\/commercial-terms\">Commercial terms<\/a>, <a href=\"https:\/\/www.anthropic.com\/legal\/privacy\">Privacy policy<\/a><\/li>\n<li><strong>Google Gemini<\/strong> (generativelanguage.googleapis.com): <a href=\"https:\/\/ai.google.dev\/gemini-api\/terms\">Gemini API terms<\/a>, <a href=\"https:\/\/policies.google.com\/privacy\">Privacy policy<\/a><\/li>\n<\/ul>\n\n<p>No customer or order data is ever sent to an AI provider.<\/p>\n\n<p><strong>BoxIntellect news (optional, off by default).<\/strong> If an administrator turns on \"News and tips\" in WooCommerce \u2192 BoxIntellect \u2192 Settings, the plugin downloads a short list of messages from <code>https:\/\/boxintellect.pro\/wp-json\/amazimg\/v1\/notices<\/code> at most about twice a day, when the BoxIntellect overview is opened. The request sends only the plugin's name and version; like any web request, it also reveals the site's IP address to the server. Nothing is requested while the option is off. <a href=\"https:\/\/boxintellect.pro\/terms\/\">Terms of service<\/a>, <a href=\"https:\/\/boxintellect.pro\/privacy-policy\/\">Privacy policy<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce, then this plugin.<\/li>\n<li>The setup guide opens: it walks you through your boxes, your product sizes, how you pack, and a first packing test. You can close it and open it again any time from <strong>WooCommerce \u2192 BoxIntellect \u2192 Settings<\/strong>.<\/li>\n<li>For AI estimates (WordPress 7.0+): go to <strong>Settings \u2192 Connectors<\/strong>, install a provider plugin (OpenAI, Anthropic or Google) and add its API key.<\/li>\n<li>Open <strong>WooCommerce \u2192 BoxIntellect<\/strong> to see which products are missing dimensions and estimate them.<\/li>\n<\/ol>\n\n<h4>Developers<\/h4>\n\n<p>BoxIntellect can be extended with PHP hooks and a small PHP API. Shipping methods and carrier plugins can read the parcels of every cart and order. The Pro add-on also adds a per-parcel shipping method, a REST API and WP-CLI commands.<\/p>\n\n<p>All lengths are in <strong>centimetres<\/strong> and all weights in <strong>kilograms<\/strong>, whatever units the store uses. Convert with <code>BoxIntellect_Units::from_cm()<\/code> \/ <code>from_kg()<\/code> (to store units) and <code>to_cm()<\/code> \/ <code>to_kg()<\/code> (from store units).<\/p>\n\n<h4>Parcels in the cart<\/h4>\n\n<p>Every WooCommerce shipping package gets two extra keys before shipping rates are calculated, so any shipping method can use them in <code>calculate_shipping( $package )<\/code>:<\/p>\n\n<ul>\n<li><code>$package['boxintellect_parcels']<\/code>: the list of parcels (see \"Parcel\" below).<\/li>\n<li><code>$package['boxintellect_totals']<\/code>: <code>count<\/code> (parcels), <code>weight<\/code> (kg, boxes included) and <code>volume<\/code> (cm\u00b3, outer size).<\/li>\n<\/ul>\n\n<p>If packing fails for any reason, the keys are left out and the cart keeps working. Call <code>BoxIntellect_Cart::for_package( $package )<\/code> to pack a package yourself (cached for the request).<\/p>\n\n<h4>Parcels of an order<\/h4>\n\n<p>When \"Calculate the parcels of every new order\" is on (the default), the packing result of each new order is stored in the order meta <code>_boxintellect_parcels<\/code> (HPOS compatible). Read it with <code>BoxIntellect_Order::get( $order )<\/code>, which returns the packing result or null. <code>BoxIntellect_Order::calculate( $order )<\/code> recalculates and stores it, like the Recalculate button on the order screen.<\/p>\n\n<h4>Packing result<\/h4>\n\n<pre><code>BoxIntellect_Items::pack(), the order meta and the REST API return the same array:\n<\/code><\/pre>\n\n<ul>\n<li><code>parcels<\/code>: list of parcels.<\/li>\n<li><code>totals<\/code>: <code>count<\/code>, <code>weight<\/code> (kg) and <code>volume<\/code> (cm\u00b3).<\/li>\n<li><code>approximate<\/code>: true when the order had more items than the \"Large orders\" setting and was packed by volume instead of item by item.<\/li>\n<li><code>timed_out<\/code>: true when packing item by item reached its work limit (filter <code>boxintellect_packing_work_limit<\/code>) or, on a very slow server, its time limit (filter <code>boxintellect_packing_time_limit<\/code>), and the boxes were filled by volume instead. <code>approximate<\/code> is true as well. Work is counted in steps of the algorithm, not time, so the same cart always gets the same result.<\/li>\n<li><code>work<\/code>: steps of the algorithm the packing took.<\/li>\n<li><code>notes<\/code>: product names by data source: <code>missing<\/code> (no dimensions), <code>estimate<\/code> (unsaved AI estimate used), <code>default<\/code> (fallback size used), <code>no_weight<\/code>.<\/li>\n<li><code>time<\/code>: Unix timestamp of the calculation.<\/li>\n<li><code>review<\/code> (orders only): why the order should be checked before shipping, from the \"Check before shipping\" settings: <code>value<\/code> (order total), <code>fragile<\/code> and <code>data<\/code> (product names), <code>oversize<\/code> (number of parcels that fit no box), <code>approximate<\/code> (packing took too long, see <code>timed_out<\/code>). Empty when there is nothing to check. Order meta <code>_boxintellect_needs_check<\/code> is <code>yes<\/code> while the order waits for a check; <code>_boxintellect_checked<\/code> holds who checked it and when.<\/li>\n<\/ul>\n\n<h4>Parcel<\/h4>\n\n<ul>\n<li><code>type<\/code>: <code>box<\/code> (packed in one of your boxes or mailers), <code>own<\/code> (ships in its own packaging) or <code>oversize<\/code> (fits no box and ships as it is).<\/li>\n<li><code>mailer<\/code>: true when the box is a poly mailer. Its <code>length<\/code>, <code>width<\/code> and <code>height<\/code> are then the size of the contents, and <code>inner<\/code> is the room the bag had at that thickness.<\/li>\n<li><code>box_id<\/code>, <code>box_name<\/code>: the box used (empty unless <code>type<\/code> is <code>box<\/code>).<\/li>\n<li><code>length<\/code>, <code>width<\/code>, <code>height<\/code>: outer size in cm, the size the carrier measures.<\/li>\n<li><code>inner<\/code>: inner length, width and height in cm.<\/li>\n<li><code>weight<\/code>: gross weight in kg (items plus the empty box). <code>items_weight<\/code>: items only.<\/li>\n<li><code>fill<\/code>: share of the box volume used, from 0 to 1.<\/li>\n<li><code>items<\/code>: list of <code>product_id<\/code>, <code>name<\/code> and <code>qty<\/code>.<\/li>\n<li><code>placements<\/code>: position of each unit in the box (<code>x<\/code>, <code>y<\/code>, <code>z<\/code>, <code>l<\/code>, <code>w<\/code>, <code>h<\/code> in cm), used for the 3D diagrams. Empty for approximate parcels.<\/li>\n<li><code>approximate<\/code>: true for parcels packed by volume.<\/li>\n<\/ul>\n\n<h4>Parcels in the WooCommerce REST API<\/h4>\n\n<p>The WooCommerce REST API order response (<code>\/wp-json\/wc\/v3\/orders<\/code> and <code>\/wp-json\/wc\/v3\/orders\/{id}<\/code>) has a read-only <code>boxintellect_parcels<\/code> field with the stored packing result (see \"Packing result\" above), or null when the order has none. Nothing is calculated on a GET.<\/p>\n\n<h4>ShipStation<\/h4>\n\n<p>With the ShipStation for WooCommerce plugin active, BoxIntellect adds to the orders ShipStation imports:<\/p>\n\n<ul>\n<li>Orders without parcels are packed first.<\/li>\n<li>XML export: when an order ships in one parcel, its <code>Dimensions<\/code> are the outer size of the parcel (in inches, as the ShipStation plugin sends them). ShipStation takes one package per order, so orders with several parcels keep what the ShipStation plugin sent. ShipStation adds up the item weights itself, so the weight of the empty box isn't included.<\/li>\n<li>Custom field 3 (XML and REST exports) gets a parcel summary, such as <code>2 parcels: Medium box 31 \u00d7 26 \u00d7 21 cm, 1.4 kg (1 \u00d7 Mug); \u2026<\/code>. Choose field 2 or turn it off with the <code>boxintellect_shipstation_custom_field<\/code> filter. A field another plugin already uses is never taken.<\/li>\n<\/ul>\n\n<h4>Parcel CSV export<\/h4>\n\n<p>The bulk action \"Export parcels (CSV)\" in the order list downloads one row per parcel (up to 500 orders), with these columns: <code>order_number<\/code>, <code>order_id<\/code>, <code>parcel<\/code>, <code>parcels<\/code>, <code>name<\/code>, <code>company<\/code>, <code>address_1<\/code>, <code>address_2<\/code>, <code>city<\/code>, <code>state<\/code>, <code>postcode<\/code>, <code>country<\/code>, <code>phone<\/code>, <code>email<\/code>, <code>shipping_method<\/code>, <code>box<\/code>, <code>length<\/code>, <code>width<\/code>, <code>height<\/code>, <code>dimension_unit<\/code>, <code>weight<\/code>, <code>weight_unit<\/code>, <code>contents<\/code>. Sizes and weights are in the store's units with a point as the decimal mark. Orders without parcels are packed first. Change the rows with the <code>boxintellect_csv_rows<\/code> filter.<\/p>\n\n<h4>Box<\/h4>\n\n<pre><code>BoxIntellect_Boxes::all() returns every box and `BoxIntellect_Boxes::enabled()` the boxes used for packing. Each box has `id`, `name`, `enabled`, `inner_length`, `inner_width`, `inner_height`, `outer_length`, `outer_width`, `outer_height`, `empty_weight`, `max_weight` (maximum content weight in kg, 0 for no limit) and `type` (`box` or `mailer`). For a mailer, the inner length and width are the lay-flat size and the inner height is the thickest it can be filled. `BoxIntellect_Boxes::make( $name, $length, $width, $height, $empty_weight, $max_weight, $type )` builds a box from its inner size, with outer sizes 1 cm larger (the same size for mailers).\n<\/code><\/pre>\n\n<h4>Packer item<\/h4>\n\n<pre><code>BoxIntellect_Items::from_product( $product, $qty ) turns a product into a packer item. Variations use their parent's values when they have none of their own.\n<\/code><\/pre>\n\n<ul>\n<li><code>product_id<\/code>, <code>name<\/code>, <code>qty<\/code>.<\/li>\n<li><code>length<\/code>, <code>width<\/code>, <code>height<\/code> (cm) and <code>weight<\/code> (kg).<\/li>\n<li><code>source<\/code>: where the dimensions came from: <code>product<\/code>, <code>ai<\/code> (saved from an AI estimate), <code>estimate<\/code> (unsaved estimate), <code>default<\/code> (fallback size) or <code>missing<\/code>. <code>weight_source<\/code>: <code>product<\/code>, <code>estimate<\/code>, <code>default<\/code> or <code>missing<\/code>.<\/li>\n<li><code>padding<\/code>: added once to each of length, width and height (cm, both sides together), from the Padding setting plus the fragile padding for fragile products.<\/li>\n<li><p>Packing rules: <code>upright<\/code>, <code>separate<\/code> (ship alone), <code>own_packaging<\/code>, <code>no_mailer<\/code> (never in a mailer; also true for fragile and keep-upright products), <code>nest<\/code> (height in cm that each extra unit adds to a stack) and <code>boxes<\/code> (allowed box ids, empty for any box).<\/p>\n\n<p>BoxIntellect_Items::from_order( $order ) and <code>BoxIntellect_Items::from_package( $package )<\/code> return the items of an order (refunds removed, virtual products skipped) or a cart package.<\/p><\/li>\n<\/ul>\n\n<h4>Products<\/h4>\n\n<ul>\n<li><code>BoxIntellect_Items::product_dimensions( $product )<\/code>: the size and weight used for packing, with their sources.<\/li>\n<li><code>BoxIntellect_Rules::get( $product )<\/code>: the product's packing rules: <code>fragile<\/code>, <code>upright<\/code>, <code>separate<\/code>, <code>own_packaging<\/code>, <code>no_mailer<\/code>, <code>nest<\/code> and <code>boxes<\/code>.<\/li>\n<li><code>BoxIntellect_Estimator::estimate( $product )<\/code>: asks the connected AI provider for an estimate and stores it. Returns the estimate or a <code>WP_Error<\/code>.<\/li>\n<li><code>BoxIntellect_Estimator::stored( $product )<\/code>: the stored estimate, or null.<\/li>\n<li><code>BoxIntellect_Estimator::apply( $product, $estimate, $only_empty = false )<\/code>: saves an estimate as the product's dimensions and weight.<\/li>\n<\/ul>\n\n<p>An estimate has <code>length<\/code>, <code>width<\/code>, <code>height<\/code> (cm), <code>weight<\/code> (kg), <code>confidence<\/code> (<code>high<\/code>, <code>medium<\/code> or <code>low<\/code>), <code>fragile<\/code>, <code>upright<\/code>, <code>own_packaging<\/code> and <code>notes<\/code>. Stored estimates also have <code>model<\/code>, <code>time<\/code> and <code>status<\/code> (<code>pending<\/code>, <code>applied<\/code> or <code>rejected<\/code>).<\/p>\n\n<p>Product meta: <code>_boxintellect_estimate<\/code> (the stored estimate), <code>_boxintellect_dims_source<\/code> (<code>ai<\/code> when the saved dimensions came from an AI estimate), and the packing rules <code>_boxintellect_fragile<\/code>, <code>_boxintellect_upright<\/code>, <code>_boxintellect_separate<\/code>, <code>_boxintellect_own_packaging<\/code>, <code>_boxintellect_no_mailer<\/code> (<code>yes<\/code> or <code>no<\/code>), <code>_boxintellect_nest<\/code> (cm) and <code>_boxintellect_boxes<\/code> (box ids). Prefer the methods above to reading the meta directly.<\/p>\n\n<h4>Filters<\/h4>\n\n<ul>\n<li><code>boxintellect_item<\/code> ( $item, $product, $qty ): change a packer item, for example its size, padding or packing rules.<\/li>\n<li><code>boxintellect_boxes<\/code> ( $boxes ): change the boxes used for packing.<\/li>\n<li><code>boxintellect_packing_result<\/code> ( $result, $items ): change a packing result before it is used or stored.<\/li>\n<li><code>boxintellect_packing_work_limit<\/code> ( $work ): how much work the exact packing of one cart or order may do before boxes are filled by volume (default 40 million steps: about 1 second on a fast server, 2 on a slow one; 0 for no limit).<\/li>\n<li><code>boxintellect_packing_time_limit<\/code> ( $seconds ): safety net above the work limit for very slow servers, counted from when the cart's items are read (default 3, 0 for no limit).<\/li>\n<li><code>boxintellect_estimate_prompt<\/code> ( $prompt, $product ): change the prompt sent to the AI.<\/li>\n<li><code>boxintellect_ai_prompt_builder<\/code> ( $builder, $product, $prompt ): adjust the WordPress AI Client request before it is sent.<\/li>\n<li><code>boxintellect_max_tokens<\/code> ( $max_tokens ): change the output limit (default 1024). Reasoning models count their thinking too.<\/li>\n<li><code>boxintellect_pre_estimate<\/code> ( $error, $product, $args ): return a <code>WP_Error<\/code> to stop an AI estimate before it is sent (<code>$args['source']<\/code> is <code>manual<\/code>, <code>bulk<\/code>, <code>auto<\/code>, <code>cli<\/code> or <code>rest<\/code>). The Pro add-on uses it for spending caps.<\/li>\n<li><code>boxintellect_admin_tabs<\/code> ( $tabs ): add tabs to WooCommerce \u2192 BoxIntellect (<code>id =&gt; array( label, capability )<\/code>). Render a tab with the <code>boxintellect_admin_tab_{id}<\/code> action.<\/li>\n<li><code>boxintellect_test_result_html<\/code> ( $html, $result, $items ): change the output of the Packing test tab.<\/li>\n<li><code>boxintellect_csv_rows<\/code> ( $rows, $order, $result ): change the parcel CSV rows of an order (one per parcel, in the column order above).<\/li>\n<li><code>boxintellect_shipstation_custom_field<\/code> ( $field ): ShipStation custom field for the parcel summary: 3 (default), 2, or 0 for none.<\/li>\n<li><code>boxintellect_order_review<\/code> ( $reasons, $order, $items, $result ): why an order should be checked before shipping. Return an empty array for no check.<\/li>\n<\/ul>\n\n<h4>Actions<\/h4>\n\n<ul>\n<li><code>boxintellect_loaded<\/code>: the plugin is loaded (WooCommerce is active).<\/li>\n<li><code>boxintellect_order_packed<\/code> ( $result, $order ): the parcels of an order were calculated and stored.<\/li>\n<li><code>boxintellect_order_flagged<\/code> ( $reasons, $order ): an order started needing a check before shipping.<\/li>\n<li><code>boxintellect_order_checked<\/code> ( $order ): someone marked an order as checked.<\/li>\n<li><code>boxintellect_boxes_saved<\/code> ( $boxes ): the boxes were changed.<\/li>\n<li><code>boxintellect_estimated<\/code> ( $estimate, $product ): an AI estimate was made and stored.<\/li>\n<li><code>boxintellect_estimate_applied<\/code> ( $product, $estimate ): an estimate was saved as the product's dimensions.<\/li>\n<li><code>boxintellect_usage<\/code> ( $provider, $model, $input_tokens, $output_tokens ): reports the AI usage of each request.<\/li>\n<li><code>boxintellect_overview_after_stats<\/code> ( $counts ): output below the statistics on the BoxIntellect overview.<\/li>\n<li><code>boxintellect_overview_after_table<\/code>: output at the bottom of the BoxIntellect overview.<\/li>\n<li><code>boxintellect_order_box_actions<\/code> ( $order ): output next to the Recalculate button in the order's Parcels box.<\/li>\n<\/ul>\n\n<h4>Error codes<\/h4>\n\n<pre><code>BoxIntellect_Estimator::estimate() returns a `WP_Error` with one of these codes:\n<\/code><\/pre>\n\n<ul>\n<li><code>boxintellect_no_ai<\/code>: no AI provider is connected in Settings \u2192 Connectors.<\/li>\n<li><code>boxintellect_http_429<\/code>: the AI provider is rate-limiting requests. Retry later.<\/li>\n<li><code>boxintellect_http_5xx<\/code> (for example <code>boxintellect_http_503<\/code>): the AI provider is temporarily unavailable. Retry later.<\/li>\n<li><code>boxintellect_http_error<\/code>: network error reaching the AI provider. Retry later.<\/li>\n<li><code>boxintellect_ai_error<\/code>: any other AI request failure, for example an invalid API key. Don't retry.<\/li>\n<li><code>boxintellect_parse<\/code>: the AI reply could not be read or had no usable dimensions.<\/li>\n<\/ul>\n\n<h4>Examples<\/h4>\n\n<p>Charge for each parcel in your own shipping method:<\/p>\n\n<pre><code>public function calculate_shipping( $package = array() ) {\n    $parcels = isset( $package['boxintellect_parcels'] ) ? $package['boxintellect_parcels'] : array();\n    $cost    = 0;\n    foreach ( $parcels as $parcel ) {\n        \/\/ Dimensional weight with a divisor of 5000 (cm\u00b3 per kg).\n        $chargeable = max( $parcel['weight'], $parcel['length'] * $parcel['width'] * $parcel['height'] \/ 5000 );\n        $cost      += 4.5 + 0.8 * $chargeable;\n    }\n    $this-&gt;add_rate( array( 'label' =&gt; $this-&gt;title, 'cost' =&gt; $cost ) );\n}\n<\/code><\/pre>\n\n<p>Ship every product of the \"Furniture\" category alone:<\/p>\n\n<pre><code>add_filter( 'boxintellect_item', function ( $item, $product ) {\n    $id = $product-&gt;get_parent_id() ? $product-&gt;get_parent_id() : $product-&gt;get_id();\n    if ( has_term( 'furniture', 'product_cat', $id ) ) {\n        $item['separate'] = true;\n    }\n    return $item;\n}, 10, 2 );\n<\/code><\/pre>\n\n<p>Use a large box only in December:<\/p>\n\n<pre><code>add_filter( 'boxintellect_boxes', function ( $boxes ) {\n    if ( '12' === gmdate( 'm' ) ) {\n        $boxes[] = BoxIntellect_Boxes::make( 'Holiday box', 60, 40, 40, 0.9, 25 );\n    }\n    return $boxes;\n} );\n<\/code><\/pre>\n\n<p>Send the parcels of each new order to a warehouse system:<\/p>\n\n<pre><code>add_action( 'boxintellect_order_packed', function ( $result, $order ) {\n    foreach ( $result['parcels'] as $parcel ) {\n        my_warehouse_add_parcel( $order-&gt;get_id(), $parcel['box_name'], $parcel['length'], $parcel['width'], $parcel['height'], $parcel['weight'] );\n    }\n}, 10, 2 );\n<\/code><\/pre>\n\n<p>Pack products without a cart, for example for a quote:<\/p>\n\n<pre><code>$items = array(\n    BoxIntellect_Items::from_product( wc_get_product( 12 ), 3 ),\n    BoxIntellect_Items::from_product( wc_get_product( 34 ), 1 ),\n);\n$result = BoxIntellect_Items::pack( $items );\nprintf( '%d parcels, %.2f kg', $result['totals']['count'], $result['totals']['weight'] );\n<\/code><\/pre>\n\n<h4>Shipping method (Pro)<\/h4>\n\n<p>The Pro add-on adds the shipping method \"BoxIntellect per-parcel rates\" (method id <code>boxintellect_rates<\/code>). It charges a cost per order, a cost per parcel and a cost per weight unit of chargeable weight (the higher of the actual and dimensional weight of each parcel). Each rate carries the meta data \"Parcels\" and \"Chargeable weight\". <code>BXIP_Shipping_Method::chargeable_weight( $parcel, $divisor )<\/code> returns the chargeable weight of a parcel in kg.<\/p>\n\n<h4>REST API (Pro)<\/h4>\n\n<p>The Pro add-on adds routes under <code>\/wp-json\/boxintellect\/v1<\/code>. To call them from outside WordPress, sign in with an application password (Users \u2192 Profile \u2192 Application Passwords) using HTTP Basic auth. Lengths are in cm and weights in kg.<\/p>\n\n<ul>\n<li><code>GET \/orders\/{id}\/parcels<\/code>: the stored packing result of an order, calculated first if there is none. Needs the <code>edit_shop_orders<\/code> capability.<\/li>\n<li><code>POST \/orders\/{id}\/parcels<\/code>: recalculates and stores the parcels of an order. Needs <code>edit_shop_orders<\/code>.<\/li>\n<li><code>POST \/pack<\/code>: packs products without an order, for example for quotes. Body: <code>{\"items\":[{\"product_id\":12,\"qty\":3},{\"product_id\":34,\"qty\":1}]}<\/code>. Products that don't need shipping are skipped; returns 400 when none are left. Needs <code>manage_woocommerce<\/code>.<\/li>\n<li><code>POST \/products\/{id}\/estimate<\/code>: asks the AI for an estimate of one product. Add <code>save=true<\/code> to save it as the product's dimensions. Returns 429 when the provider is rate-limiting, 503 when no provider is connected and 502 for other AI errors. Needs permission to edit the product.<\/li>\n<li><p><code>GET \/boxes<\/code>: all boxes. Needs <code>manage_woocommerce<\/code>.<\/p>\n\n<p>curl -u 'admin:xxxx xxxx xxxx xxxx' -X POST \\\n  -H 'Content-Type: application\/json' \\\n  -d '{\"items\":[{\"product_id\":12,\"qty\":3}]}' \\\n  'https:\/\/example.com\/wp-json\/boxintellect\/v1\/pack'<\/p><\/li>\n<\/ul>\n\n<h4>WP-CLI (Pro)<\/h4>\n\n<pre><code>wp boxintellect pack 1234 1235\nwp boxintellect pack 1234 --format=json\nwp boxintellect estimate 42 43\nwp boxintellect estimate --missing --limit=500 --save\nwp boxintellect quality --format=csv\nwp boxintellect advise --boxes=4 --days=90 --add\n<\/code><\/pre>\n\n<ul>\n<li><code>pack<\/code>: calculates and stores the parcels of orders.<\/li>\n<li><code>estimate<\/code>: estimates products with AI. Without <code>--save<\/code> the estimates wait on the Review tab; with <code>--save<\/code> they fill empty fields only.<\/li>\n<li><code>quality<\/code>: lists products whose dimensions or weight look wrong.<\/li>\n<li><code>advise<\/code>: finds the box sizes that fit your recent orders best; <code>--add<\/code> adds them to your boxes.<\/li>\n<\/ul>\n\n<p>Run <code>wp help boxintellect<\/code> for the full reference.<\/p>\n\n<h4>Pro hooks<\/h4>\n\n<ul>\n<li><code>bxip_advisor_catalog<\/code> ( $boxes ): change the standard carton sizes the box advisor chooses from (cm \/ kg).<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20ai%20decide%20how%20orders%20are%20packed%3F\"><h3>Does the AI decide how orders are packed?<\/h3><\/dt>\n<dd><p>No. Packing is a geometry problem, and a packing algorithm solves it exactly and consistently. The AI is only used to estimate the size and weight of products that don't have them, and you review those values.<\/p><\/dd>\n<dt id=\"how%20accurate%20are%20the%20ai%20estimates%3F\"><h3>How accurate are the AI estimates?<\/h3><\/dt>\n<dd><p>Good enough to replace \"no dimensions at all\", especially when the description or photo shows the product clearly. Each estimate comes with a confidence level and a short note. For products you ship often, measure them once and enter the real values.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20ai%20provider%3F\"><h3>Do I need an AI provider?<\/h3><\/dt>\n<dd><p>No. Packing, the parcels of every order, ShipStation and the CSV export all work without AI, and you can enter product dimensions by hand. You only need a provider for \"Estimate with AI\".<\/p><\/dd>\n<dt id=\"which%20wordpress%20version%20do%20i%20need%3F\"><h3>Which WordPress version do I need?<\/h3><\/dt>\n<dd><p>WordPress 6.2 or newer and WooCommerce 8.0 or newer for packing. AI estimates use the WordPress AI Client, which is built into WordPress 7.0, so they need 7.0 or newer. Everything else works the same on older versions.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20high-performance%20order%20storage%20%28hpos%29%3F\"><h3>Does it work with High-Performance Order Storage (HPOS)?<\/h3><\/dt>\n<dd><p>Yes. BoxIntellect declares HPOS compatibility and works with orders stored in either the new order tables or the classic posts table, with or without compatibility mode (sync) turned on. Parcels are saved through the WooCommerce order API, and the Parcels column, order box and bulk actions appear on both order screens.<\/p><\/dd>\n<dt id=\"where%20do%20i%20enter%20my%20api%20key%3F\"><h3>Where do I enter my API key?<\/h3><\/dt>\n<dd><p>In <strong>Settings \u2192 Connectors<\/strong> (WordPress 7.0+). The plugin never stores API keys.<\/p><\/dd>\n<dt id=\"can%20my%20shipping%20plugin%20use%20the%20parcels%3F\"><h3>Can my shipping plugin use the parcels?<\/h3><\/dt>\n<dd><p>Each cart shipping package gets <code>boxintellect_parcels<\/code> (a list of parcels with <code>length<\/code>, <code>width<\/code>, <code>height<\/code> in cm, <code>weight<\/code> in kg, the box and the items) and <code>boxintellect_totals<\/code>. Parcels of an order are stored in the <code>_boxintellect_parcels<\/code> order meta and included in the WooCommerce REST API order response. BoxIntellect Pro includes a shipping method that charges per parcel.<\/p>\n\n<p>Most shipping and label plugins don't read these by themselves. They usually add up product weights or use their own box list.<\/p><\/dd>\n<dt id=\"can%20i%20print%20shipping%20labels%20with%20the%20right%20parcel%20sizes%3F\"><h3>Can I print shipping labels with the right parcel sizes?<\/h3><\/dt>\n<dd><p>BoxIntellect doesn't print labels, but it gives your label tool the parcels:<\/p>\n\n<ul>\n<li><strong>ShipStation<\/strong> (with the ShipStation for WooCommerce plugin): orders that ship in one parcel arrive with the outer size of their box, and every order shows a parcel summary in custom field 3.<\/li>\n<li><strong>Other label tools:<\/strong> select orders in the order list, choose \"Export parcels (CSV)\" and import the file into any tool that lets you map CSV columns. Each parcel is one row, with the address, outer size and weight.<\/li>\n<\/ul><\/dd>\n<dt id=\"what%20happens%20with%20very%20large%20orders%3F\"><h3>What happens with very large orders?<\/h3><\/dt>\n<dd><p>Above 120 items (adjustable) boxes are filled by volume instead of item by item, so checkout stays fast.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>New: a setup guide opens after the first activation and walks you through your boxes, product sizes, padding and a first packing test, then shows where the parcels appear. Shops that already use BoxIntellect find it in the new \"Get started\" tab.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>The same cart always gets the same parcels and shipping rate: the limit for packing item by item counts the packer's work instead of time, so a busy server no longer changes the result. Very slow servers still stop at 3 seconds.<\/li>\n<li>The same products added to the cart in a different order share one result and one cache entry.<\/li>\n<li>New: filter <code>boxintellect_packing_work_limit<\/code>. The time limit (<code>boxintellect_packing_time_limit<\/code>) is now 3 seconds and includes reading the cart.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Checkout never waits long for packing: when packing item by item takes more than 1.5 seconds, boxes are filled by volume instead. The order shows that the parcels and shipping rate are approximate, and \"Check before shipping\" flags it.<\/li>\n<li>Packing results of large carts are cached, so recalculating the cart doesn't pack them again.<\/li>\n<li>New: filter <code>boxintellect_packing_time_limit<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Clearer padding settings: padding is added to the length, width and height in total (both sides together), with an example for cushioning fragile items.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>New: \"Check before shipping\" (Settings). Flag high-value orders, orders with fragile items and orders packed with estimated or missing data. Flagged orders show a notice in the Parcels box with \"Mark as checked\", a Check badge and filter in the order list, and can send an email.<\/li>\n<li>New: hooks <code>boxintellect_order_review<\/code>, <code>boxintellect_order_flagged<\/code> and <code>boxintellect_order_checked<\/code>.<\/li>\n<\/ul>\n\n<p>https:\/\/www.youtube.com\/watch?v=ZAXwjg0CQFs<\/p>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Missing product dimensions? BoxIntellect fills them in with AI, then packs every order into your real boxes for accurate shipping rates.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387046","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=387046"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/m1sh0u"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=387046"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387046"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387046"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387046"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387046"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}