In short
- The app stores the shop's products, stock levels, locations and Shopify's history of stock changes, and the names of the merchant's own staff who change or count stock.
- It does not store customers' names, email addresses, phone numbers, postal addresses or orders.
- We do not sell personal data and do not use it for advertising or profiling. The app uses no tracking tools; its only cookie keeps a counter signed in on the counting page.
- The data is kept in the United States, on Render and Neon. When the merchant switches on the daily email, it is sent through Resend.
- When a shop uninstalls the app, everything stored for that shop is deleted after Shopify's erase request, 48 hours later.
Who is responsible
Stockproof: Inventory Audit ("the app") is made and operated by Nexus Logic Systems, Mostaganem, Algeria ("we", "us"). For any question about this policy, write to support@nexuslogicsystems.com.
Who this policy is for
Two groups of people come into contact with the app:
- Merchants: shops that install the app from the Shopify App Store.
- Staff: people who work for a merchant: those who use the app in the Shopify admin, those who count stock with it on a phone or on Shopify POS, and those whose stock changes appear in Shopify's history.
For the personal data of staff, the merchant decides why and how the data is used. The merchant is the controller. We handle that data only to provide the app to the merchant, on the merchant's instructions, as the merchant's processor. If you are a staff member and have a question or a request about your data, please contact the shop first. We help the shop answer you.
What the app stores
The app stores only what it needs to check the shop's stock changes, to run counts, and to keep an account of both for the merchant.
About the merchant's staff
| Data | Why it is stored |
|---|---|
| Sign-in session in the Shopify admin | The session Shopify issues for an embedded app: Shopify user ID, first and last name, email address, language, whether the person is the account owner or a collaborator, and access tokens. It identifies who approves and applies a count. |
| Who changed stock, from Shopify's history | For each stock change Shopify records: the staff member's Shopify ID and name, or the app's ID and name, with the time, the quantity, the reason and the reference document. This is how the app tells a documented change from one with nothing behind it. |
| Counters | The name the merchant gives each person who counts, their role, and their PIN, stored only as a one-way hash. The number of recent wrong PINs and the time a lock ends, to stop guessing. The time the counter was last seen, to keep the staff list current. |
| Counting on Shopify POS | The Shopify POS staff member ID, so that counts made on POS are credited to the right person. |
| Scans | Who scanned, the barcode or SKU scanned, the quantity, an optional zone or shelf typed by the counter, the time on the phone and the time received, and whether it was made offline. |
| ID and name on each action | Counts record who created, submitted and approved them; findings record who resolved them. The merchant's audit log records every action with the person's ID and name. |
About the merchant's shop
| Data | Why it is stored |
|---|---|
| Shop domain, name, currency and time zone | To value stock in the right currency and show the right dates. |
| Shopify access tokens | To read products, stock, locations and Shopify's history of stock changes, and to correct stock after approval, as the merchant has allowed. |
| Products and variants | Titles, SKUs, barcodes, image link, unit cost, vendor, product type, tags and status: to find what a counter scans and to value stock at cost. |
| Locations and stock levels | Location names, opening hours the merchant enters, and stock quantities per location: to compare live stock with the recorded history. |
| Findings | The stock changes the app flags, with their evidence, value at cost, and the merchant's decision and note. |
| Counts | What was counted, the expected and counted quantities, the reason chosen for each difference, and the correction sent to Shopify. |
| Plan, settings and email addresses for the daily email | The merchant's choices. The email addresses are the ones the merchant types in Settings. |
| Background job records | When the app last checked the shop and whether it worked, so that problems can be shown to the merchant. |
Counters can type a zone or shelf, and managers can type a note on a finding or a count. We ask merchants not to put personal details there that are not needed.
Customer data
The app does not query, store or display the shop's customers: no names, email addresses, phone numbers, postal addresses or orders.
Shopify serves its history of stock changes (the inventory_adjustment_history report, read with the read_reports permission) only to apps approved for protected customer data, because the same reporting system can contain customer details. Stockproof holds that approval for this one report and asks it only for stock fields: time, product, location, quantity, reason, the staff member or app that made the change, and the reference document.
Because the app stores no customer data, Shopify's requests to show or erase a customer's data find nothing to return or remove in the app.
On the counter's phone
- A sign-in cookie. When a counter signs in on the counting page, the app sets one cookie that keeps them signed in for up to 12 hours. It is used only for the counting page, cannot be read by scripts, and is not used for tracking.
- Scans waiting to be sent. Scans are saved in the phone's browser storage until the server confirms them, so that no scan is lost when the connection drops. They are removed once they are confirmed. The browser also remembers which count was open.
- The device's address. To limit sign-in attempts, the server keeps the device's IP address in memory for at most 10 minutes. It is not written to the database.
What the app reads and writes in Shopify
The app asks the merchant for these permissions: read products; read and write inventory; read locations; read reports (Shopify's history of stock changes).
The app writes only one thing into the shop: stock quantity corrections from counts, after a manager has approved them. Each correction is recorded in Shopify with the reason "count" and the app's name. Shopify then holds that data under the merchant's own agreement with Shopify.
What we do not do
- We do not sell personal data.
- We do not use personal data for advertising or for profiling.
- We do not send marketing emails or text messages. When the merchant switches it on, the app sends a daily email about new findings to the addresses the merchant chose, and nothing else.
- We do not make automated decisions about a person that have a legal effect. The app flags stock changes for the merchant to review; a manager decides every finding and approves every correction.
- Our server logs do not contain IP addresses or access tokens. For each request the server logs the method, the address requested, the status and the time it took. The address can include the shop's domain and the code of the counting link.
Where the data is kept
The app's server and database are in the United States. We are based in Algeria. Personal data of staff may therefore be handled outside the country where the staff member or the merchant lives. A merchant who needs a data processing agreement for this can ask for one at support@nexuslogicsystems.com.
How long it is kept
| Data | How long |
|---|---|
| Shopify's history of stock changes, as stored by the app | For the history period of the merchant's plan: 30 days on Free, 12 months on Starter, 24 months on Growth, 36 months on Pro. Older changes are added into each stock level's starting balance and then deleted. |
| Findings, counts, scans, counters and the audit log | As long as the merchant has the app installed. They are the merchant's business records. |
| Products, locations and stock levels | As long as the app is installed; refreshed from Shopify as they change. |
| Staff sign-in sessions in the Shopify admin | Deleted when the app is uninstalled. |
| Counter sign-in on a phone | The cookie expires after 12 hours or when the counter signs out. |
| Device addresses for sign-in limits | At most 10 minutes, in memory only. |
| Daily emails | Not stored by the app after sending. Resend keeps its own record of delivered emails for a limited time. |
| Server logs | Kept by our hosting provider for a limited time, at most 30 days. |
| Database history kept for recovery | Kept by our database provider for a limited time, at most 30 days. |
Requests and your rights
Depending on where you live, you may have the right to see, correct, erase or restrict the use of your personal data, to object to its use, to receive it in a portable form, and to complain to your data protection authority.
Staff: please send your request to the shop you work for. A merchant can deactivate a counter in the app at any time, and can write to us for anything the app cannot do itself, such as deleting a counter's record. Merchants: write to support@nexuslogicsystems.com. We answer within 30 days.
Some records are kept as the merchant's business records even after a request, for example the name on an approved count or in the audit log, because they show who did what with the shop's stock. The audit log cannot be edited; this is what makes it trustworthy.
When you uninstall
When a merchant uninstalls the app, staff sign-in sessions are deleted at once and the app stops all work for that shop. The shop's records are kept for 48 hours. After 48 hours Shopify asks the app to erase the shop, and the app then deletes everything it stores for it: products, stock levels, history, findings, counts, scans, counters, settings and the audit log.
Every notice from Shopify is checked for Shopify's signature before the app acts on it.
Security
- All traffic between Shopify, the app's server and the database is encrypted in transit, and the database is encrypted at rest.
- Requests from the Shopify admin and from Shopify POS are accepted only with a valid session token from Shopify.
- Each shop's data is kept apart from every other shop's.
- The counting page needs the shop's private link and a counter's PIN. PINs are stored as one-way hashes; five wrong PINs lock that name for 15 minutes, and each device is limited to 20 attempts in 10 minutes. The merchant can replace the link at any time.
- Stock is corrected in Shopify only after a manager approves, and each correction is sent so that it cannot be applied twice.
- The audit log is a chain of records, each sealed with the one before it, and the app can check that it is unchanged.
No system is perfectly secure. If we learn of a breach that affects personal data handled for a merchant, we tell the merchant without undue delay.
Children
The app is a tool for businesses. It is not directed at children, and we do not knowingly collect data from children.
Changes to this policy
When we change this policy, we publish the new version on this page with a new effective date. If a change is important for merchants, we also tell them in the app or by email.
Contact
Nexus Logic Systems
Mostaganem, Algeria
support@nexuslogicsystems.com
This policy describes the Shopify app Stockproof: Inventory Audit. It does not describe the website nexuslogicsystems.com.