[{"data":1,"prerenderedAt":4951},["ShallowReactive",2],{"navigation_docs":3,"-docs-guides-integrations-recover-abandoned-carts":2399},[4,82,446,500,736,2117],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started\u002Findex",[9,10,17,23,30,37,44,51,57,63,69,75],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13,"children":14,"icon":16},"Apps and Sites","\u002Fdocs\u002Fgetting-started\u002Fapps-and-sites","docs\u002Fgetting-started\u002Fapps-and-sites\u002Findex",[15],{"title":11,"path":12,"stem":13,"icon":16},"i-lucide-columns-2",{"title":18,"path":19,"stem":20,"children":21},"Architecture Overview","\u002Fdocs\u002Fgetting-started\u002Farchitecture","docs\u002Fgetting-started\u002Farchitecture\u002Findex",[22],{"title":18,"path":19,"stem":20},{"title":24,"path":25,"stem":26,"children":27,"icon":29},"Bring an existing frontend","\u002Fdocs\u002Fgetting-started\u002Fbring-an-existing-frontend","docs\u002Fgetting-started\u002Fbring-an-existing-frontend\u002Findex",[28],{"title":24,"path":25,"stem":26,"icon":29},"i-lucide-arrow-right-left",{"title":31,"path":32,"stem":33,"children":34,"icon":36},"Concepts","\u002Fdocs\u002Fgetting-started\u002Fconcepts","docs\u002Fgetting-started\u002Fconcepts\u002Findex",[35],{"title":31,"path":32,"stem":33,"icon":36},"i-lucide-shapes",{"title":38,"path":39,"stem":40,"children":41,"icon":43},"Frontend stacks","\u002Fdocs\u002Fgetting-started\u002Ffrontend-stacks","docs\u002Fgetting-started\u002Ffrontend-stacks\u002Findex",[42],{"title":38,"path":39,"stem":40,"icon":43},"i-lucide-layers",{"title":45,"path":46,"stem":47,"children":48,"icon":50},"Get Help","\u002Fdocs\u002Fgetting-started\u002Fget-help","docs\u002Fgetting-started\u002Fget-help\u002Findex",[49],{"title":45,"path":46,"stem":47,"icon":50},"i-lucide-life-buoy",{"title":52,"path":53,"stem":54,"children":55},"Glossary","\u002Fdocs\u002Fgetting-started\u002Fglossary","docs\u002Fgetting-started\u002Fglossary\u002Findex",[56],{"title":52,"path":53,"stem":54},{"title":58,"path":59,"stem":60,"children":61},"Platform Overview","\u002Fdocs\u002Fgetting-started\u002Fplatform-overview","docs\u002Fgetting-started\u002Fplatform-overview\u002Findex",[62],{"title":58,"path":59,"stem":60},{"title":64,"path":65,"stem":66,"children":67},"Prerequisites","\u002Fdocs\u002Fgetting-started\u002Fprerequisites","docs\u002Fgetting-started\u002Fprerequisites\u002Findex",[68],{"title":64,"path":65,"stem":66},{"title":70,"path":71,"stem":72,"children":73},"Your First App in 15 Minutes","\u002Fdocs\u002Fgetting-started\u002Fquick-start","docs\u002Fgetting-started\u002Fquick-start\u002Findex",[74],{"title":70,"path":71,"stem":72},{"title":76,"path":77,"stem":78,"children":79,"icon":81},"Security and trust","\u002Fdocs\u002Fgetting-started\u002Fsecurity-and-trust","docs\u002Fgetting-started\u002Fsecurity-and-trust\u002Findex",[80],{"title":76,"path":77,"stem":78,"icon":81},"i-lucide-shield-check",{"title":83,"path":84,"stem":85,"children":86},"Guides","\u002Fdocs\u002Fguides","docs\u002Fguides\u002Findex",[87,88,151,249,256,310,364,391],{"title":83,"path":84,"stem":85},{"title":89,"path":90,"stem":91,"children":92,"icon":94},"Build an App","\u002Fdocs\u002Fguides\u002Fapps","docs\u002Fguides\u002Fapps\u002Findex",[93,95,102,109,116,123,130,137,144],{"title":89,"path":90,"stem":91,"icon":94},"i-lucide-layout-grid",{"title":96,"path":97,"stem":98,"children":99,"icon":101},"Give your App a Cockpit screen","\u002Fdocs\u002Fguides\u002Fapps\u002Fadd-a-cockpit-screen","docs\u002Fguides\u002Fapps\u002Fadd-a-cockpit-screen\u002Findex",[100],{"title":96,"path":97,"stem":98,"icon":101},"i-lucide-layout-dashboard",{"title":103,"path":104,"stem":105,"children":106,"icon":108},"Add a data model","\u002Fdocs\u002Fguides\u002Fapps\u002Fadd-a-data-model","docs\u002Fguides\u002Fapps\u002Fadd-a-data-model\u002Findex",[107],{"title":103,"path":104,"stem":105,"icon":108},"i-lucide-database",{"title":110,"path":111,"stem":112,"children":113,"icon":115},"Build your first App","\u002Fdocs\u002Fguides\u002Fapps\u002Fbuild-your-first-app","docs\u002Fguides\u002Fapps\u002Fbuild-your-first-app\u002Findex",[114],{"title":110,"path":111,"stem":112,"icon":115},"i-lucide-hammer",{"title":117,"path":118,"stem":119,"children":120,"icon":122},"Deploy and verify an App","\u002Fdocs\u002Fguides\u002Fapps\u002Fdeploy-with-the-cli","docs\u002Fguides\u002Fapps\u002Fdeploy-with-the-cli\u002Findex",[121],{"title":117,"path":118,"stem":119,"icon":122},"i-lucide-square-terminal",{"title":124,"path":125,"stem":126,"children":127,"icon":129},"Publish a business event from your App","\u002Fdocs\u002Fguides\u002Fapps\u002Fpublish-a-business-event","docs\u002Fguides\u002Fapps\u002Fpublish-a-business-event\u002Findex",[128],{"title":124,"path":125,"stem":126,"icon":129},"i-lucide-megaphone",{"title":131,"path":132,"stem":133,"children":134,"icon":136},"Publish on the Marketplace","\u002Fdocs\u002Fguides\u002Fapps\u002Fpublish-on-the-marketplace","docs\u002Fguides\u002Fapps\u002Fpublish-on-the-marketplace\u002Findex",[135],{"title":131,"path":132,"stem":133,"icon":136},"i-lucide-store",{"title":138,"path":139,"stem":140,"children":141,"icon":143},"React to events and run scheduled work in your App","\u002Fdocs\u002Fguides\u002Fapps\u002Freact-to-events-and-run-scheduled-work","docs\u002Fguides\u002Fapps\u002Freact-to-events-and-run-scheduled-work\u002Findex",[142],{"title":138,"path":139,"stem":140,"icon":143},"i-lucide-timer",{"title":145,"path":146,"stem":147,"children":148,"icon":150},"Ship a schema change","\u002Fdocs\u002Fguides\u002Fapps\u002Fship-a-schema-change","docs\u002Fguides\u002Fapps\u002Fship-a-schema-change\u002Findex",[149],{"title":145,"path":146,"stem":147,"icon":150},"i-lucide-git-branch",{"title":152,"path":153,"stem":154,"children":155,"icon":157},"Set up selling","\u002Fdocs\u002Fguides\u002Fcommerce","docs\u002Fguides\u002Fcommerce\u002Findex",[156,158,165,172,179,186,193,200,207,214,221,228,235,242],{"title":152,"path":153,"stem":154,"icon":157},"i-lucide-shopping-cart",{"title":159,"path":160,"stem":161,"children":162,"icon":164},"Set up B2B pricing","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fb2b-pricing","docs\u002Fguides\u002Fcommerce\u002Fb2b-pricing\u002Findex",[163],{"title":159,"path":160,"stem":161,"icon":164},"i-lucide-circle-dollar-sign",{"title":166,"path":167,"stem":168,"children":169,"icon":171},"Give buyer staff the right permissions","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fbuyer-permissions","docs\u002Fguides\u002Fcommerce\u002Fbuyer-permissions\u002Findex",[170],{"title":166,"path":167,"stem":168,"icon":171},"i-lucide-user-cog",{"title":173,"path":174,"stem":175,"children":176,"icon":178},"Confirm invoice payments","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fconfirm-invoice-payments","docs\u002Fguides\u002Fcommerce\u002Fconfirm-invoice-payments\u002Findex",[177],{"title":173,"path":174,"stem":175,"icon":178},"i-lucide-receipt",{"title":180,"path":181,"stem":182,"children":183,"icon":185},"Model a catalog with attributes, families and variants","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fmodel-a-catalog","docs\u002Fguides\u002Fcommerce\u002Fmodel-a-catalog\u002Findex",[184],{"title":180,"path":181,"stem":182,"icon":185},"i-lucide-boxes",{"title":187,"path":188,"stem":189,"children":190,"icon":192},"Order and quote numbers","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fnumber-ranges","docs\u002Fguides\u002Fcommerce\u002Fnumber-ranges\u002Findex",[191],{"title":187,"path":188,"stem":189,"icon":192},"i-lucide-hash",{"title":194,"path":195,"stem":196,"children":197,"icon":199},"Manage product images and documents","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fproduct-media","docs\u002Fguides\u002Fcommerce\u002Fproduct-media\u002Findex",[198],{"title":194,"path":195,"stem":196,"icon":199},"i-lucide-image",{"title":201,"path":202,"stem":203,"children":204,"icon":206},"Run promotions and voucher codes","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fpromotions-and-vouchers","docs\u002Fguides\u002Fcommerce\u002Fpromotions-and-vouchers\u002Findex",[205],{"title":201,"path":202,"stem":203,"icon":206},"i-lucide-ticket-percent",{"title":208,"path":209,"stem":210,"children":211,"icon":213},"Set up purchase approvals","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fpurchase-approvals","docs\u002Fguides\u002Fcommerce\u002Fpurchase-approvals\u002Findex",[212],{"title":208,"path":209,"stem":210,"icon":213},"i-lucide-stamp",{"title":215,"path":216,"stem":217,"children":218,"icon":220},"Turn an accepted quote into an order","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fquotes-to-orders","docs\u002Fguides\u002Fcommerce\u002Fquotes-to-orders\u002Findex",[219],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-handshake",{"title":222,"path":223,"stem":224,"children":225,"icon":227},"Build categories from rules","\u002Fdocs\u002Fguides\u002Fcommerce\u002Frule-based-categories","docs\u002Fguides\u002Fcommerce\u002Frule-based-categories\u002Findex",[226],{"title":222,"path":223,"stem":224,"icon":227},"i-lucide-list-filter",{"title":229,"path":230,"stem":231,"children":232,"icon":234},"Ship, cancel and return an order","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fship-cancel-and-return","docs\u002Fguides\u002Fcommerce\u002Fship-cancel-and-return\u002Findex",[233],{"title":229,"path":230,"stem":231,"icon":234},"i-lucide-package-check",{"title":236,"path":237,"stem":238,"children":239,"icon":241},"Set up shipping rates and tax","\u002Fdocs\u002Fguides\u002Fcommerce\u002Fshipping-rates","docs\u002Fguides\u002Fcommerce\u002Fshipping-rates\u002Findex",[240],{"title":236,"path":237,"stem":238,"icon":241},"i-lucide-truck",{"title":243,"path":244,"stem":245,"children":246,"icon":248},"Connect a payment provider and take a test payment","\u002Fdocs\u002Fguides\u002Fcommerce\u002Ftest-payments","docs\u002Fguides\u002Fcommerce\u002Ftest-payments\u002Findex",[247],{"title":243,"path":244,"stem":245,"icon":248},"i-lucide-credit-card",{"title":250,"path":251,"stem":252,"children":253,"icon":255},"Start from an example","\u002Fdocs\u002Fguides\u002Fexamples","docs\u002Fguides\u002Fexamples\u002Findex",[254],{"title":250,"path":251,"stem":252,"icon":255},"i-lucide-folder-code",{"title":257,"path":258,"stem":259,"children":260,"icon":262},"Connect a system","\u002Fdocs\u002Fguides\u002Fintegrations","docs\u002Fguides\u002Fintegrations\u002Findex",[261,263,269,276,283,289,296,303],{"title":257,"path":258,"stem":259,"icon":262},"i-lucide-plug",{"title":264,"path":265,"stem":266,"children":267,"icon":29},"Connect a procurement system by punchout","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fconnect-by-punchout","docs\u002Fguides\u002Fintegrations\u002Fconnect-by-punchout\u002Findex",[268],{"title":264,"path":265,"stem":266,"icon":29},{"title":270,"path":271,"stem":272,"children":273,"icon":275},"Hand an order to the ERP","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fhand-an-order-to-the-erp","docs\u002Fguides\u002Fintegrations\u002Fhand-an-order-to-the-erp\u002Findex",[274],{"title":270,"path":271,"stem":272,"icon":275},"i-lucide-arrow-left-right",{"title":277,"path":278,"stem":279,"children":280,"icon":282},"Import a BMECAT catalog","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fimport-a-bmecat-catalog","docs\u002Fguides\u002Fintegrations\u002Fimport-a-bmecat-catalog\u002Findex",[281],{"title":277,"path":278,"stem":279,"icon":282},"i-lucide-package-plus",{"title":284,"path":285,"stem":286,"children":287,"icon":50},"Keep an Integration Studio workflow running","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fkeep-a-workflow-running","docs\u002Fguides\u002Fintegrations\u002Fkeep-a-workflow-running\u002Findex",[288],{"title":284,"path":285,"stem":286,"icon":50},{"title":290,"path":291,"stem":292,"children":293,"icon":295},"Receive platform events at your own endpoint","\u002Fdocs\u002Fguides\u002Fintegrations\u002Freceive-platform-events","docs\u002Fguides\u002Fintegrations\u002Freceive-platform-events\u002Findex",[294],{"title":290,"path":291,"stem":292,"icon":295},"i-lucide-webhook",{"title":297,"path":298,"stem":299,"children":300,"icon":302},"Recover abandoned carts with a workflow","\u002Fdocs\u002Fguides\u002Fintegrations\u002Frecover-abandoned-carts","docs\u002Fguides\u002Fintegrations\u002Frecover-abandoned-carts\u002Findex",[301],{"title":297,"path":298,"stem":299,"icon":302},"i-lucide-mail-check",{"title":304,"path":305,"stem":306,"children":307,"icon":309},"Send low-stock alerts to the ERP","\u002Fdocs\u002Fguides\u002Fintegrations\u002Fsend-low-stock-alerts-to-the-erp","docs\u002Fguides\u002Fintegrations\u002Fsend-low-stock-alerts-to-the-erp\u002Findex",[308],{"title":304,"path":305,"stem":306,"icon":309},"i-lucide-bell-ring",{"title":311,"path":312,"stem":313,"children":314,"icon":316},"Operate & go live","\u002Fdocs\u002Fguides\u002Foperate","docs\u002Fguides\u002Foperate\u002Findex",[315,317,323,330,337,344,351,357],{"title":311,"path":312,"stem":313,"icon":316},"i-lucide-activity",{"title":318,"path":319,"stem":320,"children":321,"icon":81},"Answer a customer's security questionnaire","\u002Fdocs\u002Fguides\u002Foperate\u002Fanswer-a-security-questionnaire","docs\u002Fguides\u002Foperate\u002Fanswer-a-security-questionnaire\u002Findex",[322],{"title":318,"path":319,"stem":320,"icon":81},{"title":324,"path":325,"stem":326,"children":327,"icon":329},"Debug a failed request","\u002Fdocs\u002Fguides\u002Foperate\u002Fdebug-a-failed-request","docs\u002Fguides\u002Foperate\u002Fdebug-a-failed-request\u002Findex",[328],{"title":324,"path":325,"stem":326,"icon":329},"i-lucide-bug",{"title":331,"path":332,"stem":333,"children":334,"icon":336},"Go live with a project","\u002Fdocs\u002Fguides\u002Foperate\u002Fgo-live-checklist","docs\u002Fguides\u002Foperate\u002Fgo-live-checklist\u002Findex",[335],{"title":331,"path":332,"stem":333,"icon":336},"i-lucide-list-checks",{"title":338,"path":339,"stem":340,"children":341,"icon":343},"Migrate from an existing shop","\u002Fdocs\u002Fguides\u002Foperate\u002Fmigrate-from-an-existing-shop","docs\u002Fguides\u002Foperate\u002Fmigrate-from-an-existing-shop\u002Findex",[342],{"title":338,"path":339,"stem":340,"icon":343},"i-lucide-route",{"title":345,"path":346,"stem":347,"children":348,"icon":350},"Size a launch","\u002Fdocs\u002Fguides\u002Foperate\u002Fplan-for-limits","docs\u002Fguides\u002Foperate\u002Fplan-for-limits\u002Findex",[349],{"title":345,"path":346,"stem":347,"icon":350},"i-lucide-gauge",{"title":352,"path":353,"stem":354,"children":355,"icon":336},"Script a bulk change","\u002Fdocs\u002Fguides\u002Foperate\u002Fscript-a-bulk-change","docs\u002Fguides\u002Foperate\u002Fscript-a-bulk-change\u002Findex",[356],{"title":352,"path":353,"stem":354,"icon":336},{"title":358,"path":359,"stem":360,"children":361,"icon":363},"Stay current","\u002Fdocs\u002Fguides\u002Foperate\u002Fstay-current","docs\u002Fguides\u002Foperate\u002Fstay-current\u002Findex",[362],{"title":358,"path":359,"stem":360,"icon":363},"i-lucide-refresh-cw",{"title":365,"path":366,"stem":367,"children":368,"icon":370},"Plan before you build","\u002Fdocs\u002Fguides\u002Fplan","docs\u002Fguides\u002Fplan\u002Findex",[369,371,378,385],{"title":365,"path":366,"stem":367,"icon":370},"i-lucide-map",{"title":372,"path":373,"stem":374,"children":375,"icon":377},"Choose a system of record","\u002Fdocs\u002Fguides\u002Fplan\u002Fchoose-a-system-of-record","docs\u002Fguides\u002Fplan\u002Fchoose-a-system-of-record\u002Findex",[376],{"title":372,"path":373,"stem":374,"icon":377},"i-lucide-network",{"title":379,"path":380,"stem":381,"children":382,"icon":384},"Choose an event surface","\u002Fdocs\u002Fguides\u002Fplan\u002Fchoose-an-event-surface","docs\u002Fguides\u002Fplan\u002Fchoose-an-event-surface\u002Findex",[383],{"title":379,"path":380,"stem":381,"icon":384},"i-lucide-signpost",{"title":386,"path":387,"stem":388,"children":389,"icon":343},"Choose where the logic goes","\u002Fdocs\u002Fguides\u002Fplan\u002Fchoose-where-the-logic-goes","docs\u002Fguides\u002Fplan\u002Fchoose-where-the-logic-goes\u002Findex",[390],{"title":386,"path":387,"stem":388,"icon":343},{"title":392,"path":393,"stem":394,"children":395,"icon":397},"Build a storefront","\u002Fdocs\u002Fguides\u002Fstorefronts","docs\u002Fguides\u002Fstorefronts\u002Findex",[396,398,405,412,419,426,432,439],{"title":392,"path":393,"stem":394,"icon":397},"i-lucide-paintbrush",{"title":399,"path":400,"stem":401,"children":402,"icon":404},"Brand a Theme with design tokens","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fbrand-with-tokens","docs\u002Fguides\u002Fstorefronts\u002Fbrand-with-tokens\u002Findex",[403],{"title":399,"path":400,"stem":401,"icon":404},"i-lucide-palette",{"title":406,"path":407,"stem":408,"children":409,"icon":411},"Build a block","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fbuild-a-block","docs\u002Fguides\u002Fstorefronts\u002Fbuild-a-block\u002Findex",[410],{"title":406,"path":407,"stem":408,"icon":411},"i-lucide-blocks",{"title":413,"path":414,"stem":415,"children":416,"icon":418},"Build your first Theme","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fbuild-your-first-theme","docs\u002Fguides\u002Fstorefronts\u002Fbuild-your-first-theme\u002Findex",[417],{"title":413,"path":414,"stem":415,"icon":418},"i-lucide-layout-template",{"title":420,"path":421,"stem":422,"children":423,"icon":425},"Connect your own frontend","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fconnect-a-frontend","docs\u002Fguides\u002Fstorefronts\u002Fconnect-a-frontend\u002Findex",[424],{"title":420,"path":421,"stem":422,"icon":425},"i-lucide-plug-zap",{"title":427,"path":428,"stem":429,"children":430,"icon":363},"Refresh price caches when a price list changes","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Frefresh-price-caches","docs\u002Fguides\u002Fstorefronts\u002Frefresh-price-caches\u002Findex",[431],{"title":427,"path":428,"stem":429,"icon":363},{"title":433,"path":434,"stem":435,"children":436,"icon":438},"Reorder and quick order","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Freorder-and-quick-order","docs\u002Fguides\u002Fstorefronts\u002Freorder-and-quick-order\u002Findex",[437],{"title":433,"path":434,"stem":435,"icon":438},"i-lucide-repeat",{"title":440,"path":441,"stem":442,"children":443,"icon":445},"Sign a buyer in from your server","\u002Fdocs\u002Fguides\u002Fstorefronts\u002Fsign-a-buyer-in","docs\u002Fguides\u002Fstorefronts\u002Fsign-a-buyer-in\u002Findex",[444],{"title":440,"path":441,"stem":442,"icon":445},"i-lucide-log-in",{"title":447,"path":448,"stem":449,"children":450},"SDKs","\u002Fdocs\u002Fsdks","docs\u002Fsdks\u002Findex",[451,452,458,464,470,476,482,488,494],{"title":447,"path":448,"stem":449},{"title":453,"path":454,"stem":455,"children":456},"App SDK","\u002Fdocs\u002Fsdks\u002Fapp-sdk","docs\u002Fsdks\u002Fapp-sdk\u002Findex",[457],{"title":453,"path":454,"stem":455},{"title":459,"path":460,"stem":461,"children":462},"CLI","\u002Fdocs\u002Fsdks\u002Fcli","docs\u002Fsdks\u002Fcli\u002Findex",[463],{"title":459,"path":460,"stem":461},{"title":465,"path":466,"stem":467,"children":468},"Design systems","\u002Fdocs\u002Fsdks\u002Fdesign-systems","docs\u002Fsdks\u002Fdesign-systems\u002Findex",[469],{"title":465,"path":466,"stem":467},{"title":471,"path":472,"stem":473,"children":474},"Integration Node SDK","\u002Fdocs\u002Fsdks\u002Fintegration-nodes","docs\u002Fsdks\u002Fintegration-nodes\u002Findex",[475],{"title":471,"path":472,"stem":473},{"title":477,"path":478,"stem":479,"children":480},"Node SDK","\u002Fdocs\u002Fsdks\u002Fnode","docs\u002Fsdks\u002Fnode\u002Findex",[481],{"title":477,"path":478,"stem":479},{"title":483,"path":484,"stem":485,"children":486},"PHP SDK","\u002Fdocs\u002Fsdks\u002Fphp","docs\u002Fsdks\u002Fphp\u002Findex",[487],{"title":483,"path":484,"stem":485},{"title":489,"path":490,"stem":491,"children":492,"icon":150},"Versioning","\u002Fdocs\u002Fsdks\u002Fversioning","docs\u002Fsdks\u002Fversioning\u002Findex",[493],{"title":489,"path":490,"stem":491,"icon":150},{"title":495,"path":496,"stem":497,"children":498},"Web \u002F JavaScript SDK","\u002Fdocs\u002Fsdks\u002Fweb","docs\u002Fsdks\u002Fweb\u002Findex",[499],{"title":495,"path":496,"stem":497},{"title":501,"path":502,"stem":503,"children":504},"Services","\u002Fdocs\u002Fservices","docs\u002Fservices\u002Findex",[505,506,542,549,579,585,609,616,670,718],{"title":501,"path":502,"stem":503},{"title":507,"path":508,"stem":509,"children":510},"API usage","\u002Fdocs\u002Fservices\u002Fapi-usage","docs\u002Fservices\u002Fapi-usage\u002Findex",[511,512,518,524,530,536],{"title":507,"path":508,"stem":509},{"title":513,"path":514,"stem":515,"children":516},"Errors","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Ferrors","docs\u002Fservices\u002Fapi-usage\u002Ferrors\u002Findex",[517],{"title":513,"path":514,"stem":515},{"title":519,"path":520,"stem":521,"children":522},"Retries & idempotency","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fidempotency","docs\u002Fservices\u002Fapi-usage\u002Fidempotency\u002Findex",[523],{"title":519,"path":520,"stem":521},{"title":525,"path":526,"stem":527,"children":528},"Pagination & filtering","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fpagination","docs\u002Fservices\u002Fapi-usage\u002Fpagination\u002Findex",[529],{"title":525,"path":526,"stem":527},{"title":531,"path":532,"stem":533,"children":534},"Rate limits","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Frate-limits","docs\u002Fservices\u002Fapi-usage\u002Frate-limits\u002Findex",[535],{"title":531,"path":532,"stem":533},{"title":537,"path":538,"stem":539,"children":540},"Versioning & stability","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fversioning","docs\u002Fservices\u002Fapi-usage\u002Fversioning\u002Findex",[541],{"title":537,"path":538,"stem":539},{"title":543,"path":544,"stem":545,"children":546,"icon":548},"Record history","\u002Fdocs\u002Fservices\u002Faudit","docs\u002Fservices\u002Faudit\u002Findex",[547],{"title":543,"path":544,"stem":545,"icon":548},"i-lucide-history",{"title":550,"path":551,"stem":552,"children":553},"Authentication","\u002Fdocs\u002Fservices\u002Fauth","docs\u002Fservices\u002Fauth\u002Findex",[554,555,561,567,573],{"title":550,"path":551,"stem":552},{"title":556,"path":557,"stem":558,"children":559},"API keys","\u002Fdocs\u002Fservices\u002Fauth\u002Fapi-keys","docs\u002Fservices\u002Fauth\u002Fapi-keys\u002Findex",[560],{"title":556,"path":557,"stem":558},{"title":562,"path":563,"stem":564,"children":565},"Multi-factor authentication","\u002Fdocs\u002Fservices\u002Fauth\u002Fmfa","docs\u002Fservices\u002Fauth\u002Fmfa\u002Findex",[566],{"title":562,"path":563,"stem":564},{"title":568,"path":569,"stem":570,"children":571},"Social sign-in","\u002Fdocs\u002Fservices\u002Fauth\u002Foauth2","docs\u002Fservices\u002Fauth\u002Foauth2\u002Findex",[572],{"title":568,"path":569,"stem":570},{"title":574,"path":575,"stem":576,"children":577},"Sessions","\u002Fdocs\u002Fservices\u002Fauth\u002Fsessions","docs\u002Fservices\u002Fauth\u002Fsessions\u002Findex",[578],{"title":574,"path":575,"stem":576},{"title":580,"path":581,"stem":582,"children":583},"Avatars","\u002Fdocs\u002Fservices\u002Favatars","docs\u002Fservices\u002Favatars\u002Findex",[584],{"title":580,"path":581,"stem":582},{"title":586,"path":587,"stem":588,"children":589},"Events","\u002Fdocs\u002Fservices\u002Fevents","docs\u002Fservices\u002Fevents\u002Findex",[590,591,597,603],{"title":586,"path":587,"stem":588},{"title":592,"path":593,"stem":594,"children":595},"Consuming events","\u002Fdocs\u002Fservices\u002Fevents\u002Fconsuming-events","docs\u002Fservices\u002Fevents\u002Fconsuming-events\u002Findex",[596],{"title":592,"path":593,"stem":594},{"title":598,"path":599,"stem":600,"children":601},"Event catalog","\u002Fdocs\u002Fservices\u002Fevents\u002Fevent-catalog","docs\u002Fservices\u002Fevents\u002Fevent-catalog\u002Findex",[602],{"title":598,"path":599,"stem":600},{"title":604,"path":605,"stem":606,"children":607},"Event types","\u002Fdocs\u002Fservices\u002Fevents\u002Fevent-types","docs\u002Fservices\u002Fevents\u002Fevent-types\u002Findex",[608],{"title":604,"path":605,"stem":606},{"title":610,"path":611,"stem":612,"children":613,"icon":615},"Locale","\u002Fdocs\u002Fservices\u002Flocale","docs\u002Fservices\u002Flocale\u002Findex",[614],{"title":610,"path":611,"stem":612,"icon":615},"i-lucide-globe",{"title":617,"path":618,"stem":619,"children":620},"Network","\u002Fdocs\u002Fservices\u002Fnetwork","docs\u002Fservices\u002Fnetwork\u002Findex",[621,622,628,634,640,646,652,658,664],{"title":617,"path":618,"stem":619},{"title":623,"path":624,"stem":625,"children":626},"Caching","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcaching","docs\u002Fservices\u002Fnetwork\u002Fcaching\u002Findex",[627],{"title":623,"path":624,"stem":625},{"title":629,"path":630,"stem":631,"children":632},"Content delivery (CDN)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcdn","docs\u002Fservices\u002Fnetwork\u002Fcdn\u002Findex",[633],{"title":629,"path":630,"stem":631},{"title":635,"path":636,"stem":637,"children":638},"Compression","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcompression","docs\u002Fservices\u002Fnetwork\u002Fcompression\u002Findex",[639],{"title":635,"path":636,"stem":637},{"title":641,"path":642,"stem":643,"children":644},"DDoS mitigation","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fddos","docs\u002Fservices\u002Fnetwork\u002Fddos\u002Findex",[645],{"title":641,"path":642,"stem":643},{"title":647,"path":648,"stem":649,"children":650},"Edge network","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fedges","docs\u002Fservices\u002Fnetwork\u002Fedges\u002Findex",[651],{"title":647,"path":648,"stem":649},{"title":653,"path":654,"stem":655,"children":656},"Endpoints","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fendpoints","docs\u002Fservices\u002Fnetwork\u002Fendpoints\u002Findex",[657],{"title":653,"path":654,"stem":655},{"title":659,"path":660,"stem":661,"children":662},"Transport Layer Security (TLS)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Ftls","docs\u002Fservices\u002Fnetwork\u002Ftls\u002Findex",[663],{"title":659,"path":660,"stem":661},{"title":665,"path":666,"stem":667,"children":668},"Web application firewall (WAF)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fwaf","docs\u002Fservices\u002Fnetwork\u002Fwaf\u002Findex",[669],{"title":665,"path":666,"stem":667},{"title":671,"path":672,"stem":673,"children":674},"Storage","\u002Fdocs\u002Fservices\u002Fstorage","docs\u002Fservices\u002Fstorage\u002Findex",[675,676,682,688,694,700,706,712],{"title":671,"path":672,"stem":673},{"title":677,"path":678,"stem":679,"children":680},"Folders","\u002Fdocs\u002Fservices\u002Fstorage\u002Fbuckets","docs\u002Fservices\u002Fstorage\u002Fbuckets\u002Findex",[681],{"title":677,"path":678,"stem":679},{"title":683,"path":684,"stem":685,"children":686},"Signed URLs and access","\u002Fdocs\u002Fservices\u002Fstorage\u002Ffile-tokens","docs\u002Fservices\u002Fstorage\u002Ffile-tokens\u002Findex",[687],{"title":683,"path":684,"stem":685},{"title":689,"path":690,"stem":691,"children":692},"Serve and transform images","\u002Fdocs\u002Fservices\u002Fstorage\u002Fimages","docs\u002Fservices\u002Fstorage\u002Fimages\u002Findex",[693],{"title":689,"path":690,"stem":691},{"title":695,"path":696,"stem":697,"children":698},"3D assets","\u002Fdocs\u002Fservices\u002Fstorage\u002Fmodel-viewer","docs\u002Fservices\u002Fstorage\u002Fmodel-viewer\u002Findex",[699],{"title":695,"path":696,"stem":697},{"title":701,"path":702,"stem":703,"children":704},"Access control and visibility","\u002Fdocs\u002Fservices\u002Fstorage\u002Fpermissions","docs\u002Fservices\u002Fstorage\u002Fpermissions\u002Findex",[705],{"title":701,"path":702,"stem":703},{"title":707,"path":708,"stem":709,"children":710},"Quick start","\u002Fdocs\u002Fservices\u002Fstorage\u002Fquick-start","docs\u002Fservices\u002Fstorage\u002Fquick-start\u002Findex",[711],{"title":707,"path":708,"stem":709},{"title":713,"path":714,"stem":715,"children":716},"Upload and manage files","\u002Fdocs\u002Fservices\u002Fstorage\u002Fupload-download","docs\u002Fservices\u002Fstorage\u002Fupload-download\u002Findex",[717],{"title":713,"path":714,"stem":715},{"title":719,"path":720,"stem":721,"children":722},"Webhooks","\u002Fdocs\u002Fservices\u002Fwebhooks","docs\u002Fservices\u002Fwebhooks\u002Findex",[723,724,730],{"title":719,"path":720,"stem":721},{"title":725,"path":726,"stem":727,"children":728},"Delivery","\u002Fdocs\u002Fservices\u002Fwebhooks\u002Fdelivery","docs\u002Fservices\u002Fwebhooks\u002Fdelivery\u002Findex",[729],{"title":725,"path":726,"stem":727},{"title":731,"path":732,"stem":733,"children":734},"Security","\u002Fdocs\u002Fservices\u002Fwebhooks\u002Fsecurity","docs\u002Fservices\u002Fwebhooks\u002Fsecurity\u002Findex",[735],{"title":731,"path":732,"stem":733},{"title":737,"path":738,"stem":739,"children":740},"Studios","\u002Fdocs\u002Fstudios","docs\u002Fstudios\u002Findex",[741,742,748,913,1264,1583,1765],{"title":737,"path":738,"stem":739},{"title":743,"path":744,"stem":745,"children":746},"AI Studio","\u002Fdocs\u002Fstudios\u002Fai","docs\u002Fstudios\u002Fai\u002Findex",[747],{"title":743,"path":744,"stem":745},{"title":749,"path":750,"stem":751,"children":752,"icon":754},"Analytics Studio","\u002Fdocs\u002Fstudios\u002Fanalytics","docs\u002Fstudios\u002Fanalytics\u002Findex",[753,755,798,835,841,859,889],{"title":749,"path":750,"stem":751,"icon":754},"i-lucide-chart-column",{"title":756,"path":757,"stem":758,"children":759,"icon":761},"Make your app's data analyzable","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Findex",[760,762,768,774,780,786,792],{"title":756,"path":757,"stem":758,"icon":761},"i-lucide-table-2",{"title":763,"path":764,"stem":765,"children":766},"Column locators","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fcolumn-locators","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fcolumn-locators\u002Findex",[767],{"title":763,"path":764,"stem":765},{"title":769,"path":770,"stem":771,"children":772},"Declaring a view","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fdeclaring-a-view","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fdeclaring-a-view\u002Findex",[773],{"title":769,"path":770,"stem":771},{"title":775,"path":776,"stem":777,"children":778},"Example","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fexample","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fexample\u002Findex",[779],{"title":775,"path":776,"stem":777},{"title":781,"path":782,"stem":783,"children":784},"Semantic roles","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fsemantic-roles","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fsemantic-roles\u002Findex",[785],{"title":781,"path":782,"stem":783},{"title":787,"path":788,"stem":789,"children":790},"Tenant isolation","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Ftenant-isolation","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Ftenant-isolation\u002Findex",[791],{"title":787,"path":788,"stem":789},{"title":793,"path":794,"stem":795,"children":796},"The contract","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fthe-contract","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fthe-contract\u002Findex",[797],{"title":793,"path":794,"stem":795},{"title":799,"path":800,"stem":801,"children":802,"icon":804},"Stream commerce activity","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Findex",[803,805,811,817,823,829],{"title":799,"path":800,"stem":801,"icon":804},"i-lucide-radio",{"title":806,"path":807,"stem":808,"children":809},"Delivery guarantees","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fdelivery-guarantees","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fdelivery-guarantees\u002Findex",[810],{"title":806,"path":807,"stem":808},{"title":812,"path":813,"stem":814,"children":815},"Event types for reporting","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fevent-types-for-reporting","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fevent-types-for-reporting\u002Findex",[816],{"title":812,"path":813,"stem":814},{"title":818,"path":819,"stem":820,"children":821},"Register an endpoint","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fregister-an-endpoint","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fregister-an-endpoint\u002Findex",[822],{"title":818,"path":819,"stem":820},{"title":824,"path":825,"stem":826,"children":827},"The event stream","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fthe-event-stream","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fthe-event-stream\u002Findex",[828],{"title":824,"path":825,"stem":826},{"title":830,"path":831,"stem":832,"children":833},"Verify a delivery","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fverify-a-delivery","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fverify-a-delivery\u002Findex",[834],{"title":830,"path":831,"stem":832},{"title":836,"path":837,"stem":838,"children":839,"icon":29},"Getting data out","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fgetting-data-out","docs\u002Fstudios\u002Fanalytics\u002Fgetting-data-out\u002Findex",[840],{"title":836,"path":837,"stem":838,"icon":29},{"title":842,"path":843,"stem":844,"children":845,"icon":336},"Limits and what's next","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Findex",[846,847,853],{"title":842,"path":843,"stem":844,"icon":336},{"title":848,"path":849,"stem":850,"children":851},"Designing for what's coming","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fdesigning-for-whats-coming","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fdesigning-for-whats-coming\u002Findex",[852],{"title":848,"path":849,"stem":850},{"title":854,"path":855,"stem":856,"children":857},"What does not exist yet","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fwhat-does-not-exist-yet","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fwhat-does-not-exist-yet\u002Findex",[858],{"title":854,"path":855,"stem":856},{"title":860,"path":861,"stem":862,"children":863,"icon":108},"Build your own reporting store","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Findex",[864,865,871,877,883],{"title":860,"path":861,"stem":862,"icon":108},{"title":866,"path":867,"stem":868,"children":869},"Backfill","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fbackfill","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fbackfill\u002Findex",[870],{"title":866,"path":867,"stem":868},{"title":872,"path":873,"stem":874,"children":875},"Incremental sync","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fincremental-sync","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fincremental-sync\u002Findex",[876],{"title":872,"path":873,"stem":874},{"title":878,"path":879,"stem":880,"children":881},"Modelling","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fmodelling","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fmodelling\u002Findex",[882],{"title":878,"path":879,"stem":880},{"title":884,"path":885,"stem":886,"children":887},"Pull versus push","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fpull-vs-push","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fpull-vs-push\u002Findex",[888],{"title":884,"path":885,"stem":886},{"title":890,"path":891,"stem":892,"children":893,"icon":754},"What the tenant sees","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Findex",[894,895,901,907],{"title":890,"path":891,"stem":892,"icon":754},{"title":896,"path":897,"stem":898,"children":899},"Cohorts","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fcohorts","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fcohorts\u002Findex",[900],{"title":896,"path":897,"stem":898},{"title":902,"path":903,"stem":904,"children":905},"Datasets and charts","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fdatasets-and-charts","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fdatasets-and-charts\u002Findex",[906],{"title":902,"path":903,"stem":904},{"title":908,"path":909,"stem":910,"children":911},"Studio overview","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fstudio-overview","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fstudio-overview\u002Findex",[912],{"title":908,"path":909,"stem":910},{"title":914,"path":915,"stem":916,"children":917},"App Studio","\u002Fdocs\u002Fstudios\u002Fapps","docs\u002Fstudios\u002Fapps\u002Findex",[918,919,955,1025,1096,1114,1180],{"title":914,"path":915,"stem":916},{"title":920,"path":921,"stem":922,"children":923,"icon":101},"Admin UI","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Findex",[924,925,931,937,943,949],{"title":920,"path":921,"stem":922,"icon":101},{"title":926,"path":927,"stem":928,"children":929},"How the Cockpit renders","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fhow-cockpit-renders","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fhow-cockpit-renders\u002Findex",[930],{"title":926,"path":927,"stem":928},{"title":932,"path":933,"stem":934,"children":935},"Preview locally","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fpreview-locally","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fpreview-locally\u002Findex",[936],{"title":932,"path":933,"stem":934},{"title":938,"path":939,"stem":940,"children":941},"Reading settings","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Freading-settings","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Freading-settings\u002Findex",[942],{"title":938,"path":939,"stem":940},{"title":944,"path":945,"stem":946,"children":947},"Settings","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fsettings","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fsettings\u002Findex",[948],{"title":944,"path":945,"stem":946},{"title":950,"path":951,"stem":952,"children":953},"Vocabularies","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fvocabularies","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fvocabularies\u002Findex",[954],{"title":950,"path":951,"stem":952},{"title":956,"path":957,"stem":958,"children":959,"icon":343},"Your app's API","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi","docs\u002Fstudios\u002Fapps\u002Fapi\u002Findex",[960,961,966,972,978,984,990,995,1001,1007,1013,1019],{"title":956,"path":957,"stem":958,"icon":343},{"title":623,"path":962,"stem":963,"children":964},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcaching","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcaching\u002Findex",[965],{"title":623,"path":962,"stem":963},{"title":967,"path":968,"stem":969,"children":970},"Calling another app","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcalling-another-app","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcalling-another-app\u002Findex",[971],{"title":967,"path":968,"stem":969},{"title":973,"path":974,"stem":975,"children":976},"Capabilities","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapabilities","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapabilities\u002Findex",[977],{"title":973,"path":974,"stem":975},{"title":979,"path":980,"stem":981,"children":982},"Capability reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapability-reference","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapability-reference\u002Findex",[983],{"title":979,"path":980,"stem":981},{"title":985,"path":986,"stem":987,"children":988},"CRUD","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcrud","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcrud\u002Findex",[989],{"title":985,"path":986,"stem":987},{"title":513,"path":991,"stem":992,"children":993},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Ferrors","docs\u002Fstudios\u002Fapps\u002Fapi\u002Ferrors\u002Findex",[994],{"title":513,"path":991,"stem":992},{"title":996,"path":997,"stem":998,"children":999},"Overriding a capability","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Foverriding-a-capability","docs\u002Fstudios\u002Fapps\u002Fapi\u002Foverriding-a-capability\u002Findex",[1000],{"title":996,"path":997,"stem":998},{"title":1002,"path":1003,"stem":1004,"children":1005},"Pagination and filtering","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fpagination-and-filtering","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fpagination-and-filtering\u002Findex",[1006],{"title":1002,"path":1003,"stem":1004},{"title":1008,"path":1009,"stem":1010,"children":1011},"Published OpenAPI","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fpublished-openapi","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fpublished-openapi\u002Findex",[1012],{"title":1008,"path":1009,"stem":1010},{"title":1014,"path":1015,"stem":1016,"children":1017},"The router","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Frouter","docs\u002Fstudios\u002Fapps\u002Fapi\u002Frouter\u002Findex",[1018],{"title":1014,"path":1015,"stem":1016},{"title":1020,"path":1021,"stem":1022,"children":1023},"Tags","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Ftags","docs\u002Fstudios\u002Fapps\u002Fapi\u002Ftags\u002Findex",[1024],{"title":1020,"path":1021,"stem":1022},{"title":1026,"path":1027,"stem":1028,"children":1029,"icon":108},"Data model","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Findex",[1030,1031,1037,1043,1049,1055,1061,1067,1073,1079,1085,1090],{"title":1026,"path":1027,"stem":1028,"icon":108},{"title":1032,"path":1033,"stem":1034,"children":1035},"Adapters","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fadapters","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fadapters\u002Findex",[1036],{"title":1032,"path":1033,"stem":1034},{"title":1038,"path":1039,"stem":1040,"children":1041},"Column types","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcolumn-types","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcolumn-types\u002Findex",[1042],{"title":1038,"path":1039,"stem":1040},{"title":1044,"path":1045,"stem":1046,"children":1047},"Cross-app lookups","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcross-app-lookups","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcross-app-lookups\u002Findex",[1048],{"title":1044,"path":1045,"stem":1046},{"title":1050,"path":1051,"stem":1052,"children":1053},"Migrations","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fmigrations","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fmigrations\u002Findex",[1054],{"title":1050,"path":1051,"stem":1052},{"title":1056,"path":1057,"stem":1058,"children":1059},"Projections","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fprojections","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fprojections\u002Findex",[1060],{"title":1056,"path":1057,"stem":1058},{"title":1062,"path":1063,"stem":1064,"children":1065},"Relationships","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Frelationships","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Frelationships\u002Findex",[1066],{"title":1062,"path":1063,"stem":1064},{"title":1068,"path":1069,"stem":1070,"children":1071},"Schema reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fschema-reference","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fschema-reference\u002Findex",[1072],{"title":1068,"path":1069,"stem":1070},{"title":1074,"path":1075,"stem":1076,"children":1077},"Scoping","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fscoping","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fscoping\u002Findex",[1078],{"title":1074,"path":1075,"stem":1076},{"title":1080,"path":1081,"stem":1082,"children":1083},"search.json reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fsearch-json","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fsearch-json\u002Findex",[1084],{"title":1080,"path":1081,"stem":1082},{"title":787,"path":1086,"stem":1087,"children":1088},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftenant-isolation","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftenant-isolation\u002Findex",[1089],{"title":787,"path":1086,"stem":1087},{"title":1091,"path":1092,"stem":1093,"children":1094},"The typed client","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftyped-client","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftyped-client\u002Findex",[1095],{"title":1091,"path":1092,"stem":1093},{"title":1097,"path":1098,"stem":1099,"children":1100},"Getting started","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Findex",[1101,1102,1108],{"title":1097,"path":1098,"stem":1099},{"title":1103,"path":1104,"stem":1105,"children":1106},"App model","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fapp-model","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fapp-model\u002Findex",[1107],{"title":1103,"path":1104,"stem":1105},{"title":1109,"path":1110,"stem":1111,"children":1112},"App isolation","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fisolation","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fisolation\u002Findex",[1113],{"title":1109,"path":1110,"stem":1111},{"title":1115,"path":1116,"stem":1117,"children":1118,"icon":185},"Platform services","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Findex",[1119,1120,1126,1132,1138,1144,1150,1156,1162,1168,1174],{"title":1115,"path":1116,"stem":1117,"icon":185},{"title":1121,"path":1122,"stem":1123,"children":1124},"Entity access","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fentity-access","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fentity-access\u002Findex",[1125],{"title":1121,"path":1122,"stem":1123},{"title":1127,"path":1128,"stem":1129,"children":1130},"Events you emit","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-emit","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-emit\u002Findex",[1131],{"title":1127,"path":1128,"stem":1129},{"title":1133,"path":1134,"stem":1135,"children":1136},"Events you receive","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-receive","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-receive\u002Findex",[1137],{"title":1133,"path":1134,"stem":1135},{"title":1139,"path":1140,"stem":1141,"children":1142},"Not yet proven","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fnot-yet-proven","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fnot-yet-proven\u002Findex",[1143],{"title":1139,"path":1140,"stem":1141},{"title":1145,"path":1146,"stem":1147,"children":1148},"Outbound HTTP","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Foutbound-http","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Foutbound-http\u002Findex",[1149],{"title":1145,"path":1146,"stem":1147},{"title":1151,"path":1152,"stem":1153,"children":1154},"Permissions","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fpermissions","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fpermissions\u002Findex",[1155],{"title":1151,"path":1152,"stem":1153},{"title":1157,"path":1158,"stem":1159,"children":1160},"Person permissions","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fperson-permissions","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fperson-permissions\u002Findex",[1161],{"title":1157,"path":1158,"stem":1159},{"title":1163,"path":1164,"stem":1165,"children":1166},"Scheduled work","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fscheduled-work","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fscheduled-work\u002Findex",[1167],{"title":1163,"path":1164,"stem":1165},{"title":1169,"path":1170,"stem":1171,"children":1172},"Tenant identity","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftenant-identity","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftenant-identity\u002Findex",[1173],{"title":1169,"path":1170,"stem":1171},{"title":1175,"path":1176,"stem":1177,"children":1178},"Tracing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftracing","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftracing\u002Findex",[1179],{"title":1175,"path":1176,"stem":1177},{"title":1181,"path":1182,"stem":1183,"children":1184,"icon":1186},"Ship and operate","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Findex",[1185,1187,1193,1199,1205,1211,1217,1223,1229,1235,1241,1247,1253,1259],{"title":1181,"path":1182,"stem":1183,"icon":1186},"i-lucide-rocket",{"title":1188,"path":1189,"stem":1190,"children":1191},"Billing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling\u002Findex",[1192],{"title":1188,"path":1189,"stem":1190},{"title":1194,"path":1195,"stem":1196,"children":1197},"Consent","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fconsent","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fconsent\u002Findex",[1198],{"title":1194,"path":1195,"stem":1196},{"title":1200,"path":1201,"stem":1202,"children":1203},"Dependencies","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdependencies","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdependencies\u002Findex",[1204],{"title":1200,"path":1201,"stem":1202},{"title":1206,"path":1207,"stem":1208,"children":1209},"Deploying","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdeploying","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdeploying\u002Findex",[1210],{"title":1206,"path":1207,"stem":1208},{"title":1212,"path":1213,"stem":1214,"children":1215},"Manifest reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fmanifest-reference","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fmanifest-reference\u002Findex",[1216],{"title":1212,"path":1213,"stem":1214},{"title":1218,"path":1219,"stem":1220,"children":1221},"Operating","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Foperating","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Foperating\u002Findex",[1222],{"title":1218,"path":1219,"stem":1220},{"title":1224,"path":1225,"stem":1226,"children":1227},"Pairing a frontend","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpairing-a-frontend","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpairing-a-frontend\u002Findex",[1228],{"title":1224,"path":1225,"stem":1226},{"title":1230,"path":1231,"stem":1232,"children":1233},"Private or Marketplace","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fprivate-vs-marketplace","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fprivate-vs-marketplace\u002Findex",[1234],{"title":1230,"path":1231,"stem":1232},{"title":1236,"path":1237,"stem":1238,"children":1239},"Publish and install","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpublish-and-install","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpublish-and-install\u002Findex",[1240],{"title":1236,"path":1237,"stem":1238},{"title":1242,"path":1243,"stem":1244,"children":1245},"Testing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Ftesting","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Ftesting\u002Findex",[1246],{"title":1242,"path":1243,"stem":1244},{"title":1248,"path":1249,"stem":1250,"children":1251},"Validate","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fvalidate","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fvalidate\u002Findex",[1252],{"title":1248,"path":1249,"stem":1250},{"title":1254,"path":1255,"stem":1256,"children":1257},"Verifying live","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fverifying-live","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fverifying-live\u002Findex",[1258],{"title":1254,"path":1255,"stem":1256},{"title":489,"path":1260,"stem":1261,"children":1262},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fversioning","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fversioning\u002Findex",[1263],{"title":489,"path":1260,"stem":1261},{"title":1265,"path":1266,"stem":1267,"children":1268,"icon":1270},"Commerce Studio","\u002Fdocs\u002Fstudios\u002Fcommerce","docs\u002Fstudios\u002Fcommerce\u002Findex",[1269,1271,1343,1403,1452,1457,1510,1564],{"title":1265,"path":1266,"stem":1267,"icon":1270},"i-lucide-shopping-bag",{"title":1272,"path":1273,"stem":1274,"children":1275,"icon":1277},"Build an app","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Findex",[1276,1278,1284,1290,1296,1302,1308,1314,1320,1326,1332,1337],{"title":1272,"path":1273,"stem":1274,"icon":1277},"i-lucide-puzzle",{"title":1279,"path":1280,"stem":1281,"children":1282},"Actions and writes","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Factions-and-writes","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Factions-and-writes\u002Findex",[1283],{"title":1279,"path":1280,"stem":1281},{"title":1285,"path":1286,"stem":1287,"children":1288},"cockpit.json reference","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fcockpit-json-reference","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fcockpit-json-reference\u002Findex",[1289],{"title":1285,"path":1286,"stem":1287},{"title":1291,"path":1292,"stem":1293,"children":1294},"Detail views","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fdetail-views","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fdetail-views\u002Findex",[1295],{"title":1291,"path":1292,"stem":1293},{"title":1297,"path":1298,"stem":1299,"children":1300},"Forms","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fforms","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fforms\u002Findex",[1301],{"title":1297,"path":1298,"stem":1299},{"title":1303,"path":1304,"stem":1305,"children":1306},"From manifest to installed","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Ffrom-manifest-to-installed","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Ffrom-manifest-to-installed\u002Findex",[1307],{"title":1303,"path":1304,"stem":1305},{"title":1309,"path":1310,"stem":1311,"children":1312},"How it renders","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fhow-it-renders","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fhow-it-renders\u002Findex",[1313],{"title":1309,"path":1310,"stem":1311},{"title":1315,"path":1316,"stem":1317,"children":1318},"List views","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Flist-views","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Flist-views\u002Findex",[1319],{"title":1315,"path":1316,"stem":1317},{"title":1321,"path":1322,"stem":1323,"children":1324},"Navigation","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fnavigation","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fnavigation\u002Findex",[1325],{"title":1321,"path":1322,"stem":1323},{"title":1327,"path":1328,"stem":1329,"children":1330},"Permissions and scope","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpermissions-and-scope","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpermissions-and-scope\u002Findex",[1331],{"title":1327,"path":1328,"stem":1329},{"title":932,"path":1333,"stem":1334,"children":1335},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpreview-locally","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpreview-locally\u002Findex",[1336],{"title":932,"path":1333,"stem":1334},{"title":1338,"path":1339,"stem":1340,"children":1341},"Widgets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fwidgets","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fwidgets\u002Findex",[1342],{"title":1338,"path":1339,"stem":1340},{"title":1344,"path":1345,"stem":1346,"children":1347,"icon":1349},"Catalog","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Findex",[1348,1350,1356,1362,1368,1374,1379,1385,1391,1397],{"title":1344,"path":1345,"stem":1346,"icon":1349},"i-lucide-package",{"title":1351,"path":1352,"stem":1353,"children":1354},"Assets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassets","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassets\u002Findex",[1355],{"title":1351,"path":1352,"stem":1353},{"title":1357,"path":1358,"stem":1359,"children":1360},"Associations","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassociations","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassociations\u002Findex",[1361],{"title":1357,"path":1358,"stem":1359},{"title":1363,"path":1364,"stem":1365,"children":1366},"Categories","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcategories","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcategories\u002Findex",[1367],{"title":1363,"path":1364,"stem":1365},{"title":1369,"path":1370,"stem":1371,"children":1372},"Completeness","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcompleteness","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcompleteness\u002Findex",[1373],{"title":1369,"path":1370,"stem":1371},{"title":1026,"path":1375,"stem":1376,"children":1377},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fdata-model","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fdata-model\u002Findex",[1378],{"title":1026,"path":1375,"stem":1376},{"title":1380,"path":1381,"stem":1382,"children":1383},"Import and export","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fimport-and-export","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fimport-and-export\u002Findex",[1384],{"title":1380,"path":1381,"stem":1382},{"title":1386,"path":1387,"stem":1388,"children":1389},"Languages and locale codes","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Flanguages-and-locale-codes","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Flanguages-and-locale-codes\u002Findex",[1390],{"title":1386,"path":1387,"stem":1388},{"title":1392,"path":1393,"stem":1394,"children":1395},"Products","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fproducts","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fproducts\u002Findex",[1396],{"title":1392,"path":1393,"stem":1394},{"title":1398,"path":1399,"stem":1400,"children":1401},"References","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Freferences","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Freferences\u002Findex",[1402],{"title":1398,"path":1399,"stem":1400},{"title":1404,"path":1405,"stem":1406,"children":1407,"icon":1409},"Customers","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Findex",[1408,1410,1416,1422,1428,1434,1440,1446],{"title":1404,"path":1405,"stem":1406,"icon":1409},"i-lucide-building-2",{"title":1411,"path":1412,"stem":1413,"children":1414},"Contacts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fcontacts","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fcontacts\u002Findex",[1415],{"title":1411,"path":1412,"stem":1413},{"title":1417,"path":1418,"stem":1419,"children":1420},"Organizations","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Forganizations","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Forganizations\u002Findex",[1421],{"title":1417,"path":1418,"stem":1419},{"title":1423,"path":1424,"stem":1425,"children":1426},"Roles and permissions","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Froles-and-permissions","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Froles-and-permissions\u002Findex",[1427],{"title":1423,"path":1424,"stem":1425},{"title":1429,"path":1430,"stem":1431,"children":1432},"Sales reps","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsales-reps","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsales-reps\u002Findex",[1433],{"title":1429,"path":1430,"stem":1431},{"title":1435,"path":1436,"stem":1437,"children":1438},"Segments","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsegments","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsegments\u002Findex",[1439],{"title":1435,"path":1436,"stem":1437},{"title":1441,"path":1442,"stem":1443,"children":1444},"Storefront accounts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fstorefront-accounts","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fstorefront-accounts\u002Findex",[1445],{"title":1441,"path":1442,"stem":1443},{"title":1447,"path":1448,"stem":1449,"children":1450},"Value lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fvalue-lists","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fvalue-lists\u002Findex",[1451],{"title":1447,"path":1448,"stem":1449},{"title":1097,"path":1453,"stem":1454,"children":1455,"icon":1186},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fgetting-started","docs\u002Fstudios\u002Fcommerce\u002Fgetting-started\u002Findex",[1456],{"title":1097,"path":1453,"stem":1454,"icon":1186},{"title":1458,"path":1459,"stem":1460,"children":1461,"icon":615},"Markets and pricing","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Findex",[1462,1463,1469,1475,1481,1487,1493,1499,1504],{"title":1458,"path":1459,"stem":1460,"icon":615},{"title":1464,"path":1465,"stem":1466,"children":1467},"Carriers and tracking","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fcarriers-and-tracking","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fcarriers-and-tracking\u002Findex",[1468],{"title":1464,"path":1465,"stem":1466},{"title":1470,"path":1471,"stem":1472,"children":1473},"Channels","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fchannels","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fchannels\u002Findex",[1474],{"title":1470,"path":1471,"stem":1472},{"title":1476,"path":1477,"stem":1478,"children":1479},"Markets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fmarkets","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fmarkets\u002Findex",[1480],{"title":1476,"path":1477,"stem":1478},{"title":1482,"path":1483,"stem":1484,"children":1485},"Payment lifecycle","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-lifecycle","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-lifecycle\u002Findex",[1486],{"title":1482,"path":1483,"stem":1484},{"title":1488,"path":1489,"stem":1490,"children":1491},"Payment methods","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-methods","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-methods\u002Findex",[1492],{"title":1488,"path":1489,"stem":1490},{"title":1494,"path":1495,"stem":1496,"children":1497},"Price lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fprice-lists","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fprice-lists\u002Findex",[1498],{"title":1494,"path":1495,"stem":1496},{"title":944,"path":1500,"stem":1501,"children":1502},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fsettings","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fsettings\u002Findex",[1503],{"title":944,"path":1500,"stem":1501},{"title":1505,"path":1506,"stem":1507,"children":1508},"Shipping rates","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fshipping-rates","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fshipping-rates\u002Findex",[1509],{"title":1505,"path":1506,"stem":1507},{"title":1511,"path":1512,"stem":1513,"children":1514,"icon":1516},"Orders","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Findex",[1515,1517,1523,1529,1535,1541,1547,1552,1558],{"title":1511,"path":1512,"stem":1513,"icon":1516},"i-lucide-receipt-text",{"title":1518,"path":1519,"stem":1520,"children":1521},"Carts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts\u002Findex",[1522],{"title":1518,"path":1519,"stem":1520},{"title":1524,"path":1525,"stem":1526,"children":1527},"Documents","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fdocuments","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fdocuments\u002Findex",[1528],{"title":1524,"path":1525,"stem":1526},{"title":1530,"path":1531,"stem":1532,"children":1533},"Events and comments","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fevents-and-comments","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fevents-and-comments\u002Findex",[1534],{"title":1530,"path":1531,"stem":1532},{"title":1536,"path":1537,"stem":1538,"children":1539},"Number ranges","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fnumber-ranges","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fnumber-ranges\u002Findex",[1540],{"title":1536,"path":1537,"stem":1538},{"title":1542,"path":1543,"stem":1544,"children":1545},"Order lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Forder-lists","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Forder-lists\u002Findex",[1546],{"title":1542,"path":1543,"stem":1544},{"title":1511,"path":1548,"stem":1549,"children":1550},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Forders","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Forders\u002Findex",[1551],{"title":1511,"path":1548,"stem":1549},{"title":1553,"path":1554,"stem":1555,"children":1556},"Returns","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Freturns","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Freturns\u002Findex",[1557],{"title":1553,"path":1554,"stem":1555},{"title":1559,"path":1560,"stem":1561,"children":1562},"Stock","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fstock","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fstock\u002Findex",[1563],{"title":1559,"path":1560,"stem":1561},{"title":1565,"path":1566,"stem":1567,"children":1568,"icon":1570},"Procurement","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement","docs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Findex",[1569,1571,1577],{"title":1565,"path":1566,"stem":1567,"icon":1570},"i-lucide-clipboard-check",{"title":1572,"path":1573,"stem":1574,"children":1575},"Cost centers","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fcost-centers","docs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fcost-centers\u002Findex",[1576],{"title":1572,"path":1573,"stem":1574},{"title":1578,"path":1579,"stem":1580,"children":1581,"icon":29},"Punchout","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fpunchout","docs\u002Fstudios\u002Fcommerce\u002Fprocurement\u002Fpunchout\u002Findex",[1582],{"title":1578,"path":1579,"stem":1580,"icon":29},{"title":1584,"path":1585,"stem":1586,"children":1587},"Integration Studio","\u002Fdocs\u002Fstudios\u002Fintegration-studio","docs\u002Fstudios\u002Fintegration-studio\u002Findex",[1588,1589,1626,1663,1693,1698,1728],{"title":1584,"path":1585,"stem":1586},{"title":1590,"path":1591,"stem":1592,"children":1593,"icon":1595},"Build the workflow","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Findex",[1594,1596,1602,1608,1614,1620],{"title":1590,"path":1591,"stem":1592,"icon":1595},"i-lucide-workflow",{"title":1597,"path":1598,"stem":1599,"children":1600},"Expressions","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fexpressions","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fexpressions\u002Findex",[1601],{"title":1597,"path":1598,"stem":1599},{"title":1603,"path":1604,"stem":1605,"children":1606},"Node catalog","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-catalog","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-catalog\u002Findex",[1607],{"title":1603,"path":1604,"stem":1605},{"title":1609,"path":1610,"stem":1611,"children":1612},"Node configuration","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-configuration","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-configuration\u002Findex",[1613],{"title":1609,"path":1610,"stem":1611},{"title":1615,"path":1616,"stem":1617,"children":1618},"Templates","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Ftemplates","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Ftemplates\u002Findex",[1619],{"title":1615,"path":1616,"stem":1617},{"title":1621,"path":1622,"stem":1623,"children":1624},"The workflow document","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fworkflow-model","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fworkflow-model\u002Findex",[1625],{"title":1621,"path":1622,"stem":1623},{"title":1627,"path":1628,"stem":1629,"children":1630,"icon":1632},"Connect the systems","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Findex",[1631,1633,1639,1645,1651,1657],{"title":1627,"path":1628,"stem":1629,"icon":1632},"i-lucide-key-round",{"title":1634,"path":1635,"stem":1636,"children":1637},"Credentials","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fcredentials","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fcredentials\u002Findex",[1638],{"title":1634,"path":1635,"stem":1636},{"title":1640,"path":1641,"stem":1642,"children":1643},"File transfer","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Ffiles","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Ffiles\u002Findex",[1644],{"title":1640,"path":1641,"stem":1642},{"title":1646,"path":1647,"stem":1648,"children":1649},"OAuth","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Foauth","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Foauth\u002Findex",[1650],{"title":1646,"path":1647,"stem":1648},{"title":1652,"path":1653,"stem":1654,"children":1655},"Reaching Revenue Cloud","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Freaching-revenue-cloud","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Freaching-revenue-cloud\u002Findex",[1656],{"title":1652,"path":1653,"stem":1654},{"title":1658,"path":1659,"stem":1660,"children":1661},"Secrets","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fsecrets","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fsecrets\u002Findex",[1662],{"title":1658,"path":1659,"stem":1660},{"title":1664,"path":1665,"stem":1666,"children":1667,"icon":1349},"Extend the Studio","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Findex",[1668,1669,1675,1681,1687],{"title":1664,"path":1665,"stem":1666,"icon":1349},{"title":1670,"path":1671,"stem":1672,"children":1673},"Custom nodes","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fcustom-nodes","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fcustom-nodes\u002Findex",[1674],{"title":1670,"path":1671,"stem":1672},{"title":1676,"path":1677,"stem":1678,"children":1679},"Dynamic behaviour","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fdynamic-behaviour","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fdynamic-behaviour\u002Findex",[1680],{"title":1676,"path":1677,"stem":1678},{"title":1682,"path":1683,"stem":1684,"children":1685},"Package manifest","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fpackage-manifest","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fpackage-manifest\u002Findex",[1686],{"title":1682,"path":1683,"stem":1684},{"title":1688,"path":1689,"stem":1690,"children":1691},"Registration","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fregistration","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fregistration\u002Findex",[1692],{"title":1688,"path":1689,"stem":1690},{"title":1097,"path":1694,"stem":1695,"children":1696,"icon":1186},"\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fgetting-started","docs\u002Fstudios\u002Fintegration-studio\u002Fgetting-started\u002Findex",[1697],{"title":1097,"path":1694,"stem":1695,"icon":1186},{"title":1699,"path":1700,"stem":1701,"children":1702,"icon":316},"Run, watch, recover","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Findex",[1703,1704,1710,1716,1722],{"title":1699,"path":1700,"stem":1701,"icon":316},{"title":1705,"path":1706,"stem":1707,"children":1708},"Missed runs","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fdead-letters","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fdead-letters\u002Findex",[1709],{"title":1705,"path":1706,"stem":1707},{"title":1711,"path":1712,"stem":1713,"children":1714},"Failure handling","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Ffailure-handling","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Ffailure-handling\u002Findex",[1715],{"title":1711,"path":1712,"stem":1713},{"title":1717,"path":1718,"stem":1719,"children":1720},"Revisions and audit","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Frevisions-and-audit","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Frevisions-and-audit\u002Findex",[1721],{"title":1717,"path":1718,"stem":1719},{"title":1723,"path":1724,"stem":1725,"children":1726},"Runs","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fruns","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fruns\u002Findex",[1727],{"title":1723,"path":1724,"stem":1725},{"title":1729,"path":1730,"stem":1731,"children":1732,"icon":1734},"Start the workflow","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Findex",[1733,1735,1741,1747,1753,1759],{"title":1729,"path":1730,"stem":1731,"icon":1734},"i-lucide-zap",{"title":1736,"path":1737,"stem":1738,"children":1739},"Event triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fevent-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fevent-triggers\u002Findex",[1740],{"title":1736,"path":1737,"stem":1738},{"title":1742,"path":1743,"stem":1744,"children":1745},"Execution modes","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fexecution-modes","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fexecution-modes\u002Findex",[1746],{"title":1742,"path":1743,"stem":1744},{"title":1748,"path":1749,"stem":1750,"children":1751},"Schedule triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fschedule-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fschedule-triggers\u002Findex",[1752],{"title":1748,"path":1749,"stem":1750},{"title":1754,"path":1755,"stem":1756,"children":1757},"Triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Ftriggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Ftriggers\u002Findex",[1758],{"title":1754,"path":1755,"stem":1756},{"title":1760,"path":1761,"stem":1762,"children":1763},"Webhook triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fwebhook-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fwebhook-triggers\u002Findex",[1764],{"title":1760,"path":1761,"stem":1762},{"title":1766,"path":1767,"stem":1768,"children":1769},"Experience Studio","\u002Fdocs\u002Fstudios\u002Fsites","docs\u002Fstudios\u002Fsites\u002Findex",[1770,1771,1819,1871,1997,2003,2045],{"title":1766,"path":1767,"stem":1768},{"title":1772,"path":1773,"stem":1774,"children":1775,"icon":418},"Compose pages","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Findex",[1776,1777,1783,1789,1795,1801,1807,1813],{"title":1772,"path":1773,"stem":1774,"icon":418},{"title":1778,"path":1779,"stem":1780,"children":1781},"Block catalog","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-catalog","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-catalog\u002Findex",[1782],{"title":1778,"path":1779,"stem":1780},{"title":1784,"path":1785,"stem":1786,"children":1787},"Block options","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-options","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-options\u002Findex",[1788],{"title":1784,"path":1785,"stem":1786},{"title":1790,"path":1791,"stem":1792,"children":1793},"How a block works","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fhow-a-block-works","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fhow-a-block-works\u002Findex",[1794],{"title":1790,"path":1791,"stem":1792},{"title":1796,"path":1797,"stem":1798,"children":1799},"Inline editing","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Finline-editing","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Finline-editing\u002Findex",[1800],{"title":1796,"path":1797,"stem":1798},{"title":1802,"path":1803,"stem":1804,"children":1805},"Reading published pages","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Freading-pages","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Freading-pages\u002Findex",[1806],{"title":1802,"path":1803,"stem":1804},{"title":1808,"path":1809,"stem":1810,"children":1811},"Registering blocks","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fregistering","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fregistering\u002Findex",[1812],{"title":1808,"path":1809,"stem":1810},{"title":1814,"path":1815,"stem":1816,"children":1817},"Shells and fields","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fshells-and-fields","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fshells-and-fields\u002Findex",[1818],{"title":1814,"path":1815,"stem":1816},{"title":1820,"path":1821,"stem":1822,"children":1823,"icon":262},"Connect data","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata","docs\u002Fstudios\u002Fsites\u002Fdata\u002Findex",[1824,1825,1830,1836,1842,1847,1853,1859,1865],{"title":1820,"path":1821,"stem":1822,"icon":262},{"title":550,"path":1826,"stem":1827,"children":1828},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fauthentication","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fauthentication\u002Findex",[1829],{"title":550,"path":1826,"stem":1827},{"title":1831,"path":1832,"stem":1833,"children":1834},"The BFF pattern","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fbff-pattern","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fbff-pattern\u002Findex",[1835],{"title":1831,"path":1832,"stem":1833},{"title":1837,"path":1838,"stem":1839,"children":1840},"Catalog, cart, checkout","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fcatalog-cart-checkout","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fcatalog-cart-checkout\u002Findex",[1841],{"title":1837,"path":1838,"stem":1839},{"title":1297,"path":1843,"stem":1844,"children":1845},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fforms","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fforms\u002Findex",[1846],{"title":1297,"path":1843,"stem":1844},{"title":1848,"path":1849,"stem":1850,"children":1851},"Media and assets","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fmedia","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fmedia\u002Findex",[1852],{"title":1848,"path":1849,"stem":1850},{"title":1854,"path":1855,"stem":1856,"children":1857},"Multi-tenant themes","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fmulti-tenant-themes","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fmulti-tenant-themes\u002Findex",[1858],{"title":1854,"path":1855,"stem":1856},{"title":1860,"path":1861,"stem":1862,"children":1863},"Search collections","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch-collections","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch-collections\u002Findex",[1864],{"title":1860,"path":1861,"stem":1862},{"title":1866,"path":1867,"stem":1868,"children":1869},"Search","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch\u002Findex",[1870],{"title":1866,"path":1867,"stem":1868},{"title":1872,"path":1873,"stem":1874,"children":1875,"icon":1186},"Build and deploy","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Findex",[1876,1877,1883,1889,1895,1901,1907,1913,1991],{"title":1872,"path":1873,"stem":1874,"icon":1186},{"title":1878,"path":1879,"stem":1880,"children":1881},"Build configuration","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fbuild-configuration","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fbuild-configuration\u002Findex",[1882],{"title":1878,"path":1879,"stem":1880},{"title":1884,"path":1885,"stem":1886,"children":1887},"Compute specifications","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fcompute-specifications","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fcompute-specifications\u002Findex",[1888],{"title":1884,"path":1885,"stem":1886},{"title":1890,"path":1891,"stem":1892,"children":1893},"Environment variables","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fenvironment-variables","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fenvironment-variables\u002Findex",[1894],{"title":1890,"path":1891,"stem":1892},{"title":1896,"path":1897,"stem":1898,"children":1899},"From Git","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-git","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-git\u002Findex",[1900],{"title":1896,"path":1897,"stem":1898},{"title":1902,"path":1903,"stem":1904,"children":1905},"From the CLI","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-the-cli","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-the-cli\u002Findex",[1906],{"title":1902,"path":1903,"stem":1904},{"title":1908,"path":1909,"stem":1910,"children":1911},"Manually","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fmanually","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fmanually\u002Findex",[1912],{"title":1908,"path":1909,"stem":1910},{"title":1914,"path":1915,"stem":1916,"children":1917},"Quick-starts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Findex",[1918,1919,1925,1931,1937,1943,1949,1955,1961,1967,1973,1979,1985],{"title":1914,"path":1915,"stem":1916},{"title":1920,"path":1921,"stem":1922,"children":1923},"Deploy an Angular app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fangular","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fangular\u002Findex",[1924],{"title":1920,"path":1921,"stem":1922},{"title":1926,"path":1927,"stem":1928,"children":1929},"Deploy a Astro app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fastro","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fastro\u002Findex",[1930],{"title":1926,"path":1927,"stem":1928},{"title":1932,"path":1933,"stem":1934,"children":1935},"Deploy a Flutter Web app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fflutter","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fflutter\u002Findex",[1936],{"title":1932,"path":1933,"stem":1934},{"title":1938,"path":1939,"stem":1940,"children":1941},"Deploy a Next.js app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnextjs","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnextjs\u002Findex",[1942],{"title":1938,"path":1939,"stem":1940},{"title":1944,"path":1945,"stem":1946,"children":1947},"Deploy a Nuxt app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnuxt","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnuxt\u002Findex",[1948],{"title":1944,"path":1945,"stem":1946},{"title":1950,"path":1951,"stem":1952,"children":1953},"Deploy a React Native app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact-native","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact-native\u002Findex",[1954],{"title":1950,"path":1951,"stem":1952},{"title":1956,"path":1957,"stem":1958,"children":1959},"Deploy a React app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact\u002Findex",[1960],{"title":1956,"path":1957,"stem":1958},{"title":1962,"path":1963,"stem":1964,"children":1965},"Deploy a Remix app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fremix","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fremix\u002Findex",[1966],{"title":1962,"path":1963,"stem":1964},{"title":1968,"path":1969,"stem":1970,"children":1971},"Deploy a SvelteKit app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fsveltekit","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fsveltekit\u002Findex",[1972],{"title":1968,"path":1969,"stem":1970},{"title":1974,"path":1975,"stem":1976,"children":1977},"Deploy a TanStack Start app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Ftanstack-start","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Ftanstack-start\u002Findex",[1978],{"title":1974,"path":1975,"stem":1976},{"title":1980,"path":1981,"stem":1982,"children":1983},"Deploy a Vanilla JS app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvanilla","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvanilla\u002Findex",[1984],{"title":1980,"path":1981,"stem":1982},{"title":1986,"path":1987,"stem":1988,"children":1989},"Deploy a Vue.js app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvue","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvue\u002Findex",[1990],{"title":1986,"path":1987,"stem":1988},{"title":1992,"path":1993,"stem":1994,"children":1995},"Starting points","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fstarting-points","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fstarting-points\u002Findex",[1996],{"title":1992,"path":1993,"stem":1994},{"title":1097,"path":1998,"stem":1999,"children":2000,"icon":2002},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fgetting-started","docs\u002Fstudios\u002Fsites\u002Fgetting-started\u002Findex",[2001],{"title":1097,"path":1998,"stem":1999,"icon":2002},"i-lucide-terminal",{"title":2004,"path":2005,"stem":2006,"children":2007,"icon":615},"Production","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Findex",[2008,2009,2015,2021,2027,2033,2039],{"title":2004,"path":2005,"stem":2006,"icon":615},{"title":2010,"path":2011,"stem":2012,"children":2013},"Deployments","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdeployments","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdeployments\u002Findex",[2014],{"title":2010,"path":2011,"stem":2012},{"title":2016,"path":2017,"stem":2018,"children":2019},"Domains","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdomains","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdomains\u002Findex",[2020],{"title":2016,"path":2017,"stem":2018},{"title":2022,"path":2023,"stem":2024,"children":2025},"Instant rollbacks","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Finstant-rollbacks","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Finstant-rollbacks\u002Findex",[2026],{"title":2022,"path":2023,"stem":2024},{"title":2028,"path":2029,"stem":2030,"children":2031},"Logs","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Flogs","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Flogs\u002Findex",[2032],{"title":2028,"path":2029,"stem":2030},{"title":2034,"path":2035,"stem":2036,"children":2037},"Previews","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpreviews","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpreviews\u002Findex",[2038],{"title":2034,"path":2035,"stem":2036},{"title":2040,"path":2041,"stem":2042,"children":2043},"Publishing a theme","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpublishing-a-theme","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpublishing-a-theme\u002Findex",[2044],{"title":2040,"path":2041,"stem":2042},{"title":2046,"path":2047,"stem":2048,"children":2049,"icon":404},"Build the theme","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Findex",[2050,2051,2057,2063,2069,2075,2081,2087,2093,2111],{"title":2046,"path":2047,"stem":2048,"icon":404},{"title":2052,"path":2053,"stem":2054,"children":2055},"Theme anatomy","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fanatomy","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fanatomy\u002Findex",[2056],{"title":2052,"path":2053,"stem":2054},{"title":2058,"path":2059,"stem":2060,"children":2061},"Design tokens","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fdesign-tokens","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fdesign-tokens\u002Findex",[2062],{"title":2058,"path":2059,"stem":2060},{"title":2064,"path":2065,"stem":2066,"children":2067},"Frameworks","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fframeworks","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fframeworks\u002Findex",[2068],{"title":2064,"path":2065,"stem":2066},{"title":2070,"path":2071,"stem":2072,"children":2073},"The layer chain","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Flayer-chain","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Flayer-chain\u002Findex",[2074],{"title":2070,"path":2071,"stem":2072},{"title":2076,"path":2077,"stem":2078,"children":2079},"Local development","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Flocal-development","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Flocal-development\u002Findex",[2080],{"title":2076,"path":2077,"stem":2078},{"title":2082,"path":2083,"stem":2084,"children":2085},"Modules and plugins","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fmodules-and-plugins","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fmodules-and-plugins\u002Findex",[2086],{"title":2082,"path":2083,"stem":2084},{"title":2088,"path":2089,"stem":2090,"children":2091},"Overriding","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Foverriding","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Foverriding\u002Findex",[2092],{"title":2088,"path":2089,"stem":2090},{"title":2094,"path":2095,"stem":2096,"children":2097},"Rendering","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Findex",[2098,2099,2105],{"title":2094,"path":2095,"stem":2096},{"title":2100,"path":2101,"stem":2102,"children":2103},"SSR","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fssr","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fssr\u002Findex",[2104],{"title":2100,"path":2101,"stem":2102},{"title":2106,"path":2107,"stem":2108,"children":2109},"Static","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fstatic","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fstatic\u002Findex",[2110],{"title":2106,"path":2107,"stem":2108},{"title":2112,"path":2113,"stem":2114,"children":2115},"Service modes","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fservice-modes","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fservice-modes\u002Findex",[2116],{"title":2112,"path":2113,"stem":2114},{"title":2118,"path":2119,"stem":2120,"children":2121},"Tools","\u002Fdocs\u002Ftools","docs\u002Ftools\u002Findex",[2122,2123,2130,2345],{"title":2118,"path":2119,"stem":2120},{"title":2124,"path":2125,"stem":2126,"children":2127,"icon":2129},"AI agents","\u002Fdocs\u002Ftools\u002Fai-agents","docs\u002Ftools\u002Fai-agents\u002Findex",[2128],{"title":2124,"path":2125,"stem":2126,"icon":2129},"i-lucide-shield-alert",{"title":2131,"path":2132,"stem":2133,"children":2134},"Command line","\u002Fdocs\u002Ftools\u002Fcommand-line","docs\u002Ftools\u002Fcommand-line\u002Findex",[2135,2136,2142,2147,2153,2159,2165,2171,2177,2183,2303,2309,2315,2321,2327,2333,2339],{"title":2131,"path":2132,"stem":2133},{"title":2137,"path":2138,"stem":2139,"children":2140},"Aliases","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Faliases","docs\u002Ftools\u002Fcommand-line\u002Faliases\u002Findex",[2141],{"title":2137,"path":2138,"stem":2139},{"title":550,"path":2143,"stem":2144,"children":2145},"\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fauthentication","docs\u002Ftools\u002Fcommand-line\u002Fauthentication\u002Findex",[2146],{"title":550,"path":2143,"stem":2144},{"title":2148,"path":2149,"stem":2150,"children":2151},"Commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fcommands","docs\u002Ftools\u002Fcommand-line\u002Fcommands\u002Findex",[2152],{"title":2148,"path":2149,"stem":2150},{"title":2154,"path":2155,"stem":2156,"children":2157},"Global commands reference","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fglobal-commands","docs\u002Ftools\u002Fcommand-line\u002Fglobal-commands\u002Findex",[2158],{"title":2154,"path":2155,"stem":2156},{"title":2160,"path":2161,"stem":2162,"children":2163},"Installation","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Finstallation","docs\u002Ftools\u002Fcommand-line\u002Finstallation\u002Findex",[2164],{"title":2160,"path":2161,"stem":2162},{"title":2166,"path":2167,"stem":2168,"children":2169},"Interactive use","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Finteractive","docs\u002Ftools\u002Fcommand-line\u002Finteractive\u002Findex",[2170],{"title":2166,"path":2167,"stem":2168},{"title":2172,"path":2173,"stem":2174,"children":2175},"Non-interactive use","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fnon-interactive","docs\u002Ftools\u002Fcommand-line\u002Fnon-interactive\u002Findex",[2176],{"title":2172,"path":2173,"stem":2174},{"title":2178,"path":2179,"stem":2180,"children":2181},"Project configuration","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fproject-configuration","docs\u002Ftools\u002Fcommand-line\u002Fproject-configuration\u002Findex",[2182],{"title":2178,"path":2179,"stem":2180},{"title":2184,"path":2185,"stem":2186,"children":2187},"Command reference","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Findex",[2188,2189,2195,2201,2207,2213,2219,2225,2231,2237,2243,2249,2255,2261,2267,2273,2279,2285,2291,2297],{"title":2184,"path":2185,"stem":2186},{"title":2190,"path":2191,"stem":2192,"children":2193},"About commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fabout","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fabout\u002Findex",[2194],{"title":2190,"path":2191,"stem":2192},{"title":2196,"path":2197,"stem":2198,"children":2199},"Apps commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fapps","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fapps\u002Findex",[2200],{"title":2196,"path":2197,"stem":2198},{"title":2202,"path":2203,"stem":2204,"children":2205},"Carts commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts\u002Findex",[2206],{"title":2202,"path":2203,"stem":2204},{"title":2208,"path":2209,"stem":2210,"children":2211},"Channels commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fchannels","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fchannels\u002Findex",[2212],{"title":2208,"path":2209,"stem":2210},{"title":2214,"path":2215,"stem":2216,"children":2217},"Create commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcreate","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcreate\u002Findex",[2218],{"title":2214,"path":2215,"stem":2216},{"title":2220,"path":2221,"stem":2222,"children":2223},"Customers commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Findex",[2224],{"title":2220,"path":2221,"stem":2222},{"title":2226,"path":2227,"stem":2228,"children":2229},"Deploy commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdeploy","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdeploy\u002Findex",[2230],{"title":2226,"path":2227,"stem":2228},{"title":2232,"path":2233,"stem":2234,"children":2235},"Forms commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fforms","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fforms\u002Findex",[2236],{"title":2232,"path":2233,"stem":2234},{"title":2238,"path":2239,"stem":2240,"children":2241},"Markets commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarkets","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarkets\u002Findex",[2242],{"title":2238,"path":2239,"stem":2240},{"title":2244,"path":2245,"stem":2246,"children":2247},"Order lists commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Forderlists","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Forderlists\u002Findex",[2248],{"title":2244,"path":2245,"stem":2246},{"title":2250,"path":2251,"stem":2252,"children":2253},"Orders commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Forders","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Forders\u002Findex",[2254],{"title":2250,"path":2251,"stem":2252},{"title":2256,"path":2257,"stem":2258,"children":2259},"Pages commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages\u002Findex",[2260],{"title":2256,"path":2257,"stem":2258},{"title":2262,"path":2263,"stem":2264,"children":2265},"Prices commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprices","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprices\u002Findex",[2266],{"title":2262,"path":2263,"stem":2264},{"title":2268,"path":2269,"stem":2270,"children":2271},"Products commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Findex",[2272],{"title":2268,"path":2269,"stem":2270},{"title":2274,"path":2275,"stem":2276,"children":2277},"Search commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsearch","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsearch\u002Findex",[2278],{"title":2274,"path":2275,"stem":2276},{"title":2280,"path":2281,"stem":2282,"children":2283},"Settings commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsettings","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsettings\u002Findex",[2284],{"title":2280,"path":2281,"stem":2282},{"title":2286,"path":2287,"stem":2288,"children":2289},"Sites commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsites","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsites\u002Findex",[2290],{"title":2286,"path":2287,"stem":2288},{"title":2292,"path":2293,"stem":2294,"children":2295},"Skills commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fskills","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fskills\u002Findex",[2296],{"title":2292,"path":2293,"stem":2294},{"title":2298,"path":2299,"stem":2300,"children":2301},"Storage commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fstorage","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fstorage\u002Findex",[2302],{"title":2298,"path":2299,"stem":2300},{"title":2304,"path":2305,"stem":2306,"children":2307},"Interactive shell (REPL)","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Frepl","docs\u002Ftools\u002Fcommand-line\u002Frepl\u002Findex",[2308],{"title":2304,"path":2305,"stem":2306},{"title":2310,"path":2311,"stem":2312,"children":2313},"Scaffolding","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fscaffolding","docs\u002Ftools\u002Fcommand-line\u002Fscaffolding\u002Findex",[2314],{"title":2310,"path":2311,"stem":2312},{"title":2316,"path":2317,"stem":2318,"children":2319},"Scripting & output","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fscripting","docs\u002Ftools\u002Fcommand-line\u002Fscripting\u002Findex",[2320],{"title":2316,"path":2317,"stem":2318},{"title":2322,"path":2323,"stem":2324,"children":2325},"Skills","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fskills","docs\u002Ftools\u002Fcommand-line\u002Fskills\u002Findex",[2326],{"title":2322,"path":2323,"stem":2324},{"title":2328,"path":2329,"stem":2330,"children":2331},"Full-screen app (TUI)","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Ftui","docs\u002Ftools\u002Fcommand-line\u002Ftui\u002Findex",[2332],{"title":2328,"path":2329,"stem":2330},{"title":2334,"path":2335,"stem":2336,"children":2337},"Type generation","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Ftype-generation","docs\u002Ftools\u002Fcommand-line\u002Ftype-generation\u002Findex",[2338],{"title":2334,"path":2335,"stem":2336},{"title":2340,"path":2341,"stem":2342,"children":2343},"Background watchers","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fwatch","docs\u002Ftools\u002Fcommand-line\u002Fwatch\u002Findex",[2344],{"title":2340,"path":2341,"stem":2342},{"title":2346,"path":2347,"stem":2348,"children":2349},"Model Context Protocol","\u002Fdocs\u002Ftools\u002Fmcp","docs\u002Ftools\u002Fmcp\u002Findex",[2350,2351,2357,2363,2369,2375,2381,2387,2393],{"title":2346,"path":2347,"stem":2348},{"title":2352,"path":2353,"stem":2354,"children":2355},"revenexx docs MCP in Google Antigravity","\u002Fdocs\u002Ftools\u002Fmcp\u002Fantigravity","docs\u002Ftools\u002Fmcp\u002Fantigravity\u002Findex",[2356],{"title":2352,"path":2353,"stem":2354},{"title":2358,"path":2359,"stem":2360,"children":2361},"revenexx docs MCP in Claude Code","\u002Fdocs\u002Ftools\u002Fmcp\u002Fclaude-code","docs\u002Ftools\u002Fmcp\u002Fclaude-code\u002Findex",[2362],{"title":2358,"path":2359,"stem":2360},{"title":2364,"path":2365,"stem":2366,"children":2367},"revenexx docs MCP in Claude Desktop","\u002Fdocs\u002Ftools\u002Fmcp\u002Fclaude-desktop","docs\u002Ftools\u002Fmcp\u002Fclaude-desktop\u002Findex",[2368],{"title":2364,"path":2365,"stem":2366},{"title":2370,"path":2371,"stem":2372,"children":2373},"revenexx docs MCP in Cursor","\u002Fdocs\u002Ftools\u002Fmcp\u002Fcursor","docs\u002Ftools\u002Fmcp\u002Fcursor\u002Findex",[2374],{"title":2370,"path":2371,"stem":2372},{"title":2376,"path":2377,"stem":2378,"children":2379},"revenexx docs MCP in OpenCode","\u002Fdocs\u002Ftools\u002Fmcp\u002Fopencode","docs\u002Ftools\u002Fmcp\u002Fopencode\u002Findex",[2380],{"title":2376,"path":2377,"stem":2378},{"title":2382,"path":2383,"stem":2384,"children":2385},"revenexx docs MCP in VS Code","\u002Fdocs\u002Ftools\u002Fmcp\u002Fvscode","docs\u002Ftools\u002Fmcp\u002Fvscode\u002Findex",[2386],{"title":2382,"path":2383,"stem":2384},{"title":2388,"path":2389,"stem":2390,"children":2391},"revenexx docs MCP in Windsurf","\u002Fdocs\u002Ftools\u002Fmcp\u002Fwindsurf","docs\u002Ftools\u002Fmcp\u002Fwindsurf\u002Findex",[2392],{"title":2388,"path":2389,"stem":2390},{"title":2394,"path":2395,"stem":2396,"children":2397},"revenexx docs MCP in Zenflow","\u002Fdocs\u002Ftools\u002Fmcp\u002Fzenflow","docs\u002Ftools\u002Fmcp\u002Fzenflow\u002Findex",[2398],{"title":2394,"path":2395,"stem":2396},{"id":2400,"title":297,"body":2401,"description":4943,"extension":4944,"landing":4945,"links":4945,"meta":4946,"navigation":4947,"path":298,"seo":4948,"sitemap":4949,"stem":299,"__hash__":4950},"docs\u002Fdocs\u002Fguides\u002Fintegrations\u002Frecover-abandoned-carts\u002Findex.md",{"type":2402,"value":2403,"toc":4925},"minimark",[2404,2413,2463,2467,2472,2475,2538,2542,2549,2560,2620,2627,2678,2681,2685,2695,2804,2816,2910,2924,2928,2942,3020,3047,3077,3080,3188,3198,3202,3212,3274,3298,3318,3322,3336,3342,3352,3358,3511,3524,3531,3560,3563,3567,3577,3698,3701,3722,3761,3768,3772,3775,3806,3813,3839,3865,3868,3902,3931,3935,3938,3947,4010,4013,4079,4130,4143,4146,4171,4176,4190,4194,4204,4276,4283,4315,4319,4325,4403,4413,4422,4426,4432,4446,4452,4634,4646,4652,4734,4743,4749,4758,4762,4887,4891,4921],[2405,2406,2407,2408,2412],"p",{},"A buyer fills a cart and leaves. Once the cart has sat untouched past your window, the Carts app marks it abandoned and announces it with a ",[2409,2410,2411],"code",{},"cart.abandoned"," event. A cart that is reopened and abandoned again gets a new event. A workflow reads the cart and the buyer, and sends a reminder through your own mail server or CRM. The buyer follows the link into your storefront, and your storefront reopens the cart with its lines as they were. This guide builds the workflow, the storefront's reopen call, and the retention settings that decide whether the cart still exists when the buyer comes back.",[2405,2414,2415,2416,2421,2422,2426,2427,2430,2431,2434,2435,2438,2439,2443,2444,2447,2448,2452,2453,2457,2458,2462],{},"This is for integrators who run a storefront on the platform and want a reminder flow built as a workflow instead of a listener they host. You need a ",[2417,2418,2420],"a",{"href":2419},"\u002Fdocs\u002Fgetting-started\u002Fglossary#tenants-and-data","tenant"," with the Carts app and Integration Studio installed, access to ",[2417,2423,2425],{"href":2424},"\u002Fdocs\u002Fgetting-started\u002Fglossary#product-layers","Cockpit"," (the admin interface at ",[2409,2428,2429],{},"app.revenexx.com",") to change the app's settings and build a workflow, an SMTP server or a CRM with an HTTPS API for the reminder itself, and a storefront whose server side can call the API (see ",[2417,2432,2433],{"href":441},"Sign a buyer in","). The Carts app's scope is ",[2409,2436,2437],{},"carts.*"," (see ",[2417,2440,2442],{"href":2441},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#which-scope-covers-which-app","which scope covers which app","). New to the platform? ",[2417,2445,64],{"href":2446},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#cockpit-and-who-grants-access"," covers Cockpit, your ",[2417,2449,2451],{"href":2450},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#find-your-tenant-slug","tenant slug",", ",[2417,2454,2456],{"href":2455},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#check-and-install-an-app","installing an app"," and a ",[2417,2459,2461],{"href":2460},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#get-a-test-tenant","test tenant",".",[2464,2465,2466],"note",{},"Integration Studio is experimental and its schemas are drafts, so expect a workflow built today to need a migration later. This guide was written from the Carts app's source (version 2.0.0) and the public API. The end-to-end run in step 8 has not been executed against a tenant, and the Carts topics in your tenant's event catalog have not been read from a live tenant (as of 2026-10), so step 2 has you read them yourself.",[2468,2469,2471],"h2",{"id":2470},"what-the-platform-does-and-what-it-leaves-to-you","What the platform does, and what it leaves to you",[2405,2473,2474],{},"The Carts app abandons a cart and says so. It sends nothing to a buyer. Everything after the announcement is yours.",[2476,2477,2478,2490],"table",{},[2479,2480,2481],"thead",{},[2482,2483,2484,2487],"tr",{},[2485,2486],"th",{},[2485,2488,2489],{},"Responsible for",[2491,2492,2493,2508,2518,2528],"tbody",{},[2482,2494,2495,2502],{},[2496,2497,2498],"td",{},[2499,2500,2501],"strong",{},"The platform",[2496,2503,2504,2505,2507],{},"Marking an idle cart abandoned on a 15-minute tick, one ",[2409,2506,2411],{}," event per abandonment, reopening on request, and deleting idle carts only if you set a retention window",[2482,2509,2510,2515],{},[2496,2511,2512],{},[2499,2513,2514],{},"The workflow",[2496,2516,2517],{},"Reading the cart and the buyer, deciding whether to send, and handing the reminder to your mail server or CRM",[2482,2519,2520,2525],{},[2496,2521,2522],{},[2499,2523,2524],{},"Your storefront",[2496,2526,2527],{},"The recovery link, checking that the person who clicks it owns the cart, and the reopen call",[2482,2529,2530,2535],{},[2496,2531,2532],{},[2499,2533,2534],{},"You",[2496,2536,2537],{},"The windows, consent to send marketing mail, and how many reminders one buyer gets",[2468,2539,2541],{"id":2540},"how-a-cart-ends-up-abandoned","How a cart ends up abandoned",[2405,2543,2544,2545,2548],{},"A cart is ",[2409,2546,2547],{},"active"," while a buyer fills it. These are the moves it can make:",[2550,2551,2558],"pre",{"className":2552,"code":2554,"filename":2555,"language":2556,"meta":2557},[2553],"language-text","active ──► abandoned ──► active      (reopened)\n   │\n   ├──► ordered    final: the record of a sale, never deleted\n   └──► merged     final: folded into another cart\n","Cart lifecycle","text","",[2409,2559,2554],{"__ignoreMap":2557},[2476,2561,2562,2572],{},[2479,2563,2564],{},[2482,2565,2566,2569],{},[2485,2567,2568],{},"Status",[2485,2570,2571],{},"Meaning",[2491,2573,2574,2583,2596,2606],{},[2482,2575,2576,2580],{},[2496,2577,2578],{},[2409,2579,2547],{},[2496,2581,2582],{},"The cart in use. Only an active cart accepts new lines",[2482,2584,2585,2590],{},[2496,2586,2587],{},[2409,2588,2589],{},"abandoned",[2496,2591,2592,2593],{},"Idle past the window, or abandoned by hand. ",[2499,2594,2595],{},"The one ending you can undo",[2482,2597,2598,2603],{},[2496,2599,2600],{},[2409,2601,2602],{},"ordered",[2496,2604,2605],{},"Converted to an order. Final",[2482,2607,2608,2613],{},[2496,2609,2610],{},[2409,2611,2612],{},"merged",[2496,2614,2615,2616,2619],{},"Folded into another cart, with ",[2409,2617,2618],{},"merged_into_cart_id"," pointing at the survivor. Final",[2405,2621,2622,2623,2626],{},"Two things mark a cart abandoned, and the event says which in ",[2409,2624,2625],{},"reason",":",[2476,2628,2629,2643],{},[2479,2630,2631],{},[2482,2632,2633,2637,2640],{},[2485,2634,2635],{},[2409,2636,2625],{},[2485,2638,2639],{},"Who did it",[2485,2641,2642],{},"Moment",[2491,2644,2645,2661],{},[2482,2646,2647,2652,2655],{},[2496,2648,2649],{},[2409,2650,2651],{},"idle_sweep",[2496,2653,2654],{},"The platform's cart-maintenance tick, every 15 minutes",[2496,2656,2657,2658],{},"The cart's last change is older than ",[2409,2659,2660],{},"abandon_after_minutes",[2482,2662,2663,2668,2675],{},[2496,2664,2665],{},[2409,2666,2667],{},"requested",[2496,2669,2670,2671,2674],{},"A caller of ",[2409,2672,2673],{},"POST \u002Fv1\u002Fcarts\u002F{id}\u002Fabandon",", such as your storefront or an operator in Cockpit",[2496,2676,2677],{},"Immediately",[2405,2679,2680],{},"Idle is measured from the buyer's last change to the cart. The tick that abandons a cart does not count as a change, so noticing an idle cart never restarts its clock. That matters for step 1.",[2468,2682,2684],{"id":2683},"before-you-start-three-keys","Before you start: three keys",[2405,2686,2687,2688,2438,2690,2694],{},"Create them in Cockpit under ",[2417,2689,556],{"href":557},[2417,2691,2693],{"href":2692},"\u002Fdocs\u002Fgetting-started\u002Fprerequisites#create-an-api-key","create an API key","), with custom scopes. Narrow scopes limit which operations a key can call.",[2476,2696,2697,2710],{},[2479,2698,2699],{},[2482,2700,2701,2704,2707],{},[2485,2702,2703],{},"Key",[2485,2705,2706],{},"Scopes",[2485,2708,2709],{},"For",[2491,2711,2712,2743,2771],{},[2482,2713,2714,2720,2737],{},[2496,2715,2716,2719],{},[2499,2717,2718],{},"Setup key",", used from your own machine",[2496,2721,2722,2452,2725,2452,2728,2452,2731,2452,2734],{},[2409,2723,2724],{},"carts.create",[2409,2726,2727],{},"carts.items.create",[2409,2729,2730],{},"carts.get",[2409,2732,2733],{},"carts.maintenance.run",[2409,2735,2736],{},"carts.abandon",[2496,2738,2739,2740,2742],{},"Steps 1 and 8 (",[2409,2741,2736],{}," is for the test abandonment in step 8)",[2482,2744,2745,2751,2761],{},[2496,2746,2747,2750],{},[2499,2748,2749],{},"Workflow key",", used only inside Integration Studio",[2496,2752,2753,2452,2755,2452,2758],{},[2409,2754,2730],{},[2409,2756,2757],{},"carts.items.list",[2409,2759,2760],{},"customers.contacts.get",[2496,2762,2763,2764,2767,2768,2770],{},"Steps 4 and 5, as a ",[2499,2765,2766],{},"Revenexx API"," credential (see ",[2417,2769,1652],{"href":1653},")",[2482,2772,2773,2779,2795],{},[2496,2774,2775,2778],{},[2499,2776,2777],{},"Storefront key",", held by your storefront's server",[2496,2780,2781,2452,2783,2452,2786,2452,2789,2452,2792],{},[2409,2782,2730],{},[2409,2784,2785],{},"carts.reopen",[2409,2787,2788],{},"carts.activate",[2409,2790,2791],{},"carts.claim",[2409,2793,2794],{},"carts.merge_into",[2496,2796,2797,2798,2800,2801,2803],{},"Step 6. Add ",[2409,2799,2727],{}," if your storefront adds lines to a reopened cart, and ",[2409,2802,2736],{}," if it abandons carts itself",[2405,2805,2806,2807,2438,2810,2812,2813,2815],{},"Step 2 also reads the event catalog, which has no documented scope name. Run it with a development key with ",[2409,2808,2809],{},"*",[2417,2811,2442],{"href":2441},"), or skip it and type the topics from step 2. Do not keep a ",[2409,2814,2809],{}," key beyond that read: revoke it afterwards.",[2550,2817,2822],{"className":2818,"code":2819,"filename":2820,"language":2821,"meta":2557,"style":2557},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export REVENEXX_TENANT=\"\u003CTENANT_SLUG>\"\nexport REVENEXX_API_KEY=\"rvxk_...\"             # the setup key\nexport REVENEXX_DEV_API_KEY=\"rvxk_...\"         # a development key with *, for the catalog read in step 2 only\nexport REVENEXX_STOREFRONT_API_KEY=\"rvxk_...\"  # the storefront key, for step 6\n","Environment","bash",[2409,2823,2824,2851,2872,2891],{"__ignoreMap":2557},[2825,2826,2829,2833,2837,2841,2844,2848],"span",{"class":2827,"line":2828},"line",1,[2825,2830,2832],{"class":2831},"spNyl","export",[2825,2834,2836],{"class":2835},"sTEyZ"," REVENEXX_TENANT",[2825,2838,2840],{"class":2839},"sMK4o","=",[2825,2842,2843],{"class":2839},"\"",[2825,2845,2847],{"class":2846},"sfazB","\u003CTENANT_SLUG>",[2825,2849,2850],{"class":2839},"\"\n",[2825,2852,2854,2856,2859,2861,2863,2866,2868],{"class":2827,"line":2853},2,[2825,2855,2832],{"class":2831},[2825,2857,2858],{"class":2835}," REVENEXX_API_KEY",[2825,2860,2840],{"class":2839},[2825,2862,2843],{"class":2839},[2825,2864,2865],{"class":2846},"rvxk_...",[2825,2867,2843],{"class":2839},[2825,2869,2871],{"class":2870},"sHwdD","             # the setup key\n",[2825,2873,2875,2877,2880,2882,2884,2886,2888],{"class":2827,"line":2874},3,[2825,2876,2832],{"class":2831},[2825,2878,2879],{"class":2835}," REVENEXX_DEV_API_KEY",[2825,2881,2840],{"class":2839},[2825,2883,2843],{"class":2839},[2825,2885,2865],{"class":2846},[2825,2887,2843],{"class":2839},[2825,2889,2890],{"class":2870},"         # a development key with *, for the catalog read in step 2 only\n",[2825,2892,2894,2896,2899,2901,2903,2905,2907],{"class":2827,"line":2893},4,[2825,2895,2832],{"class":2831},[2825,2897,2898],{"class":2835}," REVENEXX_STOREFRONT_API_KEY",[2825,2900,2840],{"class":2839},[2825,2902,2843],{"class":2839},[2825,2904,2865],{"class":2846},[2825,2906,2843],{"class":2839},[2825,2908,2909],{"class":2870},"  # the storefront key, for step 6\n",[2405,2911,2912,2915,2916,2919,2920,2923],{},[2409,2913,2914],{},"REVENEXX_TENANT"," is the value you send as ",[2409,2917,2918],{},"X-Revenexx-Tenant",". The shell examples use ",[2409,2921,2922],{},"jq"," to pick values out of the answers.",[2468,2925,2927],{"id":2926},"_1-set-the-windows","1. Set the windows",[2405,2929,2930,2931,2934,2935,2939,2940,2462],{},"Open ",[2499,2932,2933],{},"Apps → Installed Apps → Carts → Settings"," in Cockpit. Three settings decide the timing, and all three are market-scoped: the tick holds each cart against the value of its own ",[2417,2936,2938],{"href":2937},"\u002Fdocs\u002Fgetting-started\u002Fglossary#storefronts-and-channels","market",", and a market you have not set inherits the tenant value. How settings resolve is in ",[2417,2941,944],{"href":1500},[2476,2943,2944,2959],{},[2479,2945,2946],{},[2482,2947,2948,2951,2953,2956],{},[2485,2949,2950],{},"Setting in Cockpit",[2485,2952,2703],{},[2485,2954,2955],{},"Default",[2485,2957,2958],{},"Range",[2491,2960,2961,2982,3002],{},[2482,2962,2963,2968,2972,2975],{},[2496,2964,2965],{},[2499,2966,2967],{},"Abandon a cart after (minutes)",[2496,2969,2970],{},[2409,2971,2660],{},[2496,2973,2974],{},"1440 (one day)",[2496,2976,2977,2978,2981],{},"0 to 525600. ",[2409,2979,2980],{},"0"," switches abandonment off",[2482,2983,2984,2989,2994,2996],{},[2496,2985,2986],{},[2499,2987,2988],{},"Delete customer carts after (days)",[2496,2990,2991],{},[2409,2992,2993],{},"cart_ttl_days",[2496,2995,2980],{},[2496,2997,2998,2999,3001],{},"0 to 3650. ",[2409,3000,2980],{}," never deletes",[2482,3003,3004,3009,3014,3016],{},[2496,3005,3006],{},[2499,3007,3008],{},"Delete guest carts after (days)",[2496,3010,3011],{},[2409,3012,3013],{},"guest_cart_ttl_days",[2496,3015,2980],{},[2496,3017,2998,3018,3001],{},[2409,3019,2980],{},[2405,3021,3022,3027,3028,3030,3031,3033,3034,3036,3037,3039,3040,3042,3043,3046],{},[2499,3023,3024,3026],{},[2409,3025,2660],{}," is your reminder delay."," The workflow in this guide has no wait step, and the node catalog ships none (as of 2026-10): the event arrives when the window ends. A buyer who last touched the cart at 09:00 with the default setting is announced on the first tick after 09:00 the next day, up to 15 minutes late. At ",[2409,3029,2980],{}," a market abandons nothing. A market that sets its own window uses it, even if the tenant value is ",[2409,3032,2980],{},", and a market that inherits a tenant ",[2409,3035,2980],{}," produces no ",[2409,3038,2651],{}," events. If every market is at ",[2409,3041,2980],{},", only abandonments by hand (",[2409,3044,3045],{},"reason: requested",") emit an event.",[3048,3049,3050,3053,3054,3057,3058,3060,3061,3064,3065,3067,3068,3070,3071,3073,3074,3076],"warning",{},[2499,3051,3052],{},"The two delete settings count from the buyer's last change, not from the abandonment."," They run on the same clock as the abandon window, and a delete ",[2499,3055,3056],{},"removes the cart and its lines",". With ",[2409,3059,2993],{}," at 1 and the default window of one day, a cart can be abandoned and deleted in the same pass: the event goes out, and by the time your workflow reads the cart or the buyer clicks the link, it is a ",[2409,3062,3063],{},"404",". Set ",[2409,3066,2993],{}," to the abandon window, plus how long your recovery link should work, plus a margin. A window of one day and a link that works for 14 days means 15 days or more. A delete window shorter than the abandon window deletes idle active carts with no ",[2409,3069,2411],{}," event at all. An abandonment by hand counts as a change and restarts the clock. An ",[2409,3072,2602],{}," cart is never deleted at any setting. A ",[2409,3075,2612],{}," cart is, like any other.",[2405,3078,3079],{},"The delete settings are the only thing in this app that removes carts on its own, so ask before you set one. A dry run reports what a window would do and writes nothing:",[2550,3081,3084],{"className":2818,"code":3082,"filename":3083,"language":2821,"meta":2557,"style":2557},"curl -s -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts\u002Fmaintenance\u002Frun \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"dry_run\": true}' \\\n  | jq '{dry_run, abandon: {found: .abandon.found, capped: .abandon.capped}, purge: {found: .purge.found, would_delete_items: .purge.would_delete_items, capped: .purge.capped}}'\n","Dry run",[2409,3085,3086,3107,3125,3141,3154,3171],{"__ignoreMap":2557},[2825,3087,3088,3092,3095,3098,3101,3104],{"class":2827,"line":2828},[2825,3089,3091],{"class":3090},"sBMFI","curl",[2825,3093,3094],{"class":2846}," -s",[2825,3096,3097],{"class":2846}," -X",[2825,3099,3100],{"class":2846}," POST",[2825,3102,3103],{"class":2846}," https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts\u002Fmaintenance\u002Frun",[2825,3105,3106],{"class":2835}," \\\n",[2825,3108,3109,3112,3115,3118,3121,3123],{"class":2827,"line":2853},[2825,3110,3111],{"class":2846},"  -H",[2825,3113,3114],{"class":2839}," \"",[2825,3116,3117],{"class":2846},"X-Revenexx-Tenant: ",[2825,3119,3120],{"class":2835},"$REVENEXX_TENANT",[2825,3122,2843],{"class":2839},[2825,3124,3106],{"class":2835},[2825,3126,3127,3129,3131,3134,3137,3139],{"class":2827,"line":2874},[2825,3128,3111],{"class":2846},[2825,3130,3114],{"class":2839},[2825,3132,3133],{"class":2846},"X-Revenexx-Api-Key: ",[2825,3135,3136],{"class":2835},"$REVENEXX_API_KEY",[2825,3138,2843],{"class":2839},[2825,3140,3106],{"class":2835},[2825,3142,3143,3145,3147,3150,3152],{"class":2827,"line":2893},[2825,3144,3111],{"class":2846},[2825,3146,3114],{"class":2839},[2825,3148,3149],{"class":2846},"Content-Type: application\u002Fjson",[2825,3151,2843],{"class":2839},[2825,3153,3106],{"class":2835},[2825,3155,3157,3160,3163,3166,3169],{"class":2827,"line":3156},5,[2825,3158,3159],{"class":2846},"  -d",[2825,3161,3162],{"class":2839}," '",[2825,3164,3165],{"class":2846},"{\"dry_run\": true}",[2825,3167,3168],{"class":2839},"'",[2825,3170,3106],{"class":2835},[2825,3172,3174,3177,3180,3182,3185],{"class":2827,"line":3173},6,[2825,3175,3176],{"class":2839},"  |",[2825,3178,3179],{"class":3090}," jq",[2825,3181,3162],{"class":2839},[2825,3183,3184],{"class":2846},"{dry_run, abandon: {found: .abandon.found, capped: .abandon.capped}, purge: {found: .purge.found, would_delete_items: .purge.would_delete_items, capped: .purge.capped}}",[2825,3186,3187],{"class":2839},"'\n",[2405,3189,3190,3193,3194,3197],{},[2409,3191,3192],{},"found"," names the carts the window would abandon or delete. Each half examines the 1000 oldest carts per pass, oldest first, and says ",[2409,3195,3196],{},"capped: true"," when there may be more. A tenant with a very large number of idle carts can see carts held back for a few ticks.",[2468,3199,3201],{"id":3200},"_2-look-up-the-topics","2. Look up the topics",[2405,3203,3204,3205,3207,3208,3211],{},"The event is called ",[2409,3206,2411],{},". A workflow trigger matches the ",[2499,3209,3210],{},"topic",", which puts the vendor and the app in front. Read the topics from your tenant's event catalog instead of typing them:",[2550,3213,3216],{"className":2818,"code":3214,"filename":3215,"language":2821,"meta":2557,"style":2557},"curl -s https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fevents\u002Fcatalog \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_DEV_API_KEY\" \\\n  | jq -r '.emits[] | select(.app == \"carts\" and (.name | IN(\"cart.abandoned\", \"cart.reopened\", \"cart.merged\", \"cart.ordered\"))) | .topic'\n","Read the topics",[2409,3217,3218,3229,3243,3258],{"__ignoreMap":2557},[2825,3219,3220,3222,3224,3227],{"class":2827,"line":2828},[2825,3221,3091],{"class":3090},[2825,3223,3094],{"class":2846},[2825,3225,3226],{"class":2846}," https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fevents\u002Fcatalog",[2825,3228,3106],{"class":2835},[2825,3230,3231,3233,3235,3237,3239,3241],{"class":2827,"line":2853},[2825,3232,3111],{"class":2846},[2825,3234,3114],{"class":2839},[2825,3236,3117],{"class":2846},[2825,3238,3120],{"class":2835},[2825,3240,2843],{"class":2839},[2825,3242,3106],{"class":2835},[2825,3244,3245,3247,3249,3251,3254,3256],{"class":2827,"line":2874},[2825,3246,3111],{"class":2846},[2825,3248,3114],{"class":2839},[2825,3250,3133],{"class":2846},[2825,3252,3253],{"class":2835},"$REVENEXX_DEV_API_KEY",[2825,3255,2843],{"class":2839},[2825,3257,3106],{"class":2835},[2825,3259,3260,3262,3264,3267,3269,3272],{"class":2827,"line":2893},[2825,3261,3176],{"class":2839},[2825,3263,3179],{"class":3090},[2825,3265,3266],{"class":2846}," -r",[2825,3268,3162],{"class":2839},[2825,3270,3271],{"class":2846},".emits[] | select(.app == \"carts\" and (.name | IN(\"cart.abandoned\", \"cart.reopened\", \"cart.merged\", \"cart.ordered\"))) | .topic",[2825,3273,3187],{"class":2839},[2405,3275,3276,3277,3279,3280,2452,3283,2452,3286,3289,3290,3293,3294,3297],{},"By the naming rule on the ",[2417,3278,598],{"href":599}," page, it should answer with ",[2409,3281,3282],{},"revenexx.carts.cart.abandoned",[2409,3284,3285],{},"revenexx.carts.cart.reopened",[2409,3287,3288],{},"revenexx.carts.cart.merged"," and ",[2409,3291,3292],{},"revenexx.carts.cart.ordered",". If your catalog lists something else, use what it lists. ",[2409,3295,3296],{},"REVENEXX_DEV_API_KEY"," is the development key from the environment block above.",[2405,3299,3300,3301,2452,3304,3289,3307,3310,3311,3313,3314,3317],{},"The catalog also lists ",[2409,3302,3303],{},"cart.created",[2409,3305,3306],{},"cart.updated",[2409,3308,3309],{},"cart.deleted",". Ignore them: ",[2409,3312,3306],{}," fires on every line write, so a workflow subscribed to it, or to a ",[2409,3315,3316],{},"revenexx.carts.>"," pattern that includes it, starts a run for every click in every cart.",[2468,3319,3321],{"id":3320},"_3-start-the-workflow-on-the-event","3. Start the workflow on the event",[2405,3323,3324,3325,3328,3329,3332,3333,2626],{},"In Cockpit, open ",[2499,3326,3327],{},"Integration Studio → Workflows → New"," and add an ",[2499,3330,3331],{},"Event"," trigger. Enter the topic as the ",[2499,3334,3335],{},"Subject",[2550,3337,3340],{"className":3338,"code":3339,"filename":3335,"language":2556,"meta":2557},[2553],"revenexx.carts.cart.abandoned\n",[2409,3341,3339],{"__ignoreMap":2557},[2405,3343,3344,3345,3348,3349,3351],{},"Save, and leave the switch in the editor's header on ",[2499,3346,3347],{},"Paused",". You activate the workflow in step 8, once the nodes behind it exist. See ",[2417,3350,1736],{"href":1737}," for subject patterns and for the underscore note.",[2405,3353,3354,3355,2626],{},"The event's own fields sit under ",[2409,3356,3357],{},"data",[2476,3359,3360,3370],{},[2479,3361,3362],{},[2482,3363,3364,3367],{},[2485,3365,3366],{},"Expression",[2485,3368,3369],{},"Value",[2491,3371,3372,3382,3396,3409,3423,3441,3451,3461,3471,3481,3491,3501],{},[2482,3373,3374,3379],{},[2496,3375,3376],{},[2409,3377,3378],{},"${{ trigger.payload.data.cart_id }}",[2496,3380,3381],{},"The cart. The reference for everything below",[2482,3383,3384,3389],{},[2496,3385,3386],{},[2409,3387,3388],{},"${{ trigger.payload.data.contact_id }}",[2496,3390,3391,3392,3395],{},"The signed-in owner. ",[2409,3393,3394],{},"null"," on a guest cart",[2482,3397,3398,3403],{},[2496,3399,3400],{},[2409,3401,3402],{},"${{ trigger.payload.data.session_key }}",[2496,3404,3405,3406,3408],{},"The guest's session. ",[2409,3407,3394],{}," on a customer cart",[2482,3410,3411,3416],{},[2496,3412,3413],{},[2409,3414,3415],{},"${{ trigger.payload.data.reason }}",[2496,3417,3418,3420,3421],{},[2409,3419,2651],{}," or ",[2409,3422,2667],{},[2482,3424,3425,3430],{},[2496,3426,3427],{},[2409,3428,3429],{},"${{ trigger.payload.data.market }}",[2496,3431,3432,3433,3435,3436,3438,3439],{},"The cart's market code on ",[2409,3434,2651],{},", the request's market on ",[2409,3437,2667],{},", or ",[2409,3440,3394],{},[2482,3442,3443,3448],{},[2496,3444,3445],{},[2409,3446,3447],{},"${{ trigger.payload.data.item_count }}",[2496,3449,3450],{},"The sum of the line quantities, not the number of lines",[2482,3452,3453,3458],{},[2496,3454,3455],{},[2409,3456,3457],{},"${{ trigger.payload.data.subtotal }}",[2496,3459,3460],{},"The cart total, net of shipping and tax",[2482,3462,3463,3468],{},[2496,3464,3465],{},[2409,3466,3467],{},"${{ trigger.payload.data.currency }}",[2496,3469,3470],{},"The cart's currency code",[2482,3472,3473,3478],{},[2496,3474,3475],{},[2409,3476,3477],{},"${{ trigger.payload.data.abandon_after_minutes }}",[2496,3479,3480],{},"The window the cart was held against",[2482,3482,3483,3488],{},[2496,3484,3485],{},[2409,3486,3487],{},"${{ trigger.payload.data.last_activity_at }}",[2496,3489,3490],{},"The buyer's last change, not the abandonment time",[2482,3492,3493,3498],{},[2496,3494,3495],{},[2409,3496,3497],{},"${{ trigger.payload.data.abandoned_at }}",[2496,3499,3500],{},"When the platform marked it",[2482,3502,3503,3508],{},[2496,3504,3505],{},[2409,3506,3507],{},"${{ trigger.payload.id }}",[2496,3509,3510],{},"The event's id, not the cart's",[2405,3512,3513,3516,3517,3520,3521,3523],{},[2499,3514,3515],{},"The event does not carry the cart's lines, the buyer's email or the cart's name."," It says which cart, whose, and how much. Steps 4 and 5 fetch the rest. The ",[2409,3518,3519],{},"cart_id"," is the cart; ",[2409,3522,3507],{}," is the event. Reaching for the wrong one gives every later call an id no cart has, and because both ids are in the payload, nothing refuses the expression: the mistake shows only in what those later calls answer.",[2405,3525,3526,3527,3530],{},"Add two ",[2499,3528,3529],{},"If condition"," nodes behind the trigger. Conditions are not expressions: pick the field with the expression picker, then an operator and a value.",[3532,3533,3534,3554],"ol",{},[3535,3536,3537,3539,3540,3542,3543,3545,3546,3549,3550,3553],"li",{},[2409,3538,2625],{}," equals ",[2409,3541,2651],{},". A ",[2409,3544,2667],{}," abandonment comes from a person or your own code, a minute ago, on purpose. A reminder now would be wrong. Wire the ",[2409,3547,3548],{},"false"," port to nothing, or to a ",[2499,3551,3552],{},"No Operation"," node.",[3535,3555,3556,3559],{},[2409,3557,3558],{},"contact_id"," is not empty. A guest cart has no address on the platform, so there is nobody to write to. The node's operator list is not documented, so find the one that tests for empty in the dropdown (as of 2026-10).",[2405,3561,3562],{},"The trigger de-duplicates on the event id, and the platform gives a sweep's event one fixed id per cart and UTC day, so a delivery repeated within the day starts one run. Delivery is at least once, so keep the reminder step in step 5 safe to run twice anyway.",[2468,3564,3566],{"id":3565},"_4-read-the-cart-and-the-buyer","4. Read the cart and the buyer",[2405,3568,3569,3570,3573,3574,2462],{},"Add three ",[2499,3571,3572],{},"Generic API Call"," nodes with the Revenexx API credential from the workflow key. See the ",[2417,3575,3576],{"href":1604},"node catalog",[2476,3578,3579,3595],{},[2479,3580,3581],{},[2482,3582,3583,3586,3589,3592],{},[2485,3584,3585],{},"Node",[2485,3587,3588],{},"Resource and operation",[2485,3590,3591],{},"Id",[2485,3593,3594],{},"You read",[2491,3596,3597,3628,3665],{},[2482,3598,3599,3604,3610,3614],{},[2496,3600,3601],{},[2499,3602,3603],{},"Cart",[2496,3605,3606,3607,2770],{},"Carts, get one cart (",[2409,3608,3609],{},"GET \u002Fv1\u002Fcarts\u002F{id}",[2496,3611,3612],{},[2409,3613,3378],{},[2496,3615,3616,2452,3619,2452,3622,2452,3625],{},[2409,3617,3618],{},"status",[2409,3620,3621],{},"name",[2409,3623,3624],{},"currency",[2409,3626,3627],{},"subtotal",[2482,3629,3630,3635,3641,3645],{},[2496,3631,3632],{},[2499,3633,3634],{},"Lines",[2496,3636,3637,3638,2770],{},"Carts, list items (",[2409,3639,3640],{},"GET \u002Fv1\u002Fcarts\u002F{cart_id}\u002Fitems",[2496,3642,3643],{},[2409,3644,3378],{},[2496,3646,3647,3650,3651,2452,3653,2452,3656,2452,3659,2452,3662],{},[2409,3648,3649],{},"items[]"," with ",[2409,3652,3621],{},[2409,3654,3655],{},"sku",[2409,3657,3658],{},"quantity",[2409,3660,3661],{},"unit_price",[2409,3663,3664],{},"line_total",[2482,3666,3667,3672,3678,3682],{},[2496,3668,3669],{},[2499,3670,3671],{},"Buyer",[2496,3673,3674,3675,2770],{},"Customers, get one contact (",[2409,3676,3677],{},"GET \u002Fv1\u002Fcustomers\u002Fcontacts\u002F{id}",[2496,3679,3680],{},[2409,3681,3388],{},[2496,3683,3684,2452,3687,2452,3690,2452,3693,2452,3696],{},[2409,3685,3686],{},"email",[2409,3688,3689],{},"first_name",[2409,3691,3692],{},"last_name",[2409,3694,3695],{},"locale",[2409,3697,3618],{},[2405,3699,3700],{},"Order matters in two places.",[2405,3702,3703,3706,3707,3709,3710,3539,3712,3714,3715,2452,3717,3420,3719,3721],{},[2499,3704,3705],{},"Check the cart's status right after the first node",", with another ",[2499,3708,3529],{},": continue only when ",[2409,3711,3618],{},[2409,3713,2589],{},". The run starts a little after the abandonment, and the buyer may have come back and ordered in between. A cart that is ",[2409,3716,2547],{},[2409,3718,2602],{},[2409,3720,2612],{}," by now needs no reminder.",[2405,3723,3724,3727,3728,3730,3731,2452,3734,3420,3736,3739,3740,3743,3744,2452,3747,3420,3750,3753,3754,3756,3757,3760],{},[2499,3725,3726],{},"Check the buyer before you send."," ",[2409,3729,3618],{}," is ",[2409,3732,3733],{},"invited",[2409,3735,2547],{},[2409,3737,3738],{},"blocked",", and a blocked contact gets no mail. A contact also carries a ",[2409,3741,3742],{},"registration_status"," of ",[2409,3745,3746],{},"pending",[2409,3748,3749],{},"approved",[2409,3751,3752],{},"rejected",", which you may want to check as well. ",[2409,3755,3686],{}," can be empty on a contact that exists, so route that case to a ",[2499,3758,3759],{},"Stop and Error"," node or to a branch your team reads, instead of sending to nothing. Mail to someone who never agreed to marketing mail is a legal question that the platform does not answer for you: the contact record has no consent field, so keep that decision in your own system (as of 2026-10).",[2405,3762,3763,3764,3767],{},"A cart with more lines than one page answers ",[2409,3765,3766],{},"page.hasMore: true",". A reminder usually names the first few lines and links to the rest, so you do not need to page through them.",[2468,3769,3771],{"id":3770},"_5-send-the-reminder-through-your-own-channel","5. Send the reminder through your own channel",[2405,3773,3774],{},"The reminder leaves from your own mail server or CRM. The platform sends no cart mail. Pick one.",[2405,3776,3777,3780,3781,3784,3785,3788,3789,3792,3793,3795,3796,2452,3799,2452,3802,3805],{},[2499,3778,3779],{},"Mail."," Add a ",[2499,3782,3783],{},"Send Email"," node (SMTP). It takes a stored credential of the ",[2499,3786,3787],{},"SMTP"," type, which you create under ",[2499,3790,3791],{},"Integration Studio → Credentials"," and pick on the node (see ",[2417,3794,1634],{"href":1635},"). ",[2409,3797,3798],{},"from",[2409,3800,3801],{},"to",[2409,3803,3804],{},"subject"," and the body accept expressions:",[2550,3807,3811],{"className":3808,"code":3809,"filename":3810,"language":2556,"meta":2557},[2553],"to:      ${{ nodes.buyer.outputs.response.email }}\nsubject: You left something in your cart\nbody:    Hello ${{ nodes.buyer.outputs.response.first_name }},\n         your cart (\"${{ nodes.cart.outputs.response.name }}\") is still saved.\n         Pick it up here: https:\u002F\u002Fshop.example.com\u002Fcart\u002Frecover?cart=${{ trigger.payload.data.cart_id }}\n","Mail fields",[2409,3812,3809],{"__ignoreMap":2557},[2405,3814,3815,3289,3818,3821,3822,3825,3826,3828,3829,3831,3832,3420,3835,3838],{},[2409,3816,3817],{},"buyer",[2409,3819,3820],{},"cart"," are the ids you gave the two nodes from step 4, and the exact path after ",[2409,3823,3824],{},"outputs."," depends on the port the node resolves, so confirm each expression with the picker in the node's input panel. See ",[2417,3827,1597],{"href":1598},". Render the lines from the ",[2499,3830,3634],{}," node with a ",[2499,3833,3834],{},"JSON Transform",[2499,3836,3837],{},"Set Fields"," node first, if you want them in the mail.",[2405,3840,3841,3844,3845,3848,3849,3852,3853,3856,3857,3859,3860,3289,3862,3864],{},[2499,3842,3843],{},"CRM."," Add an ",[2499,3846,3847],{},"HTTP Request"," node that posts the cart id, the contact and ",[2409,3850,3851],{},"abandoned_at"," to your CRM's API, and let the CRM's own automation send the mail. Use an ",[2499,3854,3855],{},"HTTP Bearer Token"," credential, as in ",[2417,3858,304],{"href":305},". Key the CRM record on ",[2409,3861,3519],{},[2409,3863,3851],{}," together, so a repeated run updates it instead of creating a second.",[2405,3866,3867],{},"Three decisions that are yours:",[3869,3870,3871,3877,3886],"ul",{},[3535,3872,3873,3876],{},[2499,3874,3875],{},"The link."," The platform has no recovery URL. The link points at a route on your storefront, which does step 6. A link that carries only the cart id, like the one above, is safe only if your storefront does what step 6 says: have the buyer sign in and check that the cart is theirs. The platform does not enforce it, and without that check, anyone holding the link can reopen the cart.",[3535,3878,3879,3882,3883,3885],{},[2499,3880,3881],{},"A second send."," A cart that is reopened and abandoned again on a later UTC day produces a new event with a new ",[2409,3884,3851],{},", and so a new run. Decide whether a buyer gets one reminder per cart, or one per abandonment, and keep that count in your CRM or mail system. The platform does not.",[3535,3887,3888,3727,3891,3893,3894,3897,3898,3901],{},[2499,3889,3890],{},"Prices.",[2409,3892,3627],{}," and the line prices are the cart as the buyer left it, net of tax and shipping. By default an order is booked at the price the buyer was shown, and the Carts app's ",[2409,3895,3896],{},"price_snapshot_mode"," setting can switch that to the live price (see ",[2417,3899,1518],{"href":3900},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts#conversion-to-an-order","). Quote a price in the mail only if you have decided which one applies.",[2405,3903,3904,3905,3908,3909,3912,3913,3916,3917,3919,3920,3923,3924,3926,3927,3930],{},"Set ",[2499,3906,3907],{},"Max attempts"," to 1 on the send node and ",[2499,3910,3911],{},"On error"," to ",[2499,3914,3915],{},"Route to error output",", both in its ",[2499,3918,944],{}," tab, then wire the ",[2409,3921,3922],{},"error"," port to something your team reads. A node is tried three times by default, and an SMTP send that timed out after the server accepted the mail would otherwise go out again. See ",[2417,3925,1711],{"href":1712},". There is no alert on a failed run (as of 2026-10), so check ",[2499,3928,3929],{},"Integration Studio → Runs"," filtered to failed.",[2468,3932,3934],{"id":3933},"_6-bring-the-buyer-back","6. Bring the buyer back",[2405,3936,3937],{},"The buyer follows your link to your storefront. The storefront's server, not the browser, calls the API with the storefront key.",[3048,3939,3940,3943,3944,3946],{},[2499,3941,3942],{},"The reopen route checks the cart's status and nothing else. It does not check who is asking."," Anyone whose request reaches it with a cart id reopens that cart, so checking that the buyer owns the cart is your storefront's job. Have the buyer sign in first, read the cart, and compare its ",[2409,3945,3558],{}," with the signed-in contact's id.",[2550,3948,3951],{"className":2818,"code":3949,"filename":3950,"language":2821,"meta":2557,"style":2557},"curl -s \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts\u002F\u003CCART_ID>\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_STOREFRONT_API_KEY\" \\\n  | jq '{id, status, contact_id, merged_into_cart_id}'\n","Read the cart",[2409,3952,3953,3968,3982,3997],{"__ignoreMap":2557},[2825,3954,3955,3957,3959,3961,3964,3966],{"class":2827,"line":2828},[2825,3956,3091],{"class":3090},[2825,3958,3094],{"class":2846},[2825,3960,3114],{"class":2839},[2825,3962,3963],{"class":2846},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts\u002F\u003CCART_ID>",[2825,3965,2843],{"class":2839},[2825,3967,3106],{"class":2835},[2825,3969,3970,3972,3974,3976,3978,3980],{"class":2827,"line":2853},[2825,3971,3111],{"class":2846},[2825,3973,3114],{"class":2839},[2825,3975,3117],{"class":2846},[2825,3977,3120],{"class":2835},[2825,3979,2843],{"class":2839},[2825,3981,3106],{"class":2835},[2825,3983,3984,3986,3988,3990,3993,3995],{"class":2827,"line":2874},[2825,3985,3111],{"class":2846},[2825,3987,3114],{"class":2839},[2825,3989,3133],{"class":2846},[2825,3991,3992],{"class":2835},"$REVENEXX_STOREFRONT_API_KEY",[2825,3994,2843],{"class":2839},[2825,3996,3106],{"class":2835},[2825,3998,3999,4001,4003,4005,4008],{"class":2827,"line":2893},[2825,4000,3176],{"class":2839},[2825,4002,3179],{"class":3090},[2825,4004,3162],{"class":2839},[2825,4006,4007],{"class":2846},"{id, status, contact_id, merged_into_cart_id}",[2825,4009,3187],{"class":2839},[2405,4011,4012],{},"What the storefront does with each answer:",[2476,4014,4015,4025],{},[2479,4016,4017],{},[2482,4018,4019,4022],{},[2485,4020,4021],{},"Cart answers",[2485,4023,4024],{},"Do this",[2491,4026,4027,4036,4046,4056,4066],{},[2482,4028,4029,4033],{},[2496,4030,4031],{},[2409,4032,3063],{},[2496,4034,4035],{},"The cart is gone, usually deleted by a retention window. Say so and start a fresh cart",[2482,4037,4038,4043],{},[2496,4039,4040],{},[2409,4041,4042],{},"status: abandoned",[2496,4044,4045],{},"Reopen it, below",[2482,4047,4048,4053],{},[2496,4049,4050],{},[2409,4051,4052],{},"status: active",[2496,4054,4055],{},"The buyer already came back. Continue with that cart",[2482,4057,4058,4063],{},[2496,4059,4060],{},[2409,4061,4062],{},"status: ordered",[2496,4064,4065],{},"The buyer already bought. Show the order, not the cart",[2482,4067,4068,4073],{},[2496,4069,4070],{},[2409,4071,4072],{},"status: merged",[2496,4074,4075,4076,4078],{},"Follow ",[2409,4077,2618],{}," to the cart that survived",[2550,4080,4083],{"className":2818,"code":4081,"filename":4082,"language":2821,"meta":2557,"style":2557},"curl -s -X POST \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts\u002F\u003CCART_ID>\u002Freopen\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_STOREFRONT_API_KEY\"\n","Reopen the cart",[2409,4084,4085,4104,4118],{"__ignoreMap":2557},[2825,4086,4087,4089,4091,4093,4095,4097,4100,4102],{"class":2827,"line":2828},[2825,4088,3091],{"class":3090},[2825,4090,3094],{"class":2846},[2825,4092,3097],{"class":2846},[2825,4094,3100],{"class":2846},[2825,4096,3114],{"class":2839},[2825,4098,4099],{"class":2846},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts\u002F\u003CCART_ID>\u002Freopen",[2825,4101,2843],{"class":2839},[2825,4103,3106],{"class":2835},[2825,4105,4106,4108,4110,4112,4114,4116],{"class":2827,"line":2853},[2825,4107,3111],{"class":2846},[2825,4109,3114],{"class":2839},[2825,4111,3117],{"class":2846},[2825,4113,3120],{"class":2835},[2825,4115,2843],{"class":2839},[2825,4117,3106],{"class":2835},[2825,4119,4120,4122,4124,4126,4128],{"class":2827,"line":2874},[2825,4121,3111],{"class":2846},[2825,4123,3114],{"class":2839},[2825,4125,3133],{"class":2846},[2825,4127,3992],{"class":2835},[2825,4129,2850],{"class":2839},[2405,4131,4132,4133,4135,4136,4138,4139,4142],{},"The cart is ",[2409,4134,2547],{}," again, with every line and both totals as they were, and ",[2409,4137,3851],{}," cleared. A cart in any other status answers ",[2409,4140,4141],{},"400"," naming the status it holds. Reopening also counts as a change, so the idle clock starts again.",[2405,4144,4145],{},"Two things to know about a reopened cart:",[3869,4147,4148,4162],{},[3535,4149,4150,4153,4154,4157,4158,4161],{},[2499,4151,4152],{},"Reopening does not make the cart current."," If your storefront resumes the buyer's cart by ",[2409,4155,4156],{},"is_current",", call ",[2409,4159,4160],{},"POST \u002Fv1\u002Fcarts\u002F\u003CCART_ID>\u002Factivate"," afterwards.",[3535,4163,4164,4167,4168,4170],{},[2499,4165,4166],{},"Reopen before any write."," An abandoned cart refuses new lines with a ",[2409,4169,4141],{}," until it is reopened. A storefront that adds to the cart without checking its status hits that error on exactly the buyers this guide brings back.",[4172,4173,4175],"h3",{"id":4174},"the-buyer-already-started-a-new-cart","The buyer already started a new cart",[2405,4177,4178,4179,4182,4183,4186,4187,2462],{},"A buyer who found your shop again without the link may hold a fresh active cart. Reopen the old one, then fold one into the other with ",[2409,4180,4181],{},"POST \u002Fv1\u002Fcarts\u002F{id}\u002Fmerge-into",". The path id is the cart you give away, and the body's ",[2409,4184,4185],{},"target_cart_id"," names the cart that survives. Both must be active, different and in the same currency. See ",[2417,4188,1518],{"href":4189},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts#merging",[4172,4191,4193],{"id":4192},"a-guest-returns","A guest returns",[2405,4195,4196,4197,4200,4201,4203],{},"A guest cart gets no reminder, because it has no address, but its owner may come back in the same browser session and then sign in. Reopen it first, then claim the session. ",[2409,4198,4199],{},"POST \u002Fv1\u002Fcarts\u002Fclaim"," hands over only the ",[2499,4202,2547],{}," carts of a session, and a cart the guest had abandoned stays with the session.",[2550,4205,4208],{"className":2818,"code":4206,"filename":4207,"language":2821,"meta":2557,"style":2557},"curl -s -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts\u002Fclaim \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_STOREFRONT_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"session_key\":\"\u003CSESSION_KEY>\",\"contact_id\":\"\u003CCONTACT_ID>\",\"target_cart_id\":\"\u003CCUSTOMERS_CART_ID>\",\"strategy\":\"merge\"}'\n","Claim a guest's carts",[2409,4209,4210,4225,4239,4253,4265],{"__ignoreMap":2557},[2825,4211,4212,4214,4216,4218,4220,4223],{"class":2827,"line":2828},[2825,4213,3091],{"class":3090},[2825,4215,3094],{"class":2846},[2825,4217,3097],{"class":2846},[2825,4219,3100],{"class":2846},[2825,4221,4222],{"class":2846}," https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts\u002Fclaim",[2825,4224,3106],{"class":2835},[2825,4226,4227,4229,4231,4233,4235,4237],{"class":2827,"line":2853},[2825,4228,3111],{"class":2846},[2825,4230,3114],{"class":2839},[2825,4232,3117],{"class":2846},[2825,4234,3120],{"class":2835},[2825,4236,2843],{"class":2839},[2825,4238,3106],{"class":2835},[2825,4240,4241,4243,4245,4247,4249,4251],{"class":2827,"line":2874},[2825,4242,3111],{"class":2846},[2825,4244,3114],{"class":2839},[2825,4246,3133],{"class":2846},[2825,4248,3992],{"class":2835},[2825,4250,2843],{"class":2839},[2825,4252,3106],{"class":2835},[2825,4254,4255,4257,4259,4261,4263],{"class":2827,"line":2893},[2825,4256,3111],{"class":2846},[2825,4258,3114],{"class":2839},[2825,4260,3149],{"class":2846},[2825,4262,2843],{"class":2839},[2825,4264,3106],{"class":2835},[2825,4266,4267,4269,4271,4274],{"class":2827,"line":3156},[2825,4268,3159],{"class":2846},[2825,4270,3162],{"class":2839},[2825,4272,4273],{"class":2846},"{\"session_key\":\"\u003CSESSION_KEY>\",\"contact_id\":\"\u003CCONTACT_ID>\",\"target_cart_id\":\"\u003CCUSTOMERS_CART_ID>\",\"strategy\":\"merge\"}",[2825,4275,3187],{"class":2839},[2405,4277,4278,4279,4282],{},"Take ",[2409,4280,4281],{},"session_key"," from your storefront's own server-side session, never from a request parameter: the route hands the carts of whatever session it is given to whatever contact it is given.",[2405,4284,4285,4286,4288,4289,4292,4293,4296,4297,4300,4301,4303,4304,4307,4308,4311,4312,2462],{},"Without ",[2409,4287,4185],{}," the guest carts are adopted as they stand. With it they fold into that cart, and the app's ",[2409,4290,4291],{},"cart_merge_strategy"," setting (",[2499,4294,4295],{},"Cart merge strategy",", default ",[2409,4298,4299],{},"merge",") decides what happens to the target's own lines: ",[2409,4302,4299],{}," keeps them and adds the guest lines, ",[2409,4305,4306],{},"replace"," clears them first. ",[2409,4309,4310],{},"strategy"," in the body overrides the setting for one call, and the answer says which one ran. The merge strategy applies to a claim only, not to ",[2409,4313,4314],{},"merge-into",[2468,4316,4318],{"id":4317},"_7-close-the-loop","7. Close the loop",[2405,4320,4321,4322,4324],{},"Three more events say how a recovery went. Give each its own workflow, with its own ",[2499,4323,3335],{},", instead of a pattern.",[2476,4326,4327,4340],{},[2479,4328,4329],{},[2482,4330,4331,4334,4337],{},[2485,4332,4333],{},"Topic",[2485,4335,4336],{},"What it tells you",[2485,4338,4339],{},"Use it to",[2491,4341,4342,4361,4381],{},[2482,4343,4344,4348,4358],{},[2496,4345,4346],{},[2409,4347,3285],{},[2496,4349,4350,4351,2452,4353,3289,4355],{},"The buyer came back. Carries ",[2409,4352,3519],{},[2409,4354,3851],{},[2409,4356,4357],{},"reopened_at",[2496,4359,4360],{},"Stop any follow-up you planned, and measure how long buyers took",[2482,4362,4363,4367,4378],{},[2496,4364,4365],{},[2409,4366,3292],{},[2496,4368,4369,4370,2452,4372,2452,4375,4377],{},"The cart became an order. Carries ",[2409,4371,3519],{},[2409,4373,4374],{},"order_ref",[2409,4376,3627],{}," and every line",[2496,4379,4380],{},"Count the recovery. A reopened cart is a buyer who came back, an ordered cart is a sale",[2482,4382,4383,4387,4400],{},[2496,4384,4385],{},[2409,4386,3288],{},[2496,4388,4389,4390,2452,4393,2452,4395,2452,4397],{},"One cart folded into another. Carries ",[2409,4391,4392],{},"source_cart_id",[2409,4394,4185],{},[2409,4396,4310],{},[2409,4398,4399],{},"moved_lines",[2496,4401,4402],{},"Close a reminder you sent for the source, and find the target",[2405,4404,4405,4408,4409,4412],{},[2409,4406,4407],{},"cart.ordered"," carries every line because retention may delete the cart long before you read the feed. ",[2409,4410,4411],{},"cart.merged"," is published for the target, the cart that survives, and a claim that adopts a guest cart without a target publishes no merge event at all (as of 2026-10), so a guest cart changing owner shows up only as the cart's own update. A refused reopen or merge publishes nothing.",[2405,4414,4415,4416,4418,4419,4421],{},"Key your records on ",[2409,4417,3519],{},". A reminder sent for a cart that was later merged belongs to the ",[2409,4420,4392],{}," in the event.",[2468,4423,4425],{"id":4424},"_8-test-it-once","8. Test it once",[2405,4427,4428,4429,4431],{},"Do this on a test tenant, because it changes a setting that applies to every cart on it. You need a contact with your own email address (see ",[2417,4430,1441],{"href":1442},"), and its id.",[2405,4433,4434,4437,4438,3912,4440,4443,4444,2462],{},[2499,4435,4436],{},"Test step 1."," Set ",[2499,4439,2967],{},[2409,4441,4442],{},"1"," for the test, and leave the delete settings at ",[2409,4445,2980],{},[2405,4447,4448,4451],{},[2499,4449,4450],{},"Test step 2."," Create a cart for the contact and add a line:",[2550,4453,4456],{"className":2818,"code":4454,"filename":4455,"language":2821,"meta":2557,"style":2557},"CART_ID=$(curl -s -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"contact_id\":\"\u003CCONTACT_ID>\",\"name\":\"Reminder test\"}' | jq -r '.id')\n\ncurl -s -X POST \"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts\u002F$CART_ID\u002Fitems\" \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"sku\":\"ACME-4711-BLK\",\"quantity\":2,\"unit_price\":19.90}'\n","Create a test cart",[2409,4457,4458,4479,4493,4507,4519,4547,4553,4579,4594,4609,4622],{"__ignoreMap":2557},[2825,4459,4460,4463,4466,4468,4470,4472,4474,4477],{"class":2827,"line":2828},[2825,4461,4462],{"class":2835},"CART_ID",[2825,4464,4465],{"class":2839},"=$(",[2825,4467,3091],{"class":3090},[2825,4469,3094],{"class":2846},[2825,4471,3097],{"class":2846},[2825,4473,3100],{"class":2846},[2825,4475,4476],{"class":2846}," https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts",[2825,4478,3106],{"class":2835},[2825,4480,4481,4483,4485,4487,4489,4491],{"class":2827,"line":2853},[2825,4482,3111],{"class":2846},[2825,4484,3114],{"class":2839},[2825,4486,3117],{"class":2846},[2825,4488,3120],{"class":2835},[2825,4490,2843],{"class":2839},[2825,4492,3106],{"class":2835},[2825,4494,4495,4497,4499,4501,4503,4505],{"class":2827,"line":2874},[2825,4496,3111],{"class":2846},[2825,4498,3114],{"class":2839},[2825,4500,3133],{"class":2846},[2825,4502,3136],{"class":2835},[2825,4504,2843],{"class":2839},[2825,4506,3106],{"class":2835},[2825,4508,4509,4511,4513,4515,4517],{"class":2827,"line":2893},[2825,4510,3111],{"class":2846},[2825,4512,3114],{"class":2839},[2825,4514,3149],{"class":2846},[2825,4516,2843],{"class":2839},[2825,4518,3106],{"class":2835},[2825,4520,4521,4523,4525,4528,4530,4533,4535,4537,4539,4542,4544],{"class":2827,"line":3156},[2825,4522,3159],{"class":2846},[2825,4524,3162],{"class":2839},[2825,4526,4527],{"class":2846},"{\"contact_id\":\"\u003CCONTACT_ID>\",\"name\":\"Reminder test\"}",[2825,4529,3168],{"class":2839},[2825,4531,4532],{"class":2839}," |",[2825,4534,3179],{"class":3090},[2825,4536,3266],{"class":2846},[2825,4538,3162],{"class":2839},[2825,4540,4541],{"class":2846},".id",[2825,4543,3168],{"class":2839},[2825,4545,4546],{"class":2839},")\n",[2825,4548,4549],{"class":2827,"line":3173},[2825,4550,4552],{"emptyLinePlaceholder":4551},true,"\n",[2825,4554,4556,4558,4560,4562,4564,4566,4569,4572,4575,4577],{"class":2827,"line":4555},7,[2825,4557,3091],{"class":3090},[2825,4559,3094],{"class":2846},[2825,4561,3097],{"class":2846},[2825,4563,3100],{"class":2846},[2825,4565,3114],{"class":2839},[2825,4567,4568],{"class":2846},"https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts\u002F",[2825,4570,4571],{"class":2835},"$CART_ID",[2825,4573,4574],{"class":2846},"\u002Fitems",[2825,4576,2843],{"class":2839},[2825,4578,3106],{"class":2835},[2825,4580,4582,4584,4586,4588,4590,4592],{"class":2827,"line":4581},8,[2825,4583,3111],{"class":2846},[2825,4585,3114],{"class":2839},[2825,4587,3117],{"class":2846},[2825,4589,3120],{"class":2835},[2825,4591,2843],{"class":2839},[2825,4593,3106],{"class":2835},[2825,4595,4597,4599,4601,4603,4605,4607],{"class":2827,"line":4596},9,[2825,4598,3111],{"class":2846},[2825,4600,3114],{"class":2839},[2825,4602,3133],{"class":2846},[2825,4604,3136],{"class":2835},[2825,4606,2843],{"class":2839},[2825,4608,3106],{"class":2835},[2825,4610,4612,4614,4616,4618,4620],{"class":2827,"line":4611},10,[2825,4613,3111],{"class":2846},[2825,4615,3114],{"class":2839},[2825,4617,3149],{"class":2846},[2825,4619,2843],{"class":2839},[2825,4621,3106],{"class":2835},[2825,4623,4625,4627,4629,4632],{"class":2827,"line":4624},11,[2825,4626,3159],{"class":2846},[2825,4628,3162],{"class":2839},[2825,4630,4631],{"class":2846},"{\"sku\":\"ACME-4711-BLK\",\"quantity\":2,\"unit_price\":19.90}",[2825,4633,3187],{"class":2839},[2405,4635,4636,4639,4640,3912,4642,4645],{},[2499,4637,4638],{},"Test step 3."," Activate the workflow: flip the switch in the editor's header from ",[2499,4641,3347],{},[2499,4643,4644],{},"Active",". Check the switch after you save: a workflow with unfilled required settings is saved paused.",[2405,4647,4648,4651],{},[2499,4649,4650],{},"Test step 4."," Wait more than a minute, then run the tick by hand. It does exactly what the 15-minute tick does, so every cart on the tenant that is idle past the window is abandoned and announced:",[2550,4653,4656],{"className":2818,"code":4654,"filename":4655,"language":2821,"meta":2557,"style":2557},"curl -s -X POST https:\u002F\u002Fapi.revenexx.com\u002Fv1\u002Fcarts\u002Fmaintenance\u002Frun \\\n  -H \"X-Revenexx-Tenant: $REVENEXX_TENANT\" \\\n  -H \"X-Revenexx-Api-Key: $REVENEXX_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{}' | jq '{abandoned: .abandon.abandoned, cart_ids: .abandon.cart_ids}'\n","Run the tick now",[2409,4657,4658,4672,4686,4700,4712],{"__ignoreMap":2557},[2825,4659,4660,4662,4664,4666,4668,4670],{"class":2827,"line":2828},[2825,4661,3091],{"class":3090},[2825,4663,3094],{"class":2846},[2825,4665,3097],{"class":2846},[2825,4667,3100],{"class":2846},[2825,4669,3103],{"class":2846},[2825,4671,3106],{"class":2835},[2825,4673,4674,4676,4678,4680,4682,4684],{"class":2827,"line":2853},[2825,4675,3111],{"class":2846},[2825,4677,3114],{"class":2839},[2825,4679,3117],{"class":2846},[2825,4681,3120],{"class":2835},[2825,4683,2843],{"class":2839},[2825,4685,3106],{"class":2835},[2825,4687,4688,4690,4692,4694,4696,4698],{"class":2827,"line":2874},[2825,4689,3111],{"class":2846},[2825,4691,3114],{"class":2839},[2825,4693,3133],{"class":2846},[2825,4695,3136],{"class":2835},[2825,4697,2843],{"class":2839},[2825,4699,3106],{"class":2835},[2825,4701,4702,4704,4706,4708,4710],{"class":2827,"line":2893},[2825,4703,3111],{"class":2846},[2825,4705,3114],{"class":2839},[2825,4707,3149],{"class":2846},[2825,4709,2843],{"class":2839},[2825,4711,3106],{"class":2835},[2825,4713,4714,4716,4718,4721,4723,4725,4727,4729,4732],{"class":2827,"line":3156},[2825,4715,3159],{"class":2846},[2825,4717,3162],{"class":2839},[2825,4719,4720],{"class":2846},"{}",[2825,4722,3168],{"class":2839},[2825,4724,4532],{"class":2839},[2825,4726,3179],{"class":3090},[2825,4728,3162],{"class":2839},[2825,4730,4731],{"class":2846},"{abandoned: .abandon.abandoned, cart_ids: .abandon.cart_ids}",[2825,4733,3187],{"class":2839},[2405,4735,4736,4739,4740,4742],{},[2499,4737,4738],{},"Test step 5."," Open ",[2499,4741,3929],{},": one run for your cart, and the mail in your inbox. Then follow the link through your storefront, or call the reopen route from step 6 yourself, with the storefront key.",[2405,4744,4745,4748],{},[2499,4746,4747],{},"Test step 6."," Set the window back to what you decided in section 1.",[2405,4750,4751,4752,4754,4755,4757],{},"A cart you abandon with ",[2409,4753,2673],{}," fires the event too, with ",[2409,4756,3045],{},", and the workflow ends at the first condition. That is a way to test the trigger without waiting, and it proves the reason filter.",[2468,4759,4761],{"id":4760},"troubleshooting","Troubleshooting",[2476,4763,4764,4774],{},[2479,4765,4766],{},[2482,4767,4768,4771],{},[2485,4769,4770],{},"Symptom",[2485,4772,4773],{},"Likely cause",[2491,4775,4776,4787,4802,4817,4829,4845,4853,4863,4876],{},[2482,4777,4778,4781],{},[2496,4779,4780],{},"The workflow never starts",[2496,4782,4783,4784,4786],{},"It is still ",[2499,4785,3347],{},", or the subject does not match the topic from step 2 segment for segment. Nothing warns you",[2482,4788,4789,4792],{},[2496,4790,4791],{},"No event for an idle cart",[2496,4793,4794,3730,4796,4798,4799,4801],{},[2409,4795,2660],{},[2409,4797,2980],{},", the cart is still inside its window or its market's window, the cart is ",[2409,4800,2602],{},", or the next 15-minute tick has not run. A cart abandoned by the tick again on the same UTC day as an earlier abandonment announces nothing new, so re-test with a fresh cart",[2482,4803,4804,4809],{},[2496,4805,4806,4807],{},"The event arrives and the cart is a ",[2409,4808,3063],{},[2496,4810,4811,4812,3420,4814,4816],{},"A delete setting removed it. Raise ",[2409,4813,2993],{},[2409,4815,3013],{}," (step 1)",[2482,4818,4819,4822],{},[2496,4820,4821],{},"Runs start for carts you did not expect",[2496,4823,4824,3730,4826,4828],{},[2409,4825,2625],{},[2409,4827,2667],{},": your storefront or an operator abandoned them. The first condition in step 3 filters them out",[2482,4830,4831,4834],{},[2496,4832,4833],{},"The run starts but the mail has no recipient",[2496,4835,4836,4837,3730,4839,4841,4842,4844],{},"A guest cart (",[2409,4838,3558],{},[2409,4840,3394],{},"), or a contact with no ",[2409,4843,3686],{}," (step 4)",[2482,4846,4847,4850],{},[2496,4848,4849],{},"A buyer got the mail twice",[2496,4851,4852],{},"A retried send node, or the cart was reopened and abandoned again. See step 5",[2482,4854,4855,4860],{},[2496,4856,4857,4858],{},"Adding a line to a returning buyer's cart answers ",[2409,4859,4141],{},[2496,4861,4862],{},"The cart is still abandoned. Reopen it first (step 6)",[2482,4864,4865,4870],{},[2496,4866,4867,4868],{},"Reopen answers ",[2409,4869,4141],{},[2496,4871,4872,4873,4875],{},"The cart is not ",[2409,4874,2589],{},". The message names its status",[2482,4877,4878,4884],{},[2496,4879,4880,4883],{},[2409,4881,4882],{},"403"," on a call",[2496,4885,4886],{},"The key lacks the scope for that operation (the key tables list the scopes each step needs)",[2468,4888,4890],{"id":4889},"where-to-go-next","Where to go next",[3869,4892,4893,4900,4907,4914],{},[3535,4894,4895,4899],{},[2499,4896,4897],{},[2417,4898,1518],{"href":1519}," — every cart route, the lifecycle, claiming and merging.",[3535,4901,4902,4906],{},[2499,4903,4904],{},[2417,4905,598],{"href":599}," — the topics and the fields each event carries.",[3535,4908,4909,4913],{},[2499,4910,4911],{},[2417,4912,379],{"href":380}," — when a workflow is the right consumer of an event and when a webhook is.",[3535,4915,4916,4920],{},[2499,4917,4918],{},[2417,4919,1711],{"href":1712}," — retries, error routing and timeouts for the nodes above.",[4922,4923,4924],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":2557,"searchDepth":2853,"depth":2853,"links":4926},[4927,4928,4929,4930,4931,4932,4933,4934,4935,4939,4940,4941,4942],{"id":2470,"depth":2853,"text":2471},{"id":2540,"depth":2853,"text":2541},{"id":2683,"depth":2853,"text":2684},{"id":2926,"depth":2853,"text":2927},{"id":3200,"depth":2853,"text":3201},{"id":3320,"depth":2853,"text":3321},{"id":3565,"depth":2853,"text":3566},{"id":3770,"depth":2853,"text":3771},{"id":3933,"depth":2853,"text":3934,"children":4936},[4937,4938],{"id":4174,"depth":2874,"text":4175},{"id":4192,"depth":2874,"text":4193},{"id":4317,"depth":2853,"text":4318},{"id":4424,"depth":2853,"text":4425},{"id":4760,"depth":2853,"text":4761},{"id":4889,"depth":2853,"text":4890},"React to a cart the platform marked abandoned with an Integration Studio workflow that sends a reminder through your own mail or CRM, bring the buyer back by reopening the cart, and set the retention windows so the cart is still there when they click.","md",null,{},{"icon":302},{"title":297,"description":4943},{"loc":298},"NBvYw6QtfvfGVtcRaZqaTB44sxYcKA8B9eRSFmUWkN8",1792158130833]