1"use strict";(globalThis.webpackChunkmy_website=globalThis.webpackChunkmy_website||[]).push([[2122],{1972(e,t,n){n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"troubleshooting/stock-data-is-readonly","title":"Stock Data is Read-Only","description":"Synplex cannot edit stock quantities. All inventory levels come from Shopify, which is the single source of truth for stock data.","source":"@site/docs/troubleshooting/stock-data-is-readonly.md","sourceDirName":"troubleshooting","slug":"/troubleshooting/stock-data-is-readonly","permalink":"/docs/troubleshooting/stock-data-is-readonly","draft":false,"unlisted":false,"editUrl":"https://github.com/synplex/help-center/tree/main/docs/troubleshooting/stock-data-is-readonly.md","tags":[],"version":"current","sidebarPosition":6,"frontMatter":{"id":"stock-data-is-readonly","title":"Stock Data is Read-Only","sidebar_position":6},"sidebar":"docs","previous":{"title":"Why Revenue Numbers Differ","permalink":"/docs/troubleshooting/revenue-calculation-differences"},"next":{"title":"When & How to Contact Support","permalink":"/docs/troubleshooting/escalate-to-support"}}');var s=n(4848),i=n(8453);const r={id:"stock-data-is-readonly",title:"Stock Data is Read-Only",sidebar_position:6},a="Stock Data is Read-Only",l={},c=[{value:"Why stock is read-only",id:"why-stock-is-read-only",level:2},{value:"How to update stock quantities",id:"how-to-update-stock-quantities",level:2},{value:"How quickly Synplex reflects Shopify changes",id:"how-quickly-synplex-reflects-shopify-changes",level:2},{value:"Common scenarios",id:"common-scenarios",level:2},{value:"FAQ",id:"faq",level:2},{value:"Related",id:"related",level:2}];function d(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"stock-data-is-read-only",children:"Stock Data is Read-Only"})}),"\n",(0,s.jsx)(t.p,{children:"Synplex cannot edit stock quantities. All inventory levels come from Shopify, which is the single source of truth for stock data."}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"why-stock-is-read-only",children:"Why stock is read-only"}),"\n",(0,s.jsx)(t.p,{children:"Synplex is an inventory planning tool, not an inventory management system. It reads stock from Shopify, analyses it, and generates recommendations. It does not write back to Shopify inventory levels."}),"\n",(0,s.jsx)(t.p,{children:"This separation is intentional:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Single source of truth"})," \u2014 Shopify holds the authoritative stock record. There is no risk of Synplex overwriting a manual adjustment or conflicting with another system updating Shopify."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Audit trail"})," \u2014 every stock change is recorded in Shopify with a timestamp and user, giving you a complete history of movements."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Simplicity"})," \u2014 you only need to update stock in one place."]}),"\n"]}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"how-to-update-stock-quantities",children:"How to update stock quantities"}),"\n",(0,s.jsx)(t.p,{children:"All stock adjustments must be made in Shopify. Synplex will reflect the change automatically."}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["Go to ",(0,s.jsx)(t.strong,{children:"Shopify Admin \u2192 Products \u2192 Inventory"})]}),"\n",(0,s.jsx)(t.li,{children:"Find the product and variant you want to update"}),"\n",(0,s.jsx)(t.li,{children:"Click the quantity field for the relevant location and enter the new value"}),"\n",(0,s.jsx)(t.li,{children:"Save"}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["Shopify will fire a webhook and Synplex will update within a few seconds. If the change does not appear immediately, go to ",(0,s.jsx)(t.strong,{children:"Settings \u2192 Sync"})," and trigger a manual sync."]}),"\n",(0,s.jsxs)(t.p,{children:["For bulk updates, Shopify supports CSV import via ",(0,s.jsx)(t.strong,{children:"Products \u2192 Inventory \u2192 Export/Import"}),"."]}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"how-quickly-synplex-reflects-shopify-changes",children:"How quickly Synplex reflects Shopify changes"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Method"}),(0,s.jsx)(t.th,{children:"How it works"}),(0,s.jsx)(t.th,{children:"Typical time to appear in Synplex"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Webhook (automatic)"}),(0,s.jsx)(t.td,{children:"Shopify notifies Synplex the moment you save a change"}),(0,s.jsx)(t.td,{children:"Seconds"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Daily reconciliation"}),(0,s.jsx)(t.td,{children:"Runs overnight and catches anything webhooks missed"}),(0,s.jsx)(t.td,{children:"By the following morning"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Manual sync"}),(0,s.jsx)(t.td,{children:"You trigger it via Settings \u2192 Sync"}),(0,s.jsx)(t.td,{children:"Within 2\u201315 minutes"})]})]})]}),"\n",(0,s.jsx)(t.p,{children:"The Last Synced timestamp on the dashboard reflects reconciliation and manual syncs only \u2014 it does not update when a webhook fires. So data can be current even if the timestamp looks a few hours old."}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"common-scenarios",children:"Common sce
1narios"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Physical stock count reveals a discrepancy"}),"\nUpdate the quantity in Shopify to match your physical count. Synplex will reflect the correction and recalculate reorder recommendations based on the new figure."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Damaged or unusable stock"}),"\nReduce the quantity in Shopify by the number of damaged units. Synplex will adjust its calculations accordingly."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Stock received from a supplier"}),"\nIf you are not using Synplex purchase orders to receive stock, update the quantity manually in Shopify. Synplex will pick up the increase and update Days to Stockout and reorder metrics."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Customer return added back to stock"}),"\nUpdate the quantity in Shopify after inspecting and restocking the returned units."]}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"faq",children:"FAQ"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Can I bulk edit stock in Synplex?"}),"\nNo. Use Shopify's bulk inventory edit \u2014 go to ",(0,s.jsx)(t.strong,{children:"Products \u2192 Inventory"}),", select the products you want to update, and use the bulk edit or CSV export/import option."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"What if Synplex stock doesn't match Shopify after a change?"}),"\nCheck the Last Synced timestamp. If it is recent, the webhook may still be processing \u2014 wait a minute and refresh. If data is still mismatched, trigger a manual sync via ",(0,s.jsx)(t.strong,{children:"Settings \u2192 Sync"}),". If it still does not match after a sync, see ",(0,s.jsx)(t.a,{href:"/docs/troubleshooting/connection-and-data-status",children:"Connection & Data Status"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Will Synplex ever write stock back to Shopify?"}),"\nNo. The data flow is always Shopify \u2192 Synplex only."]}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"related",children:"Related"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/docs/troubleshooting/connection-and-data-status",children:"Connection & Data Status"})," \u2014 verify data is fresh and the connection is healthy"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"/docs/troubleshooting/common-problems",children:"Common Problems"})," \u2014 if stock quantities look wrong in Synplex"]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453(e,t,n){n.d(t,{R:()=>r,x:()=>a});var o=n(6540);const s={},i=o.createContext(s);function r(e){const t=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(i.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.