{"id":8173,"date":"2026-10-24T23:48:48","date_gmt":"2026-10-24T21:48:48","guid":{"rendered":"https:\/\/implementi.ai\/en\/?post_type=product&#038;p=8173"},"modified":"2026-10-24T23:49:13","modified_gmt":"2026-10-24T21:49:13","slug":"optimizador-de-rutas-de-ventas-sobre-el-terreno-con-ia-y-planificador-de-visitas","status":"publish","type":"product","link":"https:\/\/implementi.ai\/es\/product\/ai-field-sales-route-optimiser-visit-scheduler\/","title":{"rendered":"Optimizador de rutas de ventas sobre el terreno y planificador de visitas basado en IA"},"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>This service continuously prioritises customer and prospect visits for field sales teams, builds efficient multi-stop routes and pushes appointments into reps\u2019 calendars while keeping CRM records updated. It reduces manual scheduling, last-minute rework and travel wasted by poor planning.<\/p>\n<p>implementi.ai operates and maintains the solution: we configure the connected systems, run the prioritisation logic, monitor the automation and handle errors so your sales operations team sees predictable, daily itineraries without building or operating the integration yourself.<\/p>\n<\/section>\n<section class=\"imp-card\">\n<h2>The problem<\/h2>\n<p>Without automation, route planning and visit booking are manual tasks done in spreadsheets, email threads and one-off calendar invites. Sales managers and reps spend hours rearranging appointments, chasing availability and updating CRM fields. As territory sizes, account volumes and on-the-road constraints grow, the manual process becomes brittle: high-priority accounts may be missed, travel is inefficient, and CRM data drifts out of sync with actual visit outcomes. The result is reduced selling time, inconsistent customer coverage and extra administrative load for operations teams.<\/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-field-sales-route-optimiser-visit-scheduler-support-1.jpg\" alt=\"Flat-vector illustration of a cluttered schedule and frustrated planner representing manual route planning challenges.\" \/><\/div>\n<\/section>\n<section class=\"imp-card imp-card-blue imp-scope\">\n<h2>What this solution automates<\/h2>\n<p>This managed solution automates the continuous prioritisation and scheduling of field sales visits and the operational updates that follow. It evaluates account priority, available rep windows, travel time and business rules, then publishes optimised itineraries and synchronises actions across calendars and CRM.<\/p>\n<ul>\n<li>Prioritise accounts and opportunities based on CRM signals, scheduled meetings, and custom business rules.<\/li>\n<li>Generate optimal multi-stop travel routes for each rep considering travel time, appointment lengths and time windows.<\/li>\n<li>Create or propose calendar events and send mobile-ready notifications to reps.<\/li>\n<li>Update CRM records with scheduled visits, outcome fields and next-action reminders.<\/li>\n<li>Detect and escalate scheduling conflicts or missed visits to operations for manual handling.<\/li>\n<\/ul>\n<\/section>\n<section class=\"imp-card imp-benefits\">\n<h2>What your business gains<\/h2>\n<ul>\n<li><strong>More selling time.<\/strong> Reps spend less time planning and more time in front of customers because itineraries and bookings are prepared automatically and pushed to their calendars.<\/li>\n<li><strong>Smarter coverage.<\/strong> Priority-driven scheduling ensures high-value accounts receive timely visits while routine calls are batched efficiently to reduce travel overhead.<\/li>\n<li><strong>Fewer scheduling errors.<\/strong> Automated conflict detection and calendar synchronisation reduce double-bookings, missed appointments and CRM mismatches.<\/li>\n<li><strong>Operational visibility.<\/strong> Managers receive consolidated daily plans and exception reports so they can reassign visits or intervene before opportunities are lost.<\/li>\n<li><strong>Consistent CRM data.<\/strong> Scheduled visits, outcomes and follow-up tasks are recorded automatically, improving pipeline accuracy and handover between reps and managers.<\/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-field-sales-route-optimiser-visit-scheduler-support-2.jpg\" alt=\"Flat-vector illustration of a clean operations dashboard and mobile notification showing organised itineraries after automation.\" \/><\/div>\n<\/section>\n<section class=\"imp-card imp-card-soft\">\n<h2>A practical use case<\/h2>\n<p>For example, a regional B2B company rostered five field reps covering hundreds of accounts. Managers manually allocated visits each week and reps rearranged appointments by phone. With this product, the company connects its CRM and calendar systems, defines simple priority rules (active opportunities, renewal windows, strategic accounts), and the service generates each rep\u2019s daily route. Calendar events are created, travel time is accounted for and exceptions are flagged to operations. Reps arrive with prepared agendas, managers see consistent coverage and the ops team spends less time fixing last-minute schedule clashes.<\/p>\n<\/section>\n<section class=\"imp-card imp-target\">\n<h2>Who is it for?<\/h2>\n<ul>\n<li>Regional B2B sales teams with field reps who use a CRM and calendar \u2014 they need automated routing and booking to free rep time.<\/li>\n<li>Sales operations managers who run territory planning and want predictable daily itineraries and fewer manual reschedules.<\/li>\n<li>Distributors and wholesalers with scheduled account visits across multiple locations \u2014 they benefit from travel-efficient routing and synchronized records.<\/li>\n<li>Companies running appointment-based field programs (training, demos, audits) that need to balance priorities and available rep windows automatically.<\/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 managed automation and ongoing operation of the routing and scheduling service. implementi.ai configures and maintains agreed integrations, runs the AI-assisted prioritisation and route generation, monitors the automation\u2019s operation, and handles and fixes errors as they occur. The service also includes reasonable configuration updates to keep rules and priorities aligned with changing business needs.<\/p>\n<ul>\n<li>Operating automation and service management<\/li>\n<li>Connections to agreed systems (CRM, calendar, mapping)<\/li>\n<li>AI-assisted processing for prioritisation and visit briefs<\/li>\n<li>Monitoring, error handling and routine maintenance<\/li>\n<\/ul>\n<\/section>\n<section class=\"imp-card\">\n<h2>When this solution may not be necessary<\/h2>\n<ul>\n<li>Companies with only a single on-site salesperson and no travel planning needs, where manual scheduling is trivial.<\/li>\n<li>Field teams that require specialised routing based on complex regulatory constraints (hazmat, restricted-access permits) \u2014 these may need a bespoke solution beyond standard routing rules.<\/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>Connect systems.<\/strong> We agree which CRM, calendar and mapping services to connect and confirm access methods before launch so data for accounts, opportunities and rep availability is available to the service.<\/li>\n<li><strong>Define prioritisation rules.<\/strong> Your operations and sales leaders set priority signals (opportunity stage, account tier, SLA, campaign targets) and constraints like working hours and maximum daily travel time.<\/li>\n<li><strong>Daily data ingestion.<\/strong> Each day the automation pulls current leads\/opportunities, open activities and rep availability, forming the dataset for prioritisation and routing.<\/li>\n<li><strong>Prioritise visits.<\/strong> The engine scores accounts and opportunities against your rules to create a ranked visit list and candidate time windows for each rep.<\/li>\n<li><strong>Optimise routes.<\/strong> For each rep, the system builds an efficient multi-stop itinerary that respects appointment lengths, travel time and time windows, producing a proposed schedule.<\/li>\n<li><strong>Publish and sync.<\/strong> Proposed visits are created or suggested in reps\u2019 calendars, notifications are sent to mobile devices, and CRM is updated with scheduled visit records and next-action tasks.<\/li>\n<li><strong>Monitor and handle exceptions.<\/strong> Conflicts, last-minute cancellations or missed visits are detected; exceptions are routed to operations for manual handling and the itinerary is recomputed as needed.<\/li>\n<\/ol>\n<\/section>\n<section class=\"imp-card\">\n<h2>Example workflow<\/h2>\n<p>For example, imagine a company that manages 40 regional accounts and three field reps. Each morning the automation retrieves account opportunity data from the CRM, checks which accounts are flagged high-priority and reads reps\u2019 calendar availability. It scores and ranks candidate visits, then computes efficient multi-stop routes that fit within each rep\u2019s day. Calendar events are created with suggested agenda items, the CRM is annotated with scheduled visit entries, and reps receive mobile notifications. If a rep marks a visit as cancelled, the automation flags the slot, notifies operations and recomputes the route so coverage is maintained without manual re-planning.<\/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 connect include CRM platforms such as Salesforce or HubSpot, calendar platforms like Google Calendar or Microsoft Exchange\/Outlook, mapping and routing APIs such as Google Maps or Mapbox, and mobile\/field applications used by reps. Other systems can potentially be connected by API, webhook or agreed data export depending on your stack.<\/p>\n<\/section>\n<section class=\"imp-card\">\n<h3>Connection methods<\/h3>\n<p>Connections are typically via provider APIs and OAuth for calendars, CRM APIs or webhooks for events and account data, and routing services (Maps APIs) for travel-time calculations. When APIs are not available we can accept scheduled CSV exports or Google Sheets as an interim method. Exact methods are confirmed during scoping.<\/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 which CRM and calendar systems you use, provide sample account and rep availability data, and define prioritisation and scheduling rules (desired visit length, permissible travel windows, account tiers). We also confirm which mapping\/routing service to use and the user accounts needed for integration. Compatibility and the final access method are agreed and confirmed 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>What systems can you connect to?<\/h3>\n<p>We typically connect to major CRM platforms (Salesforce, HubSpot), Google and Microsoft calendars, and routing APIs (Google Maps, Mapbox). If you use a different system we assess feasibility during scoping and confirm the connection method before launch.<\/p>\n<h3>How customizable are the prioritisation rules?<\/h3>\n<p>Prioritisation is configurable: you can weight opportunity stage, account tier, campaign tags, scheduled follow-ups and custom fields. We implement the agreed rules and provide routine adjustments as part of the monthly service.<\/p>\n<h3>How are calendar clashes and last-minute cancellations handled?<\/h3>\n<p>The automation detects conflicts and either proposes alternate times or routes and flags exceptions to operations. When cancellations occur the route is recomputed and affected visits are re-prioritised; escalation rules determine when manual intervention is required.<\/p>\n<h3>Do reps need a special mobile app?<\/h3>\n<p>No special app is required. We can push calendar events and mobile-ready notifications. If you have a field app we can integrate notifications into it where supported by the app\u2019s API or webhook.<\/p>\n<h3>How long does implementation take?<\/h3>\n<p>Launch time depends on the number and type of integrations, data quality and the complexity of prioritisation rules. We confirm a realistic timeline during scoping; the monthly service covers ongoing monitoring and routine adjustments after launch.<\/p>\n<h3>What causes the monthly price to change?<\/h3>\n<p>Pricing reflects the number of integrations, frequency of route generation, data volume and the level of ongoing customisation or support needed. Significant changes to scope or additional integrations are reviewed and priced with you.<\/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 CRM, calendar and routing services your team currently uses and how many field reps you manage.<\/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\">Ventas<\/span><span class=\"imp-hero-chip\">aplicaci\u00f3n.ai<\/span><\/div>\n<div class=\"imp-hero-short\">Priorizaci\u00f3n automatizada y planificaci\u00f3n \u00f3ptima de rutas para los comerciales de campo, con gesti\u00f3n de citas en el calendario, actualizaciones del CRM y notificaciones m\u00f3viles. Dise\u00f1ado para equipos de ventas que necesitan dedicar m\u00e1s tiempo a vender y menos a planificar.<\/div>\n<p>  <a class=\"imp-hero-calendly\" href=\"https:\/\/calendly.com\/d\/cv3s-28d-54k\/30-minutowe-spotkanie\" target=\"_blank\" rel=\"noopener\">Reserva una llamada de 30 minutos<\/a><\/p>\n<div class=\"imp-hero-contact-grid\"><a class=\"imp-hero-email\" href=\"mailto:contact@implementi.ai\">Env\u00edanos un correo electr\u00f3nico<\/a><a class=\"imp-hero-phone\" href=\"tel:%2B48660983178\">Ll\u00e1manos<\/a><\/div>\n<\/div>","protected":false},"featured_media":8170,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"product_brand":[32],"product_cat":[35],"product_tag":[],"class_list":["post-8173","product","type-product","status-publish","has-post-thumbnail","product_brand-implementi-ai","product_cat-sales","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\/es\/wp-json\/wp\/v2\/product\/8173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/implementi.ai\/es\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/implementi.ai\/es\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"https:\/\/implementi.ai\/es\/wp-json\/wp\/v2\/comments?post=8173"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/implementi.ai\/es\/wp-json\/wp\/v2\/media\/8170"}],"wp:attachment":[{"href":"https:\/\/implementi.ai\/es\/wp-json\/wp\/v2\/media?parent=8173"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/implementi.ai\/es\/wp-json\/wp\/v2\/product_brand?post=8173"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/implementi.ai\/es\/wp-json\/wp\/v2\/product_cat?post=8173"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/implementi.ai\/es\/wp-json\/wp\/v2\/product_tag?post=8173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}