Markio Privacy Policy
Last updated: 30 August 2026
Markio ("the app") is a Shopify app operated by Veltrio Labs LLC, a Wyoming limited liability company, 30 N Gould St, STE R, Sheridan, WY 82801, United States ("we", "us"). This policy explains what the app stores, why, for how long, and what you can ask us to do about it.
It covers the app itself. It does not cover Shopify, whose own privacy policy governs the data you hold inside your Shopify admin.
The short version
Markio prints barcode labels for your products. It reads your catalog and writes barcodes and SKUs back to it. It does not request, receive or store your customers' personal data, and it cannot: the app asks Shopify for product, inventory, location, metaobject and market access only, and never for orders or customers. There is no way to enable it later without a new permission request that you would have to approve.
What we store, and why
Data about your shop
| What | Why | Where it comes from |
|---|---|---|
Your shop's .myshopify.com domain, shop ID, plan, currency, timezone and primary locale | To identify your shop, price labels in your currency and draw dates in your timezone | Shopify, at install |
| An offline access token for your shop | To read your catalog and write codes back when you are not looking at the app | Shopify OAuth |
| Products and variants: title, options, SKU, barcode, price, compare-at price, cost, vendor, product type, tags, image URL, metafield values | The label needs them to print, and the catalog audit needs them to find duplicate and broken codes | Shopify Admin API and product webhooks |
| Inventory quantities per location, and your location names | "Print one label per unit in stock" and per-location print rules | Shopify Admin API and inventory webhooks |
| Label templates, saved label stocks, printer profiles, saved condition sets and saved jobs | They are the app's own content — the things you create in it | You |
| Print jobs and their lines, print history, rendered label files | To reprint what you printed, and to show who printed what | The app |
| Catalog audit runs, the problems found, bulk fix batches and their before→after values | To show a preview before anything is written, and to undo a fix afterwards | The app |
| Retired barcodes and barcode aliases | So a code that was replaced is never silently issued to a second product | The app |
| Staff roles and per-location restrictions: the Shopify staff user ID and the role you gave it | Roles decide who may change templates and who may only print | You |
| An activity log: which staff user did what, and when | So a catalog rewrite has an author | The app |
| Usage telemetry: named events, each with a number and a small JSON detail object (minutes to first label, labels in a job, issues found, which screen an event came from) | To see where the app is confusing and what to fix | The app |
| Scan checks: the code that was scanned, what it resolved to, whether it matched, how it was scanned, and the Shopify staff user who scanned it | So "this label does not scan" can be answered with what actually happened at the shelf | You, when you use the scan check |
| Saved CSV column mappings and saved filter sets | So an import or a selection you built once does not have to be rebuilt | You |
| A short-lived record of each Shopify webhook delivery id | So a redelivered webhook is not processed twice | Shopify |
| An email address you type in for audit alerts, if you turn them on | To send the alert | You |
Data we do not store
- No customer personal data of any kind. No names, addresses, emails, phone numbers, orders, or anything derived from them. The app does not hold the
read_customersorread_orderspermissions, so Shopify never sends them to us. - No payment details. Your subscription is billed by Shopify through Shopify's own billing, and we never see a card.
- No label content beyond your own catalog. What a label prints comes from the product fields listed above and from text you type into a template.
Diagnostic reports
Settings → Support can assemble a plain-text diagnostic report describing your printer setup and the app's recent errors. It is placed on your clipboard for you to paste into an email — it is never sent automatically. It contains no access tokens and no print links. Read it before you send it; whatever you send us we keep with your support conversation and delete when it is closed.
Print links
Printing opens a separate browser tab on the app's own address, because Chrome no longer lets a page embedded in the Shopify admin reach a printer service on your local network. That tab's URL is a credential for that one print job: it expires, it can be revoked, and only a hash of its secret is stored on our side. Treat it as you would a password — anyone with the link can see and print that job's labels until it expires.
Who else processes this data
| Processor | What it does | Where |
|---|---|---|
| Shopify | The platform the data comes from and is written back to | Per Shopify's terms |
| Fly.io | Runs the app | United States (iad) |
| Neon | Hosts the PostgreSQL database the app stores everything above in | United States (us-east-1) |
| Cloudflare | DNS, the marketing and documentation site, email routing, and object storage for rendered label files | Global edge; storage in the EU or US depending on bucket configuration |
| Resend | Sends audit alert emails, if you enable them | United States |
| Sentry | Receives application error reports. Print-tab tokens and other secrets are stripped from URLs before they are sent | United States |
We do not sell data, and we do not share it with anyone not listed above.
How long we keep it
- While the app is installed: as long as it is useful to you, with four ceilings that apply on their own: - rendered label files (the PDFs a print job produces) are deleted 30 days after the job was created. The print log keeps the job; the sheet itself is re-rendered from the job's own snapshot if you reprint it. - catalog audit runs and the problems they found are deleted after 180 days. - usage telemetry is deleted after 180 days. - scan checks — the row written each time a code is scanned, including which member of staff scanned it — are deleted after 90 days. The scan journal on the Pro plan reads the last 30 days of them. Print history itself stays until you delete it or uninstall.
- When you uninstall: we immediately drop your access token and revoke every live print link, so nothing can be read with them afterwards.
- 48 hours after uninstall, Shopify sends the
shop/redactwebhook and we delete everything belonging to your shop: templates, jobs, print history, the catalog mirror, audit runs, fix batches, retired codes and aliases, saved CSV mappings and filter sets, scan checks, roles, activity logs, telemetry, the webhook delivery records and the shop record itself — and the rendered label files in object storage. The database part is one transaction, and none of it is reversible. - Encrypted database backups taken by us are kept for 30 days and then destroyed; a deleted shop disappears from them as they age out. Our database provider also keeps its own short-term recovery snapshots under its standard terms.
GDPR and CCPA requests
Shopify's three mandatory compliance webhooks are implemented:
customers/data_request— we answer that we hold no customer data, because we do not.customers/redact— the same: there is nothing to erase.shop/redact— everything described above is deleted.
You may also write to us directly at privacy@veltriolabs.com to ask what we hold about your shop, to correct it, or to have it deleted before the 48-hour window. We answer within 30 days, and in practice within one business day Monday to Friday.
If you are in the EU or the UK, you have the right to lodge a complaint with your supervisory authority.
Security
- All traffic is HTTPS.
- Access tokens are stored server-side and never reach the browser.
- A print link stores only a hash of its secret, expires, and can be revoked.
- Images you upload for a label are validated byte by byte before they are stored, and remote image URLs are restricted to public HTTPS addresses.
- Database backups are encrypted before they leave the machine.
No system is perfect, and we do not claim otherwise. If you find a security problem, write to privacy@veltriolabs.com and say so plainly; we would rather hear it from you than from a merchant.
Changes
If this policy changes in a way that affects what we store or who processes it, we will update the date at the top and say what changed in the app's changelog.
Contact
privacy@veltriolabs.com — privacy questions, access and deletion requests. support@veltriolabs.com — everything else.