{"id":8089,"date":"2026-10-15T06:41:33","date_gmt":"2026-10-15T04:41:33","guid":{"rendered":"https:\/\/implementi.ai\/en\/?post_type=product&#038;p=8089"},"modified":"2026-10-15T06:41:56","modified_gmt":"2026-10-15T04:41:56","slug":"ai-out-of-stock-substitute-recommender","status":"publish","type":"product","link":"https:\/\/implementi.ai\/pl\/product\/ai-out-of-stock-substitute-recommender\/","title":{"rendered":"AI Out\u2011of\u2011Stock Substitute Recommender &#038; Customer Notifier"},"content":{"rendered":"<style>\n:root{--imp-primary-blue:#C0D9F7;--imp-soft-blue:#DAE9FA;--imp-white:#F9F9F9;--imp-red:#FF554C;--imp-navy:#183457}\n.implementi-pf,.implementi-pf *{box-sizing:border-box}\n.implementi-pf{width:min(1180px,100%);max-width:100%;margin:0 auto;color:var(--imp-navy);font-family:\"Noto Sans\",Arial,sans-serif}\n.implementi-pf h2,.implementi-pf h3,.implementi-pf h4,.implementi-pf .button,.implementi-pf .tab-title,.woocommerce-tabs ul.tabs li a{font-family:\"Poppins\",Arial,sans-serif}\n.implementi-pf h2{margin:0 0 18px;color:var(--imp-navy);font-size:clamp(25px,3vw,36px);line-height:1.18}\n.implementi-pf h3{margin:24px 0 10px;color:var(--imp-navy);font-size:clamp(19px,2vw,24px);line-height:1.25}\n.implementi-pf p,.implementi-pf li{font-family:\"Noto Sans\",Arial,sans-serif;color:var(--imp-navy);font-size:16px;line-height:1.78}\n.implementi-pf p:last-child{margin-bottom:0}\n.implementi-pf ul,.implementi-pf ol{padding-left:24px;margin:16px 0}\n.implementi-pf li{margin:10px 0}\n.imp-kicker{font-family:\"Poppins\",Arial,sans-serif;font-size:13px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--imp-red);margin-bottom:14px}\n.imp-card{margin:24px 0;padding:clamp(24px,4vw,44px);border-radius:28px;background:var(--imp-white);border:1px solid rgba(24,52,87,.10);overflow:hidden}\n.imp-card-soft{background:var(--imp-soft-blue)}\n.imp-card-blue{background:var(--imp-primary-blue)}\n.imp-card-dark{background:var(--imp-navy);color:var(--imp-white)}\n.imp-card-dark h2,.imp-card-dark h3,.imp-card-dark p,.imp-card-dark li,.imp-card-dark strong{color:var(--imp-white)}\n.imp-media{margin-top:28px;padding-top:24px;border-top:1px solid rgba(24,52,87,.12)}\n.imp-media img{display:block;width:100%;max-width:100%;height:auto;margin:14px 0 0;border-radius:24px;background:var(--imp-white);border:1px solid rgba(24,52,87,.10)}\n.imp-benefits ul,.imp-scope ul,.imp-target ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;list-style:none;padding:0;margin:20px 0 0}\n.imp-benefits li,.imp-scope li,.imp-target li{min-width:0;margin:0;padding:20px;border-radius:20px;background:var(--imp-white);border:1px solid rgba(24,52,87,.10)}\n.imp-tab-source{display:none!important}<\/p>\n<p>\/* LIGHT PRODUCT HERO: native Woo price stays in its normal place *\/\n.single-product .summary p.price,.woocommerce div.product .summary p.price{position:static!important;width:auto!important;height:auto!important;overflow:visible!important;clip:auto!important;white-space:normal!important;margin:8px 0 14px!important;color:var(--imp-navy)!important;font-family:\"Poppins\",Arial,sans-serif!important;font-size:clamp(24px,2.5vw,32px)!important;font-weight:800!important;line-height:1.2!important}\n.single-product .summary p.price .imp-native-monthly-price{color:var(--imp-navy)!important;font:inherit!important}\n.single-product .summary form.cart,.woocommerce div.product .summary form.cart{display:none!important}\n.single-product .summary .product_meta{display:none!important}\n.imp-hero-compact{margin:12px 0 18px;color:var(--imp-navy);font-family:\"Noto Sans\",Arial,sans-serif}\n.imp-hero-meta{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}\n.imp-hero-chip{display:inline-flex;align-items:center;min-width:0;padding:6px 11px;border-radius:999px;background:var(--imp-white);border:1px solid rgba(24,52,87,.12);color:var(--imp-navy);font-family:\"Poppins\",Arial,sans-serif;font-size:12px;font-weight:700}\n.imp-hero-short{margin:0 0 18px;font-size:15px;line-height:1.65;color:var(--imp-navy)}\n.imp-hero-short p{margin:0 0 8px!important;font:inherit!important;color:inherit!important}\n.imp-hero-calendly{display:block;width:100%;padding:14px 18px;background:var(--imp-red)!important;color:var(--imp-white)!important;border-radius:999px;text-align:center;text-decoration:none!important;font-family:\"Poppins\",Arial,sans-serif;font-weight:800;box-sizing:border-box}\n.imp-hero-contact-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important;width:100%!important;margin-top:12px!important}\n.imp-hero-contact-grid>a{display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;min-width:0!important;min-height:44px!important;padding:10px 12px!important;border:1px solid rgba(24,52,87,.16)!important;border-radius:999px!important;background:var(--imp-white)!important;color:var(--imp-navy)!important;text-decoration:none!important;text-align:center!important;font-family:\"Poppins\",Arial,sans-serif!important;font-weight:700!important;overflow-wrap:anywhere!important}\n.imp-hero-contact-grid>a:hover{border-color:var(--imp-red)!important}<\/p>\n<p>\/* FIVE TABS \u2014 fixed horizontal navigation matching the approved layout *\/\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs,\nbody.single-product .woocommerce-tabs ul.tabs,\nbody.single-product .wc-tabs-wrapper ul.wc-tabs{\n display:flex!important;\n flex-direction:row!important;\n flex-wrap:nowrap!important;\n align-items:center!important;\n justify-content:flex-start!important;\n gap:8px!important;\n width:100%!important;\n max-width:100%!important;\n min-width:0!important;\n height:auto!important;\n min-height:56px!important;\n padding:6px!important;\n margin:0 0 24px!important;\n list-style:none!important;\n background:var(--imp-navy)!important;\n border:0!important;\n border-radius:22px!important;\n overflow-x:auto!important;\n overflow-y:hidden!important;\n overscroll-behavior-x:contain!important;\n -webkit-overflow-scrolling:touch!important;\n white-space:nowrap!important;\n box-sizing:border-box!important;\n}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs:before,\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs:after,\nbody.single-product .woocommerce-tabs ul.tabs:before,\nbody.single-product .woocommerce-tabs ul.tabs:after{display:none!important;content:none!important}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li,\nbody.single-product .woocommerce-tabs ul.tabs>li,\nbody.single-product .wc-tabs-wrapper ul.wc-tabs>li{\n float:none!important;\n display:block!important;\n position:relative!important;\n flex:0 0 auto!important;\n flex-basis:auto!important;\n flex-grow:0!important;\n flex-shrink:0!important;\n width:auto!important;\n min-width:0!important;\n max-width:none!important;\n height:auto!important;\n margin:0!important;\n padding:0!important;\n border:0!important;\n background:transparent!important;\n border-radius:18px!important;\n box-shadow:none!important;\n clear:none!important;\n box-sizing:border-box!important;\n}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li:before,\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li:after,\nbody.single-product .woocommerce-tabs ul.tabs>li:before,\nbody.single-product .woocommerce-tabs ul.tabs>li:after{display:none!important;content:none!important}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li>a,\nbody.single-product .woocommerce-tabs ul.tabs>li>a,\nbody.single-product .wc-tabs-wrapper ul.wc-tabs>li>a{\n display:flex!important;\n align-items:center!important;\n justify-content:center!important;\n width:auto!important;\n min-width:max-content!important;\n height:44px!important;\n padding:0 18px!important;\n margin:0!important;\n color:var(--imp-navy)!important;\n background:var(--imp-white)!important;\n border:1px solid rgba(24,52,87,.12)!important;\n font-family:\"Poppins\",Arial,sans-serif!important;\n font-weight:700!important;\n font-size:14px!important;\n line-height:1!important;\n text-decoration:none!important;\n white-space:nowrap!important;\n border-radius:18px!important;\n box-sizing:border-box!important;\n}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li>a:hover,\nbody.single-product .woocommerce-tabs ul.tabs>li>a:hover{\n border-color:var(--imp-red)!important;\n color:var(--imp-navy)!important;\n background:var(--imp-white)!important;\n}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li.active,\nbody.single-product .woocommerce-tabs ul.tabs>li.active{background:transparent!important}\nbody.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li.active>a,\nbody.single-product .woocommerce-tabs ul.tabs>li.active>a{\n background:var(--imp-navy)!important;\n color:var(--imp-white)!important;\n border-color:var(--imp-navy)!important;\n}\n.woocommerce div.product .woocommerce-tabs .woocommerce-Tabs-panel,.woocommerce-tabs .woocommerce-Tabs-panel{padding:0!important;margin:0!important}\n.imp-pf-tab-panel{width:min(1180px,100%);max-width:100%;margin:0 auto}\n@media(max-width:767px){\n body.single-product .woocommerce div.product .woocommerce-tabs ul.tabs,\n body.single-product .woocommerce-tabs ul.tabs,\n body.single-product .wc-tabs-wrapper ul.wc-tabs{border-radius:18px!important;gap:6px!important;padding:5px!important;min-height:52px!important;scrollbar-width:none!important}\n body.single-product .woocommerce div.product .woocommerce-tabs ul.tabs::-webkit-scrollbar,\n body.single-product .woocommerce-tabs ul.tabs::-webkit-scrollbar{display:none!important}\n body.single-product .woocommerce div.product .woocommerce-tabs ul.tabs>li>a,\n body.single-product .woocommerce-tabs ul.tabs>li>a{height:42px!important;padding:0 14px!important;font-size:13px!important;border-radius:15px!important}\n}<\/p>\n<p>\/* PRICE TAB *\/\n.imp-price-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:22px 0}\n.imp-price-card{min-width:0;padding:26px;border-radius:24px;background:var(--imp-white);border:1px solid rgba(24,52,87,.12)}\n.imp-price-label{font-family:\"Poppins\",Arial,sans-serif;font-size:13px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--imp-red);margin-bottom:9px}\n.imp-price-value{font-family:\"Poppins\",Arial,sans-serif;font-size:clamp(24px,3vw,34px);font-weight:800;color:var(--imp-navy);line-height:1.2;overflow-wrap:anywhere}\n.imp-price-explain{margin-top:18px}<\/p>\n<p>\/* FIXED FINAL CONTACT *\/\n.imp-contact{width:min(1180px,100%);max-width:100%;margin:34px auto 0;padding:clamp(26px,4vw,46px);border-radius:30px;background:var(--imp-soft-blue);border:1px solid rgba(24,52,87,.12);box-sizing:border-box;color:var(--imp-navy)}\n.imp-contact h2{font-family:\"Poppins\",Arial,sans-serif;color:var(--imp-navy);font-size:clamp(26px,3vw,38px);line-height:1.15;margin:0 0 14px}\n.imp-contact p{font-family:\"Noto Sans\",Arial,sans-serif;color:var(--imp-navy);font-size:16px;line-height:1.7;margin:0 0 12px}\n.imp-contact-main{display:block;width:100%;margin-top:24px;padding:17px 22px;background:var(--imp-red)!important;color:var(--imp-white)!important;border-radius:999px;text-align:center;text-decoration:none!important;font-family:\"Poppins\",Arial,sans-serif;font-weight:800;font-size:17px;box-sizing:border-box}\n.imp-contact-main:hover{opacity:.92;color:var(--imp-white)!important}\n.imp-contact-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:24px!important;width:100%!important;margin-top:24px!important}\n.imp-contact-grid>.imp-contact-card{display:flex!important;flex-direction:column!important;justify-content:center!important;width:100%!important;min-width:0!important;min-height:132px!important;box-sizing:border-box!important;background:var(--imp-white)!important;border:1px solid rgba(24,52,87,.12)!important;border-radius:24px!important;padding:28px!important;text-decoration:none!important}\n.imp-contact-card:hover{border-color:var(--imp-red)!important}\n.imp-contact-label{display:block;color:var(--imp-red);font-family:\"Poppins\",Arial,sans-serif;font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px}\n.imp-contact-value{display:block;color:var(--imp-navy);font-family:\"Poppins\",Arial,sans-serif;font-size:20px;font-weight:700;line-height:1.35;overflow-wrap:anywhere;min-width:0}<\/p>\n<p>@media(max-width:767px){\n .imp-card{margin:16px 0;padding:22px;border-radius:22px}\n .imp-benefits ul,.imp-scope ul,.imp-target ul{grid-template-columns:1fr;gap:12px}\n .imp-hero-contact-grid{grid-template-columns:1fr!important;gap:10px!important}\n .imp-price-grid{grid-template-columns:1fr;gap:12px}\n .imp-contact{margin-top:24px;padding:22px;border-radius:24px}\n .imp-contact-grid{grid-template-columns:1fr!important;gap:14px!important;margin-top:16px!important}\n .imp-contact-grid>.imp-contact-card{min-height:108px!important;padding:20px!important;border-radius:20px!important}\n .imp-contact-value{font-size:17px}\n .woocommerce div.product .woocommerce-tabs ul.tabs li a,.woocommerce-tabs ul.tabs li a{padding:9px 12px!important;font-size:13px!important}\n}<\/p>\n<p>\/* v4.5.4 stable contact guard: no DOM reordering *\/\n.imp-hero-contact-grid,.imp-contact-grid{box-sizing:border-box!important}\n.imp-hero-contact-grid>* ,.imp-contact-grid>*{box-sizing:border-box!important;float:none!important;clear:none!important}\n@media(max-width:767px){\n .imp-hero-contact-grid,.imp-contact-grid{grid-template-columns:1fr!important}\n .imp-contact-grid{gap:12px!important}\n .imp-contact-grid>.imp-contact-card{min-height:0!important;padding:20px!important}\n}<\/p>\n<p>\/* v4.5.5 contact layout: table-based to survive WooCommerce\/wpautop *\/\n.imp-hero-contact-table,.imp-contact-table{width:100%!important;table-layout:fixed!important;border-collapse:collapse!important;border:0!important;background:transparent!important}\n.imp-hero-contact-table tbody,.imp-hero-contact-table tr,.imp-contact-table tbody,.imp-contact-table tr{border:0!important;background:transparent!important}\n.imp-hero-contact-cell,.imp-contact-cell{box-sizing:border-box!important;border:0!important;background:transparent!important}\n.imp-hero-contact-cell a,.imp-contact-cell a{box-sizing:border-box!important}\n@media(max-width:767px){\n .imp-hero-contact-table,.imp-hero-contact-table tbody,.imp-hero-contact-table tr,.imp-hero-contact-table td,.imp-contact-table,.imp-contact-table tbody,.imp-contact-table tr,.imp-contact-table td{display:block!important;width:100%!important;max-width:100%!important}\n .imp-hero-contact-cell{padding:0 0 10px!important}\n .imp-contact-cell{padding:0 0 12px!important}\n .imp-contact-table{margin-top:16px!important}\n .imp-contact-cell .imp-contact-card{min-height:0!important;padding:20px!important}\n}\n<\/style>\n<div class=\"implementi-pf\" data-product-factory=\"yes\" data-base-price=\"299\">\n<div id=\"imp-description-root\">\n<section class=\"imp-card imp-card-soft\">\n<div class=\"imp-kicker\">Managed automation by implementi.ai<\/div>\n<p>The AI Out\u2011of\u2011Stock Substitute Recommender automatically detects when a customer orders an unavailable SKU, finds relevant in\u2011stock alternatives and orchestrates customer notifications or cart updates. It operates continuously at checkout and during order processing, reducing manual triage and preventing lost sales where suitable substitutes exist.<\/p>\n<p>implementi.ai configures and runs the full solution on your behalf: we connect the agreed systems, tune the AI matching rules to your catalog and brand rules, monitor operations and handle fixes so the service runs reliably every month.<\/p>\n<\/section>\n<section class=\"imp-card\">\n<h2>The problem<\/h2>\n<p>When stock levels are checked manually or asynchronously, customers hit out\u2011of\u2011stock notices after they place orders or during fulfilment. Staff must search for alternatives, validate price and policy compatibility, and then contact the customer\u2014this creates delays, extra support work and a poor experience that increases cancellations. The problem grows with catalogue size, multiple warehouses and seasonal variability: manual lookups become a bottleneck and inconsistent substitute choices damage margins and brand trust.<\/p>\n<div class=\"imp-media\">\n<div class=\"imp-kicker\">The challenge<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/implementi.ai\/wp-content\/uploads\/2026\/10\/ai-out-of-stock-substitute-recommender-support-1.jpg\" alt=\"Illustration of a frustrated agent handling multiple out\u2011of\u2011stock tickets before automation\" \/><\/div>\n<\/section>\n<section class=\"imp-card imp-card-blue imp-scope\">\n<h2>What this solution automates<\/h2>\n<p>This managed automation continuously evaluates orders and fulfilment events, recommends or applies substitute items and manages customer communication according to your business rules. Core actions the service can perform include:<\/p>\n<ul>\n<li>Detect out\u2011of\u2011stock events at checkout or during order processing and flag affected orders.<\/li>\n<li>Generate a ranked list of substitute SKUs using attribute, price and historical purchase similarity matching.<\/li>\n<li>Apply rules for mandatory brand\/price constraints or require human approval for specific categories.<\/li>\n<li>Send templated, personalised notifications by email or SMS offering substitutes, backorder options or refunds.<\/li>\n<li>Update carts or order lines automatically when configured and approved.<\/li>\n<li>Log decisions and maintain a configurable history for later review and tuning.<\/li>\n<\/ul>\n<\/section>\n<section class=\"imp-card imp-benefits\">\n<h2>What your business gains<\/h2>\n<ul>\n<li><strong>Reduce cancellations and lost sales.<\/strong> By offering relevant, in\u2011stock alternatives at the moment a product is unavailable, you keep customers engaged and convert more orders that would otherwise be abandoned.<\/li>\n<li><strong>Lower manual support load.<\/strong> Automating the search and notification steps removes repetitive tasks from support and fulfilment teams so they can handle true exceptions faster.<\/li>\n<li><strong>Consistent substitute choices.<\/strong> AI\u2011driven recommendations follow defined attribute and pricing rules so substitutes align with brand and margin expectations.<\/li>\n<li><strong>Faster customer communications.<\/strong> Personalised messages are sent automatically with clear choices, reducing follow\u2011up time and improving the post\u2011purchase experience.<\/li>\n<li><strong>Continuous improvement.<\/strong> The managed service includes monitoring and tuning so recommendations become more relevant over time as we review logs and customer responses.<\/li>\n<\/ul>\n<div class=\"imp-media\">\n<div class=\"imp-kicker\">The result<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/implementi.ai\/wp-content\/uploads\/2026\/10\/ai-out-of-stock-substitute-recommender-support-2.jpg\" alt=\"Illustration of a calm operations dashboard showing automated substitutes and fulfilled orders after automation\" \/><\/div>\n<\/section>\n<section class=\"imp-card imp-card-soft\">\n<h2>A practical use case<\/h2>\n<p>A mid\u2011sized online retailer with several thousand SKUs receives multiple orders every minute. During a promotion a fast\u2011selling product becomes unavailable for several hours. Instead of support agents individually proposing alternatives, the automation detects the stock gap, finds equivalent items by attributes and price bands, and notifies affected customers with a quick choice to accept a substitute, select a backorder or request a refund. Orders that accept substitutes proceed without delay and fulfilment teams receive updated pick lists; any complex cases are routed for human review.<\/p>\n<\/section>\n<section class=\"imp-card imp-target\">\n<h2>Who is it for?<\/h2>\n<ul>\n<li>Online retailers with medium to large catalogues \u2014 need scalable substitute recommendations to reduce cancellations.<\/li>\n<li>Marketplaces and multi\u2011seller platforms \u2014 require consistent substitute rules across diverse vendor catalogs.<\/li>\n<li>Omnichannel merchants with centralised inventory \u2014 want automatic matching between online orders and available store\/warehouse stock.<\/li>\n<li>Operations or support teams that handle many manual order exceptions \u2014 benefit from automated notifications and fewer manual touches.<\/li>\n<\/ul>\n<\/section>\n<section class=\"imp-card imp-card-blue\">\n<h2>What is included in the monthly service<\/h2>\n<p>The monthly subscription covers the operated automation: connecting the agreed systems, running AI matching and recommendation logic, monitoring the automation&#8217;s operation, handling and fixing automation errors, and maintaining the solution with reasonable configuration updates.<\/p>\n<ul>\n<li>We host, operate and monitor the workflow.<\/li>\n<li>We connect to the agreed data sources and notification channels.<\/li>\n<li>We update matching rules and templates as part of regular maintenance.<\/li>\n<li>We investigate and fix operational failures reported by monitoring or your team.<\/li>\n<\/ul>\n<\/section>\n<section class=\"imp-card\">\n<h2>When this solution may not be necessary<\/h2>\n<ul>\n<li>Small sellers with very small, stable catalogues where manual handling remains low\u2011cost and simple.<\/li>\n<li>Businesses that never offer substitutes or that must always refund without alternatives due to regulatory or warranty constraints.<\/li>\n<\/ul>\n<\/section><\/div>\n<div id=\"imp-tab-how-source\" class=\"imp-tab-source\">\n<div class=\"imp-pf-tab-panel\">\n<section class=\"imp-card imp-card-soft\">\n<h2>How it works<\/h2>\n<ol>\n<li><strong>Event detection.<\/strong> The system listens for order and fulfilment events (checkout requests, inventory syncs or picking exceptions) and flags items that are out of stock or below threshold.<\/li>\n<li><strong>Candidate selection.<\/strong> For each flagged SKU the AI generates a ranked list of substitute candidates using product attributes, pricing rules and historical purchase similarity.<\/li>\n<li><strong>Business rule filtering.<\/strong> Candidates are filtered against your configured rules\u2014brand restrictions, price tolerance, availability window, and shipping or warehouse constraints\u2014to produce an approved shortlist.<\/li>\n<li><strong>Customer offer generation.<\/strong> The automation prepares personalised messages (email\/SMS) or cart prompts presenting the top substitutes and available options (accept substitute, backorder, refund), using your approved templates and tone of voice.<\/li>\n<li><strong>Automated action or approval flow.<\/strong> If configured, the system can update the cart\/order automatically when a customer accepts a substitute; otherwise it creates a task or approval request for human review based on your thresholds.<\/li>\n<li><strong>Fulfilment update.<\/strong> Accepted substitutes are applied to downstream fulfilment systems so pick lists, packing and shipping reflect the final order lines and inventory is adjusted accordingly.<\/li>\n<li><strong>Monitoring and tuning.<\/strong> implementi.ai monitors recommendation quality and system health, applies maintenance updates and refines matching rules based on logged outcomes and agreed adjustments.<\/li>\n<\/ol>\n<\/section>\n<section class=\"imp-card\">\n<h2>Example workflow<\/h2>\n<p>For example, imagine a company that sells home appliances and receives an online order for a blender that is no longer in stock. The automation detects the unavailable SKU when the order is placed, finds three candidate substitutes that match motor power and capacity within an acceptable price band, filters out a candidate that is sold by a different brand per policy, and sends the customer an email offering the top substitute or a backorder. The customer clicks to accept the substitute; the system automatically updates the order lines, notifies the warehouse and sends a confirmation message. If the customer declines, the order is routed to support for manual follow\u2011up.<\/p>\n<\/section><\/div>\n<\/div>\n<div id=\"imp-tab-integrations-source\" class=\"imp-tab-source\">\n<div class=\"imp-pf-tab-panel\">\n<section class=\"imp-card imp-card-soft\">\n<h2>Integrations<\/h2>\n<h3>Typical systems<\/h3>\n<p>Typical systems we integrate include e\u2011commerce platforms (Shopify, WooCommerce, Magento), inventory or PIM feeds, order management systems and notification channels (email providers, SMS gateways). Other systems that can potentially be connected include ERP or warehouse management systems and CRM platforms for richer purchase history\u2014final compatibility is confirmed during scoping.<\/p>\n<\/section>\n<section class=\"imp-card\">\n<h3>Connection methods<\/h3>\n<p>Connections are made via available APIs, webhooks for real\u2011time order and inventory events, CSV or scheduled inventory exports when API access is limited, and standard email\/SMS provider integrations for notifications. We agree the exact methods before implementation based on your systems and security practices.<\/p>\n<\/section>\n<section class=\"imp-card imp-card-blue\">\n<h3>What we need from your company<\/h3>\n<p>Before launch we agree the systems to connect, sample product and inventory data, order event sources, your substitute and pricing rules, and the notification templates and channels you want to use. We also need details on approval thresholds (when human sign\u2011off is required) and any restricted SKUs or brands. Compatibility, access methods and required credentials are confirmed and agreed before implementation.<\/p>\n<\/section><\/div>\n<\/div>\n<div id=\"imp-tab-faq-source\" class=\"imp-tab-source\">\n<div class=\"imp-pf-tab-panel\">\n<section class=\"imp-card\">\n<h2>FAQ<\/h2>\n<h3>Which e\u2011commerce platforms does this support?<\/h3>\n<p>We commonly integrate with Shopify, WooCommerce and Magento via APIs or webhooks; other platforms can be connected through CSV exports or middleware. We confirm compatibility with your platform during scoping.<\/p>\n<h3>Can you enforce price and brand rules for substitutes?<\/h3>\n<p>Yes. You provide rules for acceptable price bands, brand restrictions and mandatory attributes; the automation applies these filters before recommending substitutes and can require human approval for exceptions.<\/p>\n<h3>Will customers be asked to confirm substitutes before fulfilment?<\/h3>\n<p>That is configurable. You can choose automatic cart\/order updates when a substitute is accepted at checkout, or require a customer confirmation step via email\/SMS with a limited time window before manual handling.<\/p>\n<h3>How are exceptions and complex cases handled?<\/h3>\n<p>Complex or policy\u2011sensitive cases are routed to your support or fulfilment team for manual review. The system creates an exception task with context and recommended substitutes to speed resolution.<\/p>\n<h3>What data does the AI use to match substitutes?<\/h3>\n<p>Matching uses product attributes (category, specs, price band), available stock levels, and optionally historical purchase patterns or substitution rules you provide. We review examples with you to tune relevance.<\/p>\n<h3>How does the monthly pricing change?<\/h3>\n<p>Monthly pricing reflects the ongoing operated service: integrations, frequency of events, data volume and maintenance needs. Major scope changes or additional integrations are confirmed and priced separately.<\/p>\n<\/section><\/div>\n<\/div>\n<div id=\"imp-tab-price-source\" class=\"imp-tab-source\">\n<div class=\"imp-pf-tab-panel\">\n<section class=\"imp-card imp-card-soft\">\n<h2 class=\"imp-i18n-price-title\">Price<\/h2>\n<div class=\"imp-price-grid\">\n<div class=\"imp-price-card\">\n<div class=\"imp-price-label imp-i18n-monthly-label\">Monthly subscription<\/div>\n<div class=\"imp-price-value imp-price-monthly\">299 PLN net \/ month<\/div>\n<\/div>\n<div class=\"imp-price-card\">\n<div class=\"imp-price-label imp-i18n-activation-label\">Activation fee<\/div>\n<div class=\"imp-price-value imp-price-activation\" data-base-price=\"299\">3 \u00d7 monthly subscription<\/div>\n<\/div><\/div>\n<div class=\"imp-price-explain\">\n<p class=\"imp-i18n-activation-copy\">The activation fee covers the initial setup, implementation and launch of the agreed automation scope.<\/p>\n<p class=\"imp-i18n-monthly-copy\">The monthly subscription covers the ongoing operation, maintenance and management of the automation service.<\/p>\n<p class=\"imp-i18n-price-confirm\">The exact scope and final monthly subscription are confirmed before launch.<\/p>\n<\/p><\/div>\n<\/section><\/div>\n<\/div>\n<section id=\"implementation-contact\" class=\"imp-contact\">\n<div class=\"imp-contact-copy-card\">\n<h2 class=\"imp-i18n-contact-title\">Ready to automate this process?<\/h2>\n<p>Tell us which e\u2011commerce platform, inventory source and average daily order volume we should plan for.<\/p>\n<p class=\"imp-i18n-contact-copy\">We\u2019ll confirm how this solution can be connected, its scope and the final monthly subscription.<\/p>\n<\/p><\/div>\n<p>    <a class=\"imp-contact-main imp-i18n-calendly\" href=\"https:\/\/calendly.com\/d\/cv3s-28d-54k\/30-minutowe-spotkanie\" target=\"_blank\" rel=\"noopener\">Book a 30-minute call<\/a><\/p>\n<table class=\"imp-contact-table\" role=\"presentation\" cellspacing=\"0\" cellpadding=\"0\" style=\"width:100%!important;table-layout:fixed!important;border-collapse:collapse!important;margin:24px 0 0!important;border:0!important;background:transparent!important;\">\n<tbody>\n<tr>\n<td class=\"imp-contact-cell imp-contact-cell-email\" style=\"width:50%!important;padding:0 12px 0 0!important;border:0!important;background:transparent!important;vertical-align:top!important;\"><a class=\"imp-contact-card\" href=\"mailto:contact@implementi.ai\" style=\"display:flex!important;flex-direction:column!important;justify-content:center!important;width:100%!important;min-width:0!important;min-height:132px!important;margin:0!important;box-sizing:border-box!important;background:#F9F9F9!important;border:1px solid rgba(24,52,87,.12)!important;border-radius:24px!important;padding:28px!important;text-decoration:none!important;\"><span class=\"imp-contact-label imp-i18n-email-label\">Email us<\/span><span class=\"imp-contact-value\">contact@implementi.ai<\/span><\/a><\/td>\n<td class=\"imp-contact-cell imp-contact-cell-phone\" style=\"width:50%!important;padding:0 0 0 12px!important;border:0!important;background:transparent!important;vertical-align:top!important;\"><a class=\"imp-contact-card\" href=\"tel:%2B48660983178\" style=\"display:flex!important;flex-direction:column!important;justify-content:center!important;width:100%!important;min-width:0!important;min-height:132px!important;margin:0!important;box-sizing:border-box!important;background:#F9F9F9!important;border:1px solid rgba(24,52,87,.12)!important;border-radius:24px!important;padding:28px!important;text-decoration:none!important;\"><span class=\"imp-contact-label imp-i18n-phone-label\">Call us<\/span><span class=\"imp-contact-value\">&#43;48 660 983 178<\/span><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/section>\n<\/div>\n<p><script>(function(){\nvar impBusy=false;\nfunction impLang(){var l=(document.documentElement.lang||'en').toLowerCase();return l.indexOf('pl')===0?'pl':'en';}\nfunction impText(){return impLang()==='pl'?{description:'Opis',how:'Jak to dzia\u0142a',integrations:'Integracje',faq:'FAQ',price:'Cena',contactTitle:'Chcesz zautomatyzowa\u0107 ten proces?',contactCopy:'Potwierdzimy spos\u00f3b pod\u0142\u0105czenia rozwi\u0105zania, zakres oraz ostateczny miesi\u0119czny abonament.',calendly:'Um\u00f3w 30-minutow\u0105 rozmow\u0119',email:'Napisz e-mail',phone:'Zadzwo\u0144',monthly:'Abonament miesi\u0119czny',activation:'Op\u0142ata aktywacyjna',activationCopy:'Op\u0142ata aktywacyjna obejmuje pocz\u0105tkow\u0105 konfiguracj\u0119, wdro\u017cenie i uruchomienie uzgodnionego zakresu automatyzacji.',monthlyCopy:'Abonament miesi\u0119czny obejmuje bie\u017c\u0105ce dzia\u0142anie, utrzymanie i obs\u0142ug\u0119 automatyzacji.',priceConfirm:'Dok\u0142adny zakres i ostateczny miesi\u0119czny abonament potwierdzamy przed uruchomieniem.',pricePrefix:'Od ',priceSuffix:' netto \/ miesi\u0105c',tabMonthlySuffix:' netto \/ miesi\u0105c',tabActivationSuffix:' netto'}:{description:'Description',how:'How it works',integrations:'Integrations',faq:'FAQ',price:'Price',contactTitle:'Ready to automate this process?',contactCopy:'We\u2019ll confirm how this solution can be connected, its scope and the final monthly subscription.',calendly:'Book a 30-minute call',email:'Email us',phone:'Call us',monthly:'Monthly subscription',activation:'Activation fee',activationCopy:'The activation fee covers the initial setup, implementation and launch of the agreed automation scope.',monthlyCopy:'The monthly subscription covers the ongoing operation, maintenance and management of the automation service.',priceConfirm:'The exact scope and final monthly subscription are confirmed before launch.',pricePrefix:'From ',priceSuffix:' net \/ month',tabMonthlySuffix:' net \/ month',tabActivationSuffix:' net'};}\nfunction clean(v){return(v||'').replace(\/\u00a0\/g,' ').replace(\/\\s+\/g,' ').trim();}\nfunction money(raw){raw=clean(raw).replace(\/^From\\s+\/i,'').replace(\/^Od\\s+\/i,'').replace(\/\\s+netto\\s*\\\/\\s*miesi\u0105c$\/i,'').replace(\/\\s+net\\s*\\\/\\s*month$\/i,'');var m=raw.match(\/([\\d\\s.,]+)\/);if(!m)return null;var n=m[1].replace(\/\\s\/g,'');var lc=n.lastIndexOf(','),ld=n.lastIndexOf('.'),sep='';if(lc>=0||ld>=0)sep=lc>ld?',':'.';var frac=sep?(n.split(sep)[1]||''):'';var decimals=(frac&&parseInt(frac,10)!==0)?Math.min(frac.length,2):0;var norm=n;if(sep===',')norm=norm.replace(\/\\.\/g,'').replace(',','.');else if(sep==='.')norm=norm.replace(\/,\/g,'');var val=parseFloat(norm);if(isNaN(val))return null;var idx=raw.indexOf(m[1]);var pre=clean(raw.slice(0,idx));var post=clean(raw.slice(idx+m[1].length));if(impLang()==='en'&&post.toLowerCase()==='z\u0142')post='PLN';return{value:val,decimals:decimals,prefix:pre,suffix:post,decimal:sep||'.'};}\nfunction fmt(v,f){var s=Number(v).toFixed(f.decimals);if(f.decimal===',')s=s.replace('.',',');return(f.prefix?f.prefix:'')+s+(f.suffix?' '+f.suffix:'');}\nfunction currentMoney(){var p=document.querySelector('.summary p.price');var root=document.querySelector('.implementi-pf');var fallback=(root&&root.getAttribute('data-base-price')?root.getAttribute('data-base-price'):'299')+' PLN';if(!p)return money(fallback);var txt=clean(p.textContent||p.innerText||'');if(\/^(From|Od)\\s\/i.test(txt)&&p.getAttribute('data-imp-raw'))txt=p.getAttribute('data-imp-raw');else if(txt&&!\/^(From|Od)\\s\/i.test(txt))p.setAttribute('data-imp-raw',txt);return money(txt)||money(fallback);}\nfunction localize(){var t=impText();var map=[['.imp-i18n-contact-title',t.contactTitle],['.imp-i18n-contact-copy',t.contactCopy],['.imp-i18n-calendly',t.calendly],['.imp-i18n-email-label',t.email],['.imp-i18n-phone-label',t.phone],['.imp-i18n-price-title',t.price],['.imp-i18n-monthly-label',t.monthly],['.imp-i18n-activation-label',t.activation],['.imp-i18n-activation-copy',t.activationCopy],['.imp-i18n-monthly-copy',t.monthlyCopy],['.imp-i18n-price-confirm',t.priceConfirm]];map.forEach(function(x){document.querySelectorAll(x[0]).forEach(function(el){el.textContent=x[1];});});document.querySelectorAll('.imp-hero-calendly').forEach(function(a){a.textContent=t.calendly;});document.querySelectorAll('.imp-hero-email').forEach(function(a){a.textContent=t.email;});document.querySelectorAll('.imp-hero-phone').forEach(function(a){a.textContent=t.phone;});}\nfunction updatePrice(){if(impBusy)return;var t=impText(),p=document.querySelector('.summary p.price'),f=currentMoney();if(!f)return;var base=fmt(f.value,f),desired=t.pricePrefix+base+t.priceSuffix;impBusy=true;if(p&&clean(p.textContent)!==desired){p.innerHTML='<span class=\"imp-native-monthly-price\">'+desired+'<\/span>';}document.querySelectorAll('.imp-price-monthly').forEach(function(el){el.textContent=base+t.tabMonthlySuffix;});document.querySelectorAll('.imp-price-activation').forEach(function(el){el.textContent=fmt(f.value*3,f)+t.tabActivationSuffix;});impBusy=false;}\nfunction enforceImpTabsLayout(){\n var wrap=document.querySelector('.woocommerce-tabs, .wc-tabs-wrapper');\n if(!wrap)return;\n var tabs=wrap.querySelector('ul.tabs, ul.wc-tabs');\n if(!tabs)return;\n var important=function(el,prop,val){try{el.style.setProperty(prop,val,'important');}catch(e){}};\n important(tabs,'display','flex');important(tabs,'flex-direction','row');important(tabs,'flex-wrap','nowrap');important(tabs,'align-items','center');important(tabs,'justify-content','flex-start');important(tabs,'gap','8px');important(tabs,'width','100%');important(tabs,'max-width','100%');important(tabs,'min-width','0');important(tabs,'height','auto');important(tabs,'padding','6px');important(tabs,'margin','0 0 24px');important(tabs,'overflow-x','auto');important(tabs,'overflow-y','hidden');important(tabs,'white-space','nowrap');important(tabs,'background','#183457');important(tabs,'border','0');important(tabs,'border-radius','22px');\n Array.from(tabs.children).forEach(function(li){\n  if(li.style.display==='none')return;\n  important(li,'float','none');important(li,'display','block');important(li,'flex','0 0 auto');important(li,'flex-basis','auto');important(li,'flex-grow','0');important(li,'flex-shrink','0');important(li,'width','auto');important(li,'min-width','0');important(li,'max-width','none');important(li,'margin','0');important(li,'padding','0');important(li,'clear','none');important(li,'border','0');important(li,'background','transparent');\n  var a=li.querySelector('a');if(!a)return;\n  important(a,'display','flex');important(a,'align-items','center');important(a,'justify-content','center');important(a,'width','auto');important(a,'min-width','max-content');important(a,'height','44px');important(a,'padding','0 18px');important(a,'margin','0');important(a,'white-space','nowrap');important(a,'font-family','Poppins, Arial, sans-serif');important(a,'font-weight','700');important(a,'font-size','14px');important(a,'text-decoration','none');important(a,'border-radius','18px');\n  if(li.classList.contains('active')){important(a,'background','#183457');important(a,'color','#F9F9F9');important(a,'border-color','#183457');}\n  else{important(a,'background','#F9F9F9');important(a,'color','#183457');important(a,'border','1px solid rgba(24,52,87,.12)');}\n });\n}\nfunction buildTabs(){var wrap=document.querySelector('.woocommerce-tabs, .wc-tabs-wrapper');if(!wrap)return;var tabs=wrap.querySelector('ul.tabs, ul.wc-tabs');var desc=wrap.querySelector('#tab-description, .woocommerce-Tabs-panel--description');if(!tabs||!desc)return;var t=impText();var da=tabs.querySelector('.description_tab a, a[href=\"#tab-description\"]');if(da)da.textContent=t.description;tabs.querySelectorAll('.imp-pf-custom-tab').forEach(function(el){el.remove();});wrap.querySelectorAll('.imp-pf-custom-panel').forEach(function(el){el.remove();});var specs=[['how-it-works',t.how,'imp-tab-how-source'],['integrations',t.integrations,'imp-tab-integrations-source'],['faq',t.faq,'imp-tab-faq-source'],['price',t.price,'imp-tab-price-source']];specs.forEach(function(s){var src=document.getElementById(s[2]);if(!src)return;var li=document.createElement('li');li.className='imp-pf-custom-tab '+s[0]+'_tab';var a=document.createElement('a');a.href='#tab-'+s[0];a.textContent=s[1];li.appendChild(a);tabs.appendChild(li);var panel=document.createElement('div');panel.id='tab-'+s[0];panel.className='woocommerce-Tabs-panel woocommerce-Tabs-panel--'+s[0]+' panel entry-content wc-tab imp-pf-custom-panel';panel.innerHTML=src.innerHTML;panel.style.display='none';wrap.appendChild(panel);});Array.from(tabs.children).forEach(function(li){if(!li.classList.contains('description_tab')&&!li.classList.contains('imp-pf-custom-tab'))li.style.display='none';});Array.from(wrap.querySelectorAll('.woocommerce-Tabs-panel')).forEach(function(panel){if(panel!==desc&&!panel.classList.contains('imp-pf-custom-panel'))panel.style.display='none';});function activate(id){Array.from(tabs.querySelectorAll('li')).forEach(function(li){li.classList.remove('active');});Array.from(wrap.querySelectorAll('.woocommerce-Tabs-panel')).forEach(function(panel){panel.style.display='none';});var a=tabs.querySelector('a[href=\"#'+id+'\"]');if(a&&a.parentElement)a.parentElement.classList.add('active');var panel=wrap.querySelector('#'+id);if(panel)panel.style.display='block';enforceImpTabsLayout();}tabs.addEventListener('click',function(e){var a=e.target.closest('a');if(!a)return;var h=a.getAttribute('href')||'';if(h==='#tab-description'||h==='#tab-how-it-works'||h==='#tab-integrations'||h==='#tab-faq'||h==='#tab-price'){e.preventDefault();e.stopImmediatePropagation();activate(h.slice(1));}},true);if(!tabs.querySelector('li.active'))activate('tab-description');enforceImpTabsLayout();setTimeout(enforceImpTabsLayout,80);var contact=document.getElementById('implementation-contact');if(contact)wrap.insertAdjacentElement('afterend',contact);}\nfunction init(){buildTabs();enforceImpTabsLayout();localize();updatePrice();document.querySelectorAll('.paypal-buttons,.ppc-button-wrapper,.wc-stripe-payment-request-wrapper,.express-payment-button,.wcpay-payment-request-wrapper').forEach(function(el){el.style.display='none';});}\ndocument.addEventListener('DOMContentLoaded',init);window.addEventListener('load',init);setTimeout(init,400);setTimeout(init,1200);setTimeout(init,2400);var s=document.querySelector('.summary');if(s&&window.MutationObserver){new MutationObserver(function(){setTimeout(updatePrice,30);}).observe(s,{childList:true,subtree:true,characterData:true});}\n})();<\/script><\/p>\n<style id=\"imp-v4510-ui-fix\">\n\/* v4.5.10 \u2014 keep light blue only as page background, not inside framed content *\/\n.imp-card-soft,\n.imp-card-blue{\n  background:#F9F9F9!important;\n}<\/p>\n<p>\/* Direct spacing between the end of the implementi product content\/contact and related products *\/\nbody.single-product #implementation-contact{\n  margin-bottom:140px!important;\n}<\/p>\n<p>\/* Hero contact container \u2014 JS below unwraps any wpautop <\/p>\n<p>\/<br \/> wrappers first *\/\nbody.single-product .summary .imp-hero-contact-inline,\nbody.single-product .summary .imp-hero-contact-grid{\n  display:grid!important;\n  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;\n  gap:12px!important;\n  width:100%!important;\n  max-width:100%!important;\n  margin:12px 0 0!important;\n  padding:0!important;\n  box-sizing:border-box!important;\n}\nbody.single-product .summary .imp-hero-contact-inline>.imp-hero-email,\nbody.single-product .summary .imp-hero-contact-inline>.imp-hero-phone,\nbody.single-product .summary .imp-hero-contact-grid>.imp-hero-email,\nbody.single-product .summary .imp-hero-contact-grid>.imp-hero-phone{\n  display:flex!important;\n  align-items:center!important;\n  justify-content:center!important;\n  width:100%!important;\n  max-width:none!important;\n  min-width:0!important;\n  min-height:44px!important;\n  margin:0!important;\n  padding:10px 12px!important;\n  float:none!important;\n  clear:none!important;\n  box-sizing:border-box!important;\n  border:1px solid rgba(24,52,87,.16)!important;\n  border-radius:999px!important;\n  background:#F9F9F9!important;\n  color:#183457!important;\n  text-decoration:none!important;\n  text-align:center!important;\n  font-family:\"Poppins\",Arial,sans-serif!important;\n  font-size:16px!important;\n  font-weight:700!important;\n}<\/p>\n<p>\/* Related products *\/\nbody.single-product .related.products,\nbody.single-product .upsells.products{\n  clear:both!important;\n}\nbody.single-product .related.products ul.products,\nbody.single-product .upsells.products ul.products{\n  width:100%!important;\n  max-width:100%!important;\n  box-sizing:border-box!important;\n}\nbody.single-product .related.products .imp-related-title,\nbody.single-product .upsells.products .imp-related-title,\nbody.single-product .related.products .woocommerce-loop-product__title,\nbody.single-product .upsells.products .woocommerce-loop-product__title{\n  display:block!important;\n  visibility:visible!important;\n  opacity:1!important;\n  height:auto!important;\n  max-height:none!important;\n  overflow:visible!important;\n  margin:14px 0 8px!important;\n  padding:0!important;\n  color:#183457!important;\n  font-family:\"Poppins\",Arial,sans-serif!important;\n  font-size:18px!important;\n  font-weight:700!important;\n  line-height:1.35!important;\n  text-align:center!important;\n}\nbody.single-product .related.products ul.products li.product .price,\nbody.single-product .upsells.products ul.products li.product .price{\n  display:block!important;\n  margin:8px 0 14px!important;\n  text-align:center!important;\n}<\/p>\n<p>@media(max-width:767px){\n  body.single-product #implementation-contact{\n    margin-bottom:72px!important;\n  }\n  body.single-product .summary .imp-hero-contact-inline,\n  body.single-product .summary .imp-hero-contact-grid{\n    grid-template-columns:1fr!important;\n    gap:10px!important;\n  }\n}\n<\/style>\n<p><script id=\"imp-v4510-ui-fix-js\">\n(function(){\n  function impImportant(el, prop, value){\n    if(!el) return;\n    try{ el.style.setProperty(prop,value,'important'); }catch(e){}\n  }<\/p>\n<p>  function fixHeroContact(){\n    var wrap=document.querySelector('.summary .imp-hero-contact-inline, .summary .imp-hero-contact-grid');\n    if(!wrap) return;<\/p>\n<p>    var email=wrap.querySelector('.imp-hero-email');\n    var phone=wrap.querySelector('.imp-hero-phone');\n    if(!email || !phone) return;<\/p>\n<p>    \/* Woo short-description filters can insert <\/p>\n<p>\/<br \/>. Put the two anchors\n       back as DIRECT children so no wrapper can push Call us to the next row. *\/\n    if(email.parentElement!==wrap || phone.parentElement!==wrap || wrap.children.length!==2){\n      wrap.innerHTML='';\n      wrap.appendChild(email);\n      wrap.appendChild(phone);\n    }<\/p>\n<p>    impImportant(wrap,'display','grid');\n    impImportant(wrap,'width','100%');\n    impImportant(wrap,'max-width','100%');\n    impImportant(wrap,'gap',window.innerWidth<=767?'10px':'12px');\n    impImportant(wrap,'grid-template-columns',window.innerWidth<=767?'1fr':'minmax(0,1fr) minmax(0,1fr)');\n\n    [email,phone].forEach(function(a){\n      impImportant(a,'display','flex');\n      impImportant(a,'align-items','center');\n      impImportant(a,'justify-content','center');\n      impImportant(a,'width','100%');\n      impImportant(a,'max-width','none');\n      impImportant(a,'min-width','0');\n      impImportant(a,'margin','0');\n      impImportant(a,'float','none');\n      impImportant(a,'clear','none');\n      impImportant(a,'box-sizing','border-box');\n    });\n  }\n\n  function visibleProductName(li){\n    var title=li.querySelector('.woocommerce-loop-product__title, .product-title, h2.woocommerce-loop-product__title');\n    if(title &#038;&#038; title.textContent.trim()) return {text:title.textContent.trim(), node:title};\n\n    var link=li.querySelector('a.woocommerce-LoopProduct-link, a.woocommerce-loop-product__link, a[href]');\n    var aria=link ? (link.getAttribute('aria-label') || '') : '';\n    if(aria){\n      aria=aria.replace(\/^(Read more about|View product|Select options for)\\s*\/i,'').replace(\/^[\"']|[\"']$\/g,'').trim();\n      if(aria) return {text:aria,node:null};\n    }\n\n    var img=li.querySelector('img');\n    var alt=img ? (img.getAttribute('alt') || '').trim() : '';\n    return {text:alt,node:null};\n  }\n\n  function fixRelatedProducts(){\n    document.querySelectorAll('.related.products, .upsells.products').forEach(function(section){\n      var list=section.querySelector('ul.products');\n      if(!list) return;\n\n      \/* Tell Woo\/theme this is a 3-column list instead of a 4-column list. *\/\n      Array.from(list.classList).forEach(function(c){\n        if(\/^columns-\\d+$\/.test(c)) list.classList.remove(c);\n      });\n      list.classList.add('columns-3');\n\n      var items=Array.from(list.querySelectorAll(':scope > li.product'));\n      items.slice(3).forEach(function(li){ li.remove(); });\n      items=Array.from(list.querySelectorAll(':scope > li.product'));<\/p>\n<p>      \/* Only force our own grid dimensions when the theme doesn't produce\n         a usable 3-column row after changing to columns-3. *\/\n      if(window.innerWidth>900){\n        impImportant(list,'display','grid');\n        impImportant(list,'grid-template-columns','repeat(3,minmax(0,1fr))');\n        impImportant(list,'gap','30px');\n      }else if(window.innerWidth>767){\n        impImportant(list,'display','grid');\n        impImportant(list,'grid-template-columns','repeat(2,minmax(0,1fr))');\n        impImportant(list,'gap','24px');\n      }else{\n        impImportant(list,'display','grid');\n        impImportant(list,'grid-template-columns','1fr');\n        impImportant(list,'gap','22px');\n      }<\/p>\n<p>      items.forEach(function(li){\n        impImportant(li,'width','auto');\n        impImportant(li,'max-width','none');\n        impImportant(li,'min-width','0');\n        impImportant(li,'float','none');\n        impImportant(li,'clear','none');\n        impImportant(li,'margin','0');<\/p>\n<p>        var info=visibleProductName(li);\n        var title=info.node;<\/p>\n<p>        if(title){\n          title.classList.add('imp-related-title');\n        }else if(info.text && !li.querySelector('.imp-related-title')){\n          title=document.createElement('div');\n          title.className='imp-related-title';\n          title.textContent=info.text;\n          var price=li.querySelector('.price');\n          if(price) li.insertBefore(title,price);\n          else li.appendChild(title);\n        }<\/p>\n<p>        if(title){\n          impImportant(title,'display','block');\n          impImportant(title,'visibility','visible');\n          impImportant(title,'opacity','1');\n          impImportant(title,'height','auto');\n          impImportant(title,'max-height','none');\n          impImportant(title,'overflow','visible');\n          impImportant(title,'margin','14px 0 8px');\n          impImportant(title,'color','#183457');\n          impImportant(title,'font-family','Poppins, Arial, sans-serif');\n          impImportant(title,'font-size','18px');\n          impImportant(title,'font-weight','700');\n          impImportant(title,'line-height','1.35');\n          impImportant(title,'text-align','center');\n        }\n      });\n    });\n  }<\/p>\n<p>  function run(){\n    fixHeroContact();\n    fixRelatedProducts();\n  }<\/p>\n<p>  document.addEventListener('DOMContentLoaded',run);\n  window.addEventListener('load',run);\n  window.addEventListener('resize',function(){setTimeout(run,50);});\n  setTimeout(run,250);\n  setTimeout(run,700);\n  setTimeout(run,1600);\n  setTimeout(run,3000);<\/p>\n<p>  if(window.MutationObserver){\n    var mo=new MutationObserver(function(){setTimeout(run,40);});\n    document.addEventListener('DOMContentLoaded',function(){\n      if(document.body) mo.observe(document.body,{childList:true,subtree:true});\n    });\n  }\n})();\n<\/script><\/p>\n<style id=\"imp-v4512-bottom-fix\">\n\/* All customer-facing content cards stay white against the light-blue page background *\/\nbody.single-product .implementi-pf #imp-description-root > .imp-card,\nbody.single-product .implementi-pf .imp-pf-tab-panel > .imp-card,\nbody.single-product .implementi-pf .imp-auto-card{\n  background:#F9F9F9!important;\n  border:1px solid rgba(24,52,87,.10)!important;\n  border-radius:28px!important;\n}<\/p>\n<p>\/* Lower contact copy must never sit loose on the blue page background *\/\nbody.single-product .implementi-pf .imp-contact-copy-card{\n  display:block!important;\n  width:100%!important;\n  margin:0 0 26px!important;\n  padding:clamp(24px,4vw,40px)!important;\n  box-sizing:border-box!important;\n  background:#F9F9F9!important;\n  border:1px solid rgba(24,52,87,.10)!important;\n  border-radius:28px!important;\n}\nbody.single-product .implementi-pf .imp-contact-copy-card h2{\n  margin-top:0!important;\n}<\/p>\n<p>\/* The recommendation area is deliberately separated from Email\/Call cards *\/\nbody.single-product .imp-related-zone{\n  display:block!important;\n  clear:both!important;\n  width:min(1420px,calc(100% - 40px))!important;\n  max-width:100%!important;\n  margin:150px auto 60px!important;\n  padding:38px!important;\n  box-sizing:border-box!important;\n  background:#F9F9F9!important;\n  border:1px solid rgba(24,52,87,.10)!important;\n  border-radius:30px!important;\n}<\/p>\n<p>body.single-product .imp-related-heading{\n  display:block!important;\n  margin:0 0 34px!important;\n  padding:0!important;\n  color:#183457!important;\n  font-family:\"Poppins\",Arial,sans-serif!important;\n  font-size:30px!important;\n  font-weight:800!important;\n  line-height:1.2!important;\n  text-align:left!important;\n}<\/p>\n<p>\/* Exactly 3 products on desktop *\/\nbody.single-product .imp-related-list{\n  display:grid!important;\n  grid-template-columns:repeat(3,minmax(0,1fr))!important;\n  gap:30px!important;\n  width:100%!important;\n  max-width:100%!important;\n  margin:0!important;\n  padding:0!important;\n  box-sizing:border-box!important;\n}\nbody.single-product .imp-related-list > li.product{\n  display:block!important;\n  width:auto!important;\n  max-width:none!important;\n  min-width:0!important;\n  margin:0!important;\n  padding:0!important;\n  float:none!important;\n  clear:none!important;\n}\nbody.single-product .imp-related-list > li.product:nth-of-type(n+4){\n  display:none!important;\n}<\/p>\n<p>\/* Product titles must remain visible *\/\nbody.single-product .imp-related-list .woocommerce-loop-product__title,\nbody.single-product .imp-related-list .product-title,\nbody.single-product .imp-related-list .imp-related-title{\n  display:block!important;\n  visibility:visible!important;\n  opacity:1!important;\n  height:auto!important;\n  max-height:none!important;\n  overflow:visible!important;\n  margin:16px 0 8px!important;\n  color:#183457!important;\n  font-family:\"Poppins\",Arial,sans-serif!important;\n  font-size:18px!important;\n  font-weight:700!important;\n  line-height:1.35!important;\n  text-align:center!important;\n}\nbody.single-product .imp-related-list .price{\n  display:block!important;\n  margin:8px 0 14px!important;\n  text-align:center!important;\n}<\/p>\n<p>@media(max-width:900px){\n  body.single-product .imp-related-zone{\n    width:min(100% - 24px,1100px)!important;\n    margin-top:110px!important;\n    padding:28px!important;\n  }\n  body.single-product .imp-related-list{\n    grid-template-columns:repeat(2,minmax(0,1fr))!important;\n    gap:24px!important;\n  }\n}\n@media(max-width:767px){\n  body.single-product .imp-related-zone{\n    width:calc(100% - 20px)!important;\n    margin-top:80px!important;\n    padding:20px!important;\n    border-radius:24px!important;\n  }\n  body.single-product .imp-related-heading{\n    margin-bottom:24px!important;\n    font-size:24px!important;\n  }\n  body.single-product .imp-related-list{\n    grid-template-columns:1fr!important;\n    gap:22px!important;\n  }\n}\n<\/style>\n<p><script id=\"imp-v4512-bottom-fix-js\">\n(function(){\n  function directProducts(list){\n    return Array.prototype.filter.call(list.children,function(el){\n      return el && el.classList && el.classList.contains('product');\n    });\n  }<\/p>\n<p>  function textForProduct(li){\n    var title=li.querySelector('.woocommerce-loop-product__title,.product-title,h2,h3');\n    if(title && title.textContent.trim()) return {node:title,text:title.textContent.trim()};\n    var img=li.querySelector('img');\n    var alt=img ? (img.getAttribute('alt')||'').trim() : '';\n    if(alt) return {node:null,text:alt};\n    var link=li.querySelector('a[aria-label]');\n    var ar=link ? (link.getAttribute('aria-label')||'').trim() : '';\n    return {node:null,text:ar};\n  }<\/p>\n<p>  function wrapOrphanDescriptionText(){\n    var roots=document.querySelectorAll('#imp-description-root,.imp-pf-tab-panel');\n    roots.forEach(function(root){\n      var group=[];\n      function flush(){\n        if(!group.length) return;\n        var card=document.createElement('section');\n        card.className='imp-card imp-auto-card';\n        root.insertBefore(card,group[0]);\n        group.forEach(function(n){ card.appendChild(n); });\n        group=[];\n      }\n      Array.prototype.slice.call(root.childNodes).forEach(function(n){\n        if(n.nodeType===3){\n          if((n.textContent||'').trim()) group.push(n);\n          return;\n        }\n        if(n.nodeType!==1) return;\n        if(n.matches('section.imp-card,.imp-card,script,style,.imp-tab-source')) {\n          flush();\n        } else if(n.matches('p,h1,h2,h3,h4,ul,ol,blockquote,div:not(.imp-card)')) {\n          group.push(n);\n        } else {\n          flush();\n        }\n      });\n      flush();\n    });\n  }<\/p>\n<p>  function findRecommendationList(){\n    var contact=document.getElementById('implementation-contact');\n    var lists=Array.prototype.slice.call(document.querySelectorAll('ul.products'));\n    if(!lists.length) return null;<\/p>\n<p>    if(contact){\n      var following=lists.filter(function(list){\n        try{\n          return !!(contact.compareDocumentPosition(list) & Node.DOCUMENT_POSITION_FOLLOWING);\n        }catch(e){ return false; }\n      });\n      if(following.length) return following[0];\n    }<\/p>\n<p>    return document.querySelector('.related.products ul.products,.upsells.products ul.products,section.related ul.products,section.upsells ul.products');\n  }<\/p>\n<p>  function fixRecommendations(){\n    var list=findRecommendationList();\n    if(!list) return;<\/p>\n<p>    list.classList.add('imp-related-list');<\/p>\n<p>    Array.prototype.slice.call(list.classList).forEach(function(c){\n      if(\/^columns-\\d+$\/.test(c)) list.classList.remove(c);\n    });\n    list.classList.add('columns-3');<\/p>\n<p>    var items=directProducts(list);<\/p>\n<p>    \/* Physical removal + CSS nth-of-type fallback = exactly 3 visible products. *\/\n    for(var i=items.length-1;i>=3;i--){\n      items[i].remove();\n    }\n    items=directProducts(list);<\/p>\n<p>    var zone=list.closest('section,.related,.upsells');\n    if(!zone) zone=list.parentElement;\n    if(zone){\n      zone.classList.add('imp-related-zone');<\/p>\n<p>      var existing=zone.querySelector(':scope > h2,:scope > h3');\n      if(existing){\n        existing.textContent='Customers also choose';\n        existing.classList.add('imp-related-heading');\n      }else if(!zone.querySelector(':scope > .imp-related-heading')){\n        var h=document.createElement('h2');\n        h.className='imp-related-heading';\n        h.textContent='Customers also choose';\n        zone.insertBefore(h,list);\n      }\n    }<\/p>\n<p>    items.forEach(function(li){\n      var info=textForProduct(li);\n      if(info.node){\n        info.node.classList.add('imp-related-title');\n      }else if(info.text && !li.querySelector('.imp-related-title')){\n        var t=document.createElement('div');\n        t.className='imp-related-title';\n        t.textContent=info.text;\n        var price=li.querySelector('.price');\n        if(price) li.insertBefore(t,price);\n        else li.appendChild(t);\n      }\n    });\n  }<\/p>\n<p>  function run(){\n    wrapOrphanDescriptionText();\n    fixRecommendations();\n  }<\/p>\n<p>  document.addEventListener('DOMContentLoaded',run);\n  window.addEventListener('load',run);\n  window.addEventListener('resize',function(){setTimeout(fixRecommendations,60);});\n  setTimeout(run,250);\n  setTimeout(run,800);\n  setTimeout(run,1800);\n  setTimeout(run,3500);<\/p>\n<p>  if(window.MutationObserver){\n    var queued=false;\n    var mo=new MutationObserver(function(){\n      if(queued) return;\n      queued=true;\n      setTimeout(function(){\n        queued=false;\n        fixRecommendations();\n      },100);\n    });\n    document.addEventListener('DOMContentLoaded',function(){\n      if(document.body) mo.observe(document.body,{childList:true,subtree:true});\n    });\n  }\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"imp-hero-compact\">\n<div class=\"imp-hero-meta\"><span class=\"imp-hero-chip\">Operacje<\/span><span class=\"imp-hero-chip\">implementi.ai<\/span><\/div>\n<div class=\"imp-hero-short\">Automatically detect out\u2011of\u2011stock items at order time, propose suitable in\u2011stock substitutes and send coordinated customer notifications across email\/SMS. Ideal for online retailers seeking to reduce cancellations and manual follow\u2011up.<\/div>\n<p>  <a class=\"imp-hero-calendly\" href=\"https:\/\/calendly.com\/d\/cv3s-28d-54k\/30-minutowe-spotkanie\" target=\"_blank\" rel=\"noopener\">Um\u00f3w si\u0119 na 30-minutow\u0105 rozmow\u0119 telefoniczn\u0105<\/a><\/p>\n<div class=\"imp-hero-contact-grid\"><a class=\"imp-hero-email\" href=\"mailto:contact@implementi.ai\">Napisz do nas<\/a><a class=\"imp-hero-phone\" href=\"tel:%2B48660983178\">Zadzwo\u0144 do nas<\/a><\/div>\n<\/div>","protected":false},"featured_media":8086,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"product_brand":[32],"product_cat":[38],"product_tag":[],"class_list":["post-8089","product","type-product","status-publish","has-post-thumbnail","product_brand-implementi-ai","product_cat-operations","first","instock","virtual","taxable","product-type-external"],"ams_default_variation_id":0,"ams_product_points_reward":[],"ams_product_discount_percentage":0,"ams_price_to_display":299,"ams_acf":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/implementi.ai\/pl\/wp-json\/wp\/v2\/product\/8089","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/implementi.ai\/pl\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/implementi.ai\/pl\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"https:\/\/implementi.ai\/pl\/wp-json\/wp\/v2\/comments?post=8089"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/implementi.ai\/pl\/wp-json\/wp\/v2\/media\/8086"}],"wp:attachment":[{"href":"https:\/\/implementi.ai\/pl\/wp-json\/wp\/v2\/media?parent=8089"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/implementi.ai\/pl\/wp-json\/wp\/v2\/product_brand?post=8089"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/implementi.ai\/pl\/wp-json\/wp\/v2\/product_cat?post=8089"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/implementi.ai\/pl\/wp-json\/wp\/v2\/product_tag?post=8089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}