Draft for the owner’s review. Not legal advice. Fill in the contact address and the effective date before publishing.
zPrint Privacy Policy
Effective date: the day the policy is published.
zPrint is an app for printing labels to ZPL label printers. This policy explains what zPrint sends off your device, to whom, and why.
The short version
- Printing works without an account and without sending your labels anywhere. Your label content, templates, designs and print history stay on your device.
- zPrint sends crash reports to Sentry and anonymous usage counts to Aptabase. Neither contains your name, email, label content, printer serial numbers or IP addresses in the data zPrint sends.
- If you create an account, Supabase stores your email address so you can sign in, and links your install ID to your account so you keep Pro after early access.
- You can delete your account from inside the app.
- When zPrint checks whether you are online, it contacts only the Supabase and Sentry hosts the app already uses, and no other host.
What stays on your device
Your label templates and designs, the values you type into labels, the files you print (PDF, images, ZPL), your print history, your saved printers and printer profiles, and your answers to the first-run survey are stored on your device, in the app’s own database. zPrint does not upload them. The only exception is the survey: the industries and label sizes you pick (never anything you type) are counted anonymously as part of the usage counts below. Uninstalling the app deletes everything stored on your device.
Crash reports (Sentry)
When zPrint crashes or hits an error, it sends a report to Sentry (Functional Software, Inc.), stored in Sentry’s European Union region. A report holds:
- the error, with file paths, email addresses, IP addresses and printer hardware addresses removed from its text, and the text cut to 200 characters;
- the app version and build, the platform, and your plan tier (for example free or Pro);
- the connection type in use (USB, Wi-Fi or Bluetooth);
- a short trail of recent app steps (“breadcrumbs”): the screens you moved through (the name of the screen, with template ids removed), “print started”, “printed” and “voided” (each with the number of labels), connection status changes, the name of a printer setting command you run (never its value), the size of the ZPL sent in bytes, and every usage event listed in the table below, each with its fixed values only;
- what Sentry’s own software adds by itself: your device model, operating system name and version, language and region setting, battery level and charging state, screen size, time zone, and memory and storage, and a random installation id that Sentry’s software creates for itself to count app sessions and crash-free sessions. Sentry never receives zPrint’s install ID.
A report never holds label content, field values, ZPL text, printer serial numbers, IP addresses, your email or your name. zPrint turns off Sentry’s collection of personal data, and screenshots, view hierarchy capture, session replay and performance tracing are off.
Usage counts (Aptabase)
zPrint counts how the app is used through Aptabase, stored in Aptabase’s European Union region. Aptabase does not use a persistent device identifier and does not track you across apps. Each event is a name and a few fixed values. Aptabase’s software adds to every event the operating system name and version, the language and region setting, the app version and build, whether it is a debug build, and a random session id that is never saved on its own (events waiting to be sent are kept on your device, with their session id, until they are sent). Aptabase works out your country from the network address of the request on its server and does not store the address.
| Event | Values sent |
|---|---|
app_opened | platform, locale (app language), text_size (text size setting) |
survey_answered | industries and sizes (the industries and label size presets you picked in the first-run survey), skipped (yes or no) |
setup_guide_opened | path (which setup path), card (which guide card) |
printer_connected | transport (USB, Wi-Fi or Bluetooth), discovered_via (how the printer was found), upgrade (whether a Bluetooth connection moved to Wi-Fi) |
printer_connect_failed | transport, reason (a failure category) |
scan_channel_blocked | channel (for example Wi-Fi), reason (a category, for example permission or no results) |
print_started | source (where the label came from: file, share, template, batch or design), transport, size (label size preset), format (file format) |
print_done | source, transport, size, format, duration (a time range, not an exact time) |
print_failed | source, transport, size, format, reason (a failure category) |
print_cancelled | source, transport, size, format |
job_reprinted | format |
job_voided | format |
template_opened | starter (the starter template’s id, or “user” for your own), use (what the template is for), industry |
template_resized | from and to (label size presets) |
designer_opened | origin (where the designer was opened from) |
designer_saved | origin |
batch_run | rows (a row-count range, not an exact count), outcome |
export_zpl | source (for example a job or a template) |
pro_feature_viewed | feature, entitlement (your plan tier) |
tools_opened | tool (which printer tool) |
queue_added | count (how many files were queued), source (picker, share or sheet) |
queue_started | count (how many jobs the run covers) |
queue_paused | reason (user or failure) |
queue_completed | printed and skipped (counts of jobs) |
Every value is a short lowercase code, a number, a yes or no, or a list of such codes. Anything else is dropped before it is sent. No event contains free text you typed, label content, names, emails, serial numbers or addresses. Events wait on your device until they can be sent, so being offline does not lose them, and each one is deleted from your device once Aptabase accepts it.
Accounts (Supabase)
An account is optional. If you sign up, Supabase (Supabase, Inc.) stores your email address and a password hash so you can sign in, and sends you a confirmation email. Supabase also stores your account’s entitlement (for example “early access”) so the app knows which features you have. Like any server, Supabase’s infrastructure sees the network address of a request while it handles it. For sign-in and security, Supabase also records the network address and the browser or app identifier of each sign-in in its authentication logs, and keeps request logs, each for a limited time.
Install ID and the early-access claim
On first launch zPrint creates a random install ID. It contains no device or personal data. zPrint registers it with Supabase, which records the date it first saw the ID. When you sign in, zPrint sends the install ID with your session so the server can link this install to your account and, if the install was registered before Pro launched and you sign in within 60 days of the Pro launch, grant you Pro for life. The install ID is not sent to Sentry or Aptabase.
How long data is kept
Crash reports are kept for Sentry’s retention period (90 days on the plan zPrint uses). Usage counts are kept by Aptabase in aggregate. Your account, linked install IDs and entitlements are kept until you delete your account. An install registration (the install ID and the date it was first seen) that is never linked to an account is kept while early access runs, and is deleted on request through the contact address below.
Delete your account
Open Settings, then Account, then Delete account. This deletes your account, your linked install IDs and your entitlements from the server. Sign-in records in Supabase’s authentication logs are not removed by deleting the account; they expire on the log retention schedule. Data on your device stays until you uninstall the app.
Your rights
You can ask what data is held about you, ask for a copy, ask for a correction or ask for deletion by writing to the contact address below. If you are in the European Economic Area or the United Kingdom you can also complain to your data protection authority.
Children
zPrint is a business tool and is not directed at children under 13 (16 in the EEA).
Changes
If this policy changes, the new version is published at the same address with a new effective date.
Contact
The owner fills in the contact email before publishing.