[{"data":1,"prerenderedAt":259},["ShallowReactive",2],{"navigation":3,"/changelog/2026/26-04-26-serial-scanning":166},[4],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Docs",false,"/docs","docs",[10,14,33,56,94,102,129,151],{"title":11,"path":7,"stem":12,"icon":13},"Landing","docs/index","lucide:house",{"title":15,"path":16,"stem":17,"children":18,"icon":6},"Concepts","/docs/concepts","docs/concepts/1.index",[19,21,25,29],{"title":20,"path":16,"stem":17},"Introduction",{"title":22,"path":23,"stem":24},"External IDs","/docs/concepts/xids","docs/concepts/2.xids",{"title":26,"path":27,"stem":28},"Barcodes","/docs/concepts/barcodes","docs/concepts/barcodes",{"title":30,"path":31,"stem":32},"Capabilities","/docs/concepts/capabilities","docs/concepts/capabilities",{"title":34,"icon":6,"path":35,"stem":36,"children":37},"Configuration","/docs/configure","docs/configure/index",[38,39,43,47,52],{"title":20,"path":35,"stem":36},{"title":40,"path":41,"stem":42},"Devices","/docs/configure/devices","docs/configure/devices",{"title":44,"path":45,"stem":46},"Pack Stations","/docs/configure/pack-stations","docs/configure/pack-stations",{"title":48,"path":49,"stem":50,"icon":51},"Packaging","/docs/configure/packaging","docs/configure/packaging","lucide:package",{"title":53,"path":54,"stem":55},"Quarantine Locations","/docs/configure/quarantine-locations","docs/configure/quarantine-locations",{"title":57,"icon":6,"path":58,"stem":59,"children":60},"Developers","/docs/developer","docs/developer/index",[61,63,88],{"title":62,"path":58,"stem":59},"Node.js",{"title":64,"path":65,"stem":66,"children":67,"icon":87},"API","/docs/developer/graphql","docs/developer/graphql/1.index",[68,71,75,79,83],{"title":69,"path":65,"stem":66,"icon":70},"Overview","lucide:rocket",{"title":72,"path":73,"stem":74},"Getting started with the Jungle API","/docs/developer/graphql/getting-started","docs/developer/graphql/2.getting-started",{"title":76,"path":77,"stem":78},"API Keys","/docs/developer/graphql/obtaining-keys","docs/developer/graphql/3.obtaining-keys",{"title":80,"path":81,"stem":82},"GraphQL Reference","/docs/developer/graphql/schema","docs/developer/graphql/5.schema",{"title":84,"path":85,"stem":86},"Jungle Platform API - Global Features","/docs/developer/graphql/api-global-features","docs/developer/graphql/api-global-features","file-icons:graphql",{"title":89,"path":90,"stem":91,"children":92,"icon":6},"SDKs","/docs/developer/sdk","docs/developer/sdk/1.index",[93],{"title":62,"path":90,"stem":91},{"title":95,"path":96,"stem":97,"children":98,"order":100,"parent":64,"group":101,"icon":6},"Feeds","/docs/feed","docs/feed/01.index",[99],{"title":69,"path":96,"stem":97,"order":100,"parent":64,"group":101},2,"feedgroup",{"title":103,"path":104,"stem":105,"children":106},"","/docs/guide","docs/guide/index",[107,108,113,117,121,125],{"title":103,"path":104,"stem":105},{"title":109,"path":110,"stem":111,"icon":112},"Attachments","/docs/guide/attachments","docs/guide/attachments","lucide:paperclip",{"title":114,"path":115,"stem":116},"Configuring Jungle For Your Organisation","/docs/guide/configuring-jungle-for-your-warehouse","docs/guide/configuring-jungle-for-your-warehouse",{"title":118,"path":119,"stem":120},"Updating Inventory","/docs/guide/inventory-update","docs/guide/inventory-update",{"title":122,"path":123,"stem":124},"Use Case - Orders with fulfilments","/docs/guide/orders","docs/guide/orders",{"title":126,"path":127,"stem":128},"Tagging Objects","/docs/guide/tagging","docs/guide/tagging",{"title":130,"path":131,"stem":132,"children":133,"icon":6},"Types","/docs/objects","docs/objects/index",[134,135,139,143,147],{"title":103,"path":131,"stem":132},{"title":136,"path":137,"stem":138},"Location","/docs/objects/locations","docs/objects/locations",{"title":140,"path":141,"stem":142},"Product","/docs/objects/products","docs/objects/products",{"title":144,"path":145,"stem":146},"Purchase Order","/docs/objects/purchase-orders","docs/objects/purchase-orders",{"title":148,"path":149,"stem":150},"Supplier Return","/docs/objects/supplier-returns","docs/objects/supplier-returns",{"title":152,"icon":6,"path":153,"stem":154,"children":155},"Policy","/docs/policy","docs/policy/index",[156,157,162],{"title":152,"path":153,"stem":154},{"title":158,"path":159,"stem":160,"icon":161},"Privacy","/docs/policy/general-privacy","docs/policy/general-privacy","lucide:shield",{"title":163,"path":164,"stem":165},"Terms service","/docs/policy/general-terms","docs/policy/general-terms",{"id":167,"title":168,"body":169,"date":243,"description":244,"extension":245,"meta":246,"navigation":247,"path":248,"seo":249,"stem":250,"tags":251,"type":257,"version":257,"__hash__":258},"changelog/changelog/2026/26-04-26-serial-scanning.md","Serial scanning at packing and QR-coded order labels",{"type":170,"value":171,"toc":241},"minimark",[172,176,179,233],[173,174,175],"p",{},"Packers can now scan serial numbers per unit at packing, with optional photo capture, configured per product as a capability so it only kicks in where it's needed.",[173,177,178],{},"Orders can now generate an A6 ZPL label with an embedded QR code, for use in custom labelling, dashboards, or scan workflows.",[180,181,182],"changelog-improvements",{},[183,184,185,189,197,200,203,206,209,212,215,218,224,227,230],"ul",{},[186,187,188],"li",{},"System-level XIDs are now supported, allowing Jungle to provide well known external identifiers from upstream systems.",[186,190,191,192,196],{},"Transactions accept an explicit ",[193,194,195],"code",{},"processedAt",", useful for backdated reconciliation.",[186,198,199],{},"Attribute values on individual order line items can now be edited after creation.",[186,201,202],{},"Splitting an allocation now correctly handles unfulfilled identical SKUs that share a pack job.",[186,204,205],{},"Inventory selection during picking now prefers a location that can fully satisfy the quantity, reducing multi-location picks.",[186,207,208],{},"Inventory adjustment movements can be restricted to admin users if desired.",[186,210,211],{},"Closing a purchase order with pending receives is now blocked, complete the recieve jobs to be able close the PO.",[186,213,214],{},"Splitting a purchase order line retains the original pricing rather than resetting it.",[186,216,217],{},"Product type is now included in product feeds.",[186,219,220,223],{},[193,221,222],{},"orderedAt"," is now included in the purchase order feed.",[186,225,226],{},"Stock adjustments made while unpacking now record the originating allocation, improving traceability.",[186,228,229],{},"HS code fields now accept longer codes for jurisdictions that need them.",[186,231,232],{},"Stock reserved for a job no longer blocks allocation routing on other orders.",[234,235,236],"changelog-fixes",{},[183,237,238],{},[186,239,240],{},"Errors during allocation split are now surfaced individually rather than hidden behind a generic failure.",{"title":103,"searchDepth":100,"depth":100,"links":242},[],"2026-04-26T00:00:00.000Z","Capture serial numbers per unit at packing, and print A6 ZPL order labels with embedded QR codes.","md",{},true,"/changelog/2026/26-04-26-serial-scanning",{"title":168,"description":244},"changelog/2026/26-04-26-serial-scanning",[252,253,254,255,256],"pack","serial","order","label","purchase-order",null,"NQr1jnpmg6CsELNkZTIp-ZJ1H9U67yNdbVm9ljJV3-s",1777451135227]