{"id":1731,"date":"2026-05-03T21:29:53","date_gmt":"2026-05-03T19:29:53","guid":{"rendered":"https:\/\/newcraft.dev\/posts\/\/"},"modified":"2026-05-03T21:29:53","modified_gmt":"2026-05-03T19:29:53","slug":"shopify-book-restock-scan-an-isbn-to-bump-inventory","status":"publish","type":"marketing-post","link":"https:\/\/newcraft.dev\/nl\/posts\/shopify-book-restock-scan-an-isbn-to-bump-inventory\/","title":{"rendered":"Shopify Book Restock: Scan an ISBN to Bump Inventory"},"content":{"rendered":"\n<p><strong>TL;DR:<\/strong> Bought more copies of a book you already sell on Shopify? Scan the ISBN at the till. The <a href=\"https:\/\/newcraft.dev\/apps\/books-importer-for-shopify\/\">ISBN import tool for Shopify<\/a> now sees the existing product and bumps the inventory by one instead of telling you &#8220;duplicate, skipped&#8221; and walking off. No new draft, no manual count adjustment, no separate restocking workflow. The book that was already on your site just got more available.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The duplicate-ISBN problem nobody talks about<\/h2>\n\n\n\n<p>If you sell books, you restock the same titles regularly. A popular cookbook sells out, you order more, the box arrives, you scan them in. Until now, the second time you scanned an ISBN, the app politely refused. &#8220;This book already exists. Duplicate skipped.&#8221;<\/p>\n\n\n\n<p>Which is the right behavior if you&#8217;re trying to avoid creating two product pages for one book. But it&#8217;s the wrong behavior if you&#8217;re trying to update inventory. So you&#8217;d close the import preview, navigate to Shopify admin, search for the product, find the inventory section, increment by one, save. Then do it again for the next copy. And the next.<\/p>\n\n\n\n<p>For shops that move forty to a hundred copies a week of repeat stock, that&#8217;s an hour or two of admin time spent doing the same fifteen clicks over and over.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What changed<\/h2>\n\n\n\n<p>The duplicate path now has a clear branch. If you scan an ISBN that matches an existing Shopify product, the app:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n  \n<li>Recognizes the duplicate<\/li>\n\n  \n<li>Shows you the existing product (so you know what you&#8217;re updating)<\/li>\n\n  \n<li>Increments the inventory count by the quantity you specify, defaulting to one<\/li>\n\n  \n<li>Logs the update in your import history so you can audit it later<\/li>\n\n<\/ol>\n\n\n\n<p>You stay on the till. You scan the next book. The shop&#8217;s inventory in Shopify reflects what&#8217;s actually on your shelves.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What it looks like in practice<\/h2>\n\n\n\n<p>Walk through a real restocking session:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n  \n<li>Box of fifteen books arrives. Ten are existing titles you&#8217;ve sold before. Five are new.<\/li>\n\n  \n<li>You open Shopify POS, tap Book Scanner.<\/li>\n\n  \n<li>You scan book one (an existing title). The app says &#8220;Updated stock for The Goldfinch by Donna Tartt: now 3 in stock.&#8221; You scan the next.<\/li>\n\n  \n<li>Book five is new to your shop. The app creates a draft product as it always has.<\/li>\n\n  \n<li>Book ten is also existing. It bumps stock again.<\/li>\n\n  \n<li>Fifteen scans, two outcomes (update or create draft), zero detours into Shopify admin.<\/li>\n\n<\/ul>\n\n\n\n<p>The whole box is checked in by the time the kettle boils. For a deeper look at the till workflow side of this, see how the <a href=\"https:\/\/newcraft.dev\/posts\/scan-books-into-shopify-from-your-phone-with-pos-book-scanner\/\">POS Book Scanner works in your shop<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">When the app increments vs creates new<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n  <thead>\n    <tr>\n      <th>Situation<\/th>\n      <th>What the app does<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>ISBN matches an existing Shopify product (by ISBN-13 barcode or SKU)<\/td>\n      <td>Increments inventory on that product<\/td>\n    <\/tr>\n    <tr>\n      <td>ISBN matches an existing draft product<\/td>\n      <td>Increments inventory on the draft (unpublished products restock too)<\/td>\n    <\/tr>\n    <tr>\n      <td>ISBN doesn&#8217;t match any existing product<\/td>\n      <td>Runs a normal lookup and creates a new draft<\/td>\n    <\/tr>\n    <tr>\n      <td>ISBN matches a related-edition variant (different binding, same title)<\/td>\n      <td>Increments inventory on the matching variant only<\/td>\n    <\/tr>\n    <tr>\n      <td>ISBN matches multiple products (rare, usually a data issue)<\/td>\n      <td>Surfaces both, you choose which to update<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">For shops with rotating stock<\/h2>\n\n\n\n<p>This change is built for the kind of bookshop where the same hundred titles cycle through your shelves all year. A cookbook series. A locally popular author. The current literary-prize shortlist. The books you reorder every week.<\/p>\n\n\n\n<p>If your stock is mostly one-off used books, the restock flow rarely fires (every book is unique). You won&#8217;t notice the difference. If your stock is mostly repeat new releases, this is one of the bigger workflow improvements you&#8217;ll see this year.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What you keep control over<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n  \n<li><strong>You can override the increment.<\/strong> Default is one per scan. If a box has eight of the same book, scan once and edit the count, or scan eight times. Both work.<\/li>\n\n  \n<li><strong>You can opt out.<\/strong> If you&#8217;d rather always see a confirmation before stock changes, the setting is in the app&#8217;s import preferences. Useful if your team is new and you want to verify each scan first.<\/li>\n\n  \n<li><strong>Audit trail in import history.<\/strong> Every increment is logged with timestamp, scanner, and the ISBN. If you ever need to reconcile, the data is there.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">The broader point<\/h2>\n\n\n\n<p>Most book import tools treat duplicates as errors. The reality is that duplicates are usually the most common case. You sell titles you&#8217;ve sold before. You restock things customers buy. Treating that as an exception instead of the main path forces every restocking session into a manual workaround.<\/p>\n\n\n\n<p>For more on building a book catalog that scales without friction, the post on <a href=\"https:\/\/newcraft.dev\/posts\/how-to-add-books-to-shopify-without-typing-every-product-manually\/\">adding books without typing every product<\/a> covers the broader philosophy: the boring work should disappear, the curatorial work should stay yours.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Real time savings<\/h2>\n\n\n\n<p>A bookshop that restocks fifty repeat titles a week saved roughly an hour per week after switching on the increment-on-duplicate behavior. Across a year, that&#8217;s two working weeks of till time, give or take. Spent on customers, sourcing, or display, instead of clicking through Shopify admin to bump a number.<\/p>\n\n\n\n<p>It&#8217;s not a glamorous improvement. Nobody&#8217;s going to write a press release about scanning ISBNs faster. But operationally, this is the kind of change that compounds. Each scan that doesn&#8217;t make you switch contexts is a few seconds saved and a tiny bit of mental energy preserved. You feel the difference at the end of a busy day.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Does it bump inventory across all locations or just one?<\/h3>\n\n\n\n<p>You pick the location at the till as you do for any other inventory update. The app honors whatever location preference you&#8217;ve set for the device.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What if the existing product had inventory tracking turned off?<\/h3>\n\n\n\n<p>The app turns it on for that product before incrementing. Otherwise, the count would be meaningless. If you&#8217;d rather skip products that have tracking disabled, that&#8217;s a setting too.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Will it bump inventory on archived products?<\/h3>\n\n\n\n<p>No. Archived products are treated as removed from the catalog. If you scan one, you&#8217;ll be prompted to either restore it (and then increment) or create a new draft.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How does it handle products with no ISBN-13 barcode?<\/h3>\n\n\n\n<p>It matches on barcode first, then SKU. If you&#8217;ve been using ISBN-13 as the SKU (which the app does by default), matching works. If you&#8217;ve used your own SKU scheme, you may want to back-fill the ISBN-13 on those products to enable the restock match.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can I restock and update price at the same time?<\/h3>\n\n\n\n<p>Restock is inventory-only by default. To update the price on the existing product, edit it in Shopify admin or re-import with the override option. Keeping these separate is intentional: most shops don&#8217;t want their till team accidentally changing prices.<\/p>\n\n\n\n<p><a href=\"https:\/\/newcraft.dev\/apps\/books-importer-for-shopify\/\">Install Book Importer for Shopify<\/a> and stop hand-editing inventory after every restocking box.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Got more copies of a book you already sell? Scan the ISBN and inventory goes up. No duplicate listings.<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"_acf_changed":false,"_breakdance_hide_in_design_set":false,"_breakdance_tags":""},"class_list":["post-1731","marketing-post","type-marketing-post","status-publish","hentry"],"acf":{"related_apps":[1537]},"_links":{"self":[{"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/marketing-post\/1731","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/marketing-post"}],"about":[{"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/types\/marketing-post"}],"acf:post":[{"embeddable":true,"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/shopify-app\/1537"}],"wp:attachment":[{"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/media?parent=1731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}