Privacy Policy
Effective date: April 30, 2026.
This Privacy Policy describes how ZSA Technology Labs (“ZSA”, “we”, “us”, “our”) collects, uses, shares, and protects personal information when you visit our websites, make a purchase from us, or use one of our applications.
ZSA Technology Labs is a Canadian federal corporation with its registered office at 250 University Ave, Toronto, ON, M5H 3E5. ZSA is the controller of the personal information described in this policy.
Privacy Officer
In accordance with Canada’s Personal Information Protection and Electronic Documents Act (PIPEDA) and Quebec’s Act respecting the protection of personal information in the private sector (Law 25), we have designated a privacy officer who is accountable for our compliance with this policy and applicable privacy laws.
Privacy Officer: Erez Zukerman
Email: [email protected]
Mail: Privacy Officer, ZSA Technology Labs, 250 University Ave, Toronto, ON, M5H 3E5
What This Policy Covers
This privacy policy covers:
- zsa.io and any sub-domains under zsa.io (including our online keyboard configurator, Oryx)
- ergodox-ez.com
- zsa.fun
- typ.ing
- Our local applications: Keymapp, Kontroll, and Zapp
We refer to these collectively as “the Sites” or “our Sites”. typ.ing and Oryx are operated as separate products with separate codebases, servers, databases, and user accounts; where this distinction matters, we say so.
Summary
We only collect personal information that is necessary for the purposes described in this policy.
We do not sell your personal information, and we do not share it for cross-context behavioural advertising.
We do not share your personal information with third parties except as needed to provide the services you have requested, to comply with the law, or as otherwise described in this policy.
You can ask us to access, correct, or delete the personal information we hold about you.
We do not knowingly collect personal information from children.
We do not use your information to make automated decisions that produce legal or similarly significant effects.
Personal Information We Collect
We collect the following categories of personal information:
- Device Information — automatically collected when you visit our Sites or use our applications.
- Order Information — collected when you place or attempt to place an order.
- Marketing Information — collected when you sign up to receive communications from us.
- Account Information — collected when you create an account on Oryx or typ.ing.
- User Content — content you create using our applications, such as keyboard layouts, macros, and typ.ing custom training texts.
Device Information
How We Collect Device Information↓
Device Information is collected automatically when you visit our Sites or use our applications. It is derived from request headers, browser cookies, and other information your device or web browser provides as part of a network request.
We primarily capture device information via log files from our infrastructure providers.
What Device Information We Collect↓
We collect:
- IP address
- Locale information as provided by the browser
- Other information provided automatically by your device or browser as part of your network request
How We Use Device Information↓
We use device information to:
- Protect our Sites against abuse and fraud (IP address, locale)
- Serve content appropriate to your country or region (locale)
- Diagnose issues, monitor stability, and improve our services
How We Share Device Information↓
We do not share device information with third parties except as needed to operate our Sites.
Our hosting and CDN providers (Cloudflare and Digital Ocean) may, in the course of fulfilling your request, collect additional device information. You can view the Cloudflare privacy policy and the Digital Ocean privacy policy.
Our checkout provider (Shopify) may also collect device information when you make a purchase. You can view the Shopify privacy policy.
Cookies and Similar Technologies↓
We use only cookies and similar technologies that are strictly necessary to operate our Sites — for example, to keep you signed in, remember items in your cart, and protect against fraud. We do not set cookies for behavioural advertising, retargeting, or A/B testing, and we do not use third-party analytics cookies on our storefront. Because we do not place non-essential cookies, we do not display a cookie consent banner.
Order Information
How We Collect Order Information↓
We collect order information during the checkout process when you place an order with us. We may collect this information even if you do not complete the order or later cancel it.
What Order Information We Collect↓
We collect:
- Name
- Company (if provided)
- Shipping and billing address
- Email address
- Phone number
Payment is processed by Shopify Payments (which also supports Apple Pay). We do not see, store, or process your full payment card number.
How We Use Order Information↓
We use order information to:
- Fulfill your order, including shipping and customer support
- Screen for fraud and protect our customers
- Comply with applicable tax and trade laws
How We Share Order Information↓
We share order information only as needed to fulfill your order. Recipients include Shopify (our e-commerce and checkout platform), our shipping and fulfillment partners, and the relevant carriers.
Our shipping and fulfillment partners change from time to time depending on your destination and current logistics. They receive only the information needed to ship and deliver your order.
You can view the Shopify privacy policy.
Order Information Data Retention↓
We retain order information for as long as we have an ongoing relationship with you, and for as long as we are legally required to (for example, to meet tax, accounting, or anti-fraud obligations). You may ask us to delete your order information; we will do so to the extent permitted by law.
Marketing Information
How We Collect Marketing Information↓
We collect your email address when you sign up for our newsletter — either through a signup form on our Sites, or during Shopify checkout.
What Marketing Information We Collect↓
We collect your email address.
How We Use Marketing Information↓
We use your email address to send you periodic information about ZSA products, services, activities, and other relevant topics. You can unsubscribe at any time using the link at the bottom of every email, or by contacting us.
How We Share Marketing Information↓
We do not sell or otherwise share your marketing information with third parties for their own marketing purposes.
We use Mailchimp to send marketing email. You can view the Mailchimp privacy policy.
We use n8n Cloud (operated by n8n.io) to route signup events from Shopify and from our signup forms into Mailchimp. You can view the n8n privacy policy.
Marketing Information Data Retention↓
We retain your email address until you unsubscribe or ask us to delete it. Unsubscribe requests are processed promptly.
Account Information
You can use Oryx and typ.ing without creating an account, with reduced functionality. If you choose to create an account, we collect and store the information described below. Account systems for Oryx and typ.ing are entirely separate from each other.
Oryx Accounts↓
Oryx supports account creation by email or via social login (currently Google and GitHub; we may add additional providers over time). Oryx supports two-factor authentication.
For an Oryx account, we may store:
- Email address
- Display name
- Identifiers from your social login provider, where applicable
- Two-factor authentication secrets and recovery codes, if you enable two-factor authentication
- Your saved keyboard layouts and associated metadata (such as layout names and tags)
- Other information necessary to operate or improve Oryx — for example, account activity timestamps, preferences, and information related to features we add over time
Oryx does not exchange data with our Shopify storefront or with typ.ing. Your Oryx account is not linked to any other system on the basis of your purchase history.
typ.ing Accounts↓
For a typ.ing account, we may store:
- Email address
- Display name
- Password hash
- Your custom training texts (private to you; not shared)
- Your training history, settings, and daily challenge results
- Your Readwise API token, encrypted at rest, if you choose to connect Readwise (see below)
- A flag indicating whether you are a ZSA customer (see “typ.ing & Shopify Sync” below)
- Other information necessary to operate or improve typ.ing — for example, account activity timestamps, preferences, and information related to features we add over time
How We Use Account Information↓
We use account information to:
- Authenticate you and protect your account
- Save your work (layouts, custom texts, settings) so you can return to it
- Provide account-specific features and personalize your experience within the relevant product
- Communicate with you about your account
- Maintain the security and integrity of our services
How We Share Account Information↓
We do not share account information with third parties for their own purposes. Account data is stored on infrastructure operated by our hosting providers (see “Where Your Information Is Stored” below).
When you sign in via Google or GitHub, those providers receive information about your sign-in attempt in accordance with their own privacy policies.
Account Deletion↓
You can ask us to delete your Oryx or typ.ing account at any time. When you do, we delete your account and the personal information associated with it, including your saved layouts (Oryx) or your custom texts, training history, settings, and Readwise token (typ.ing).
Our Applications: Keymapp, Kontroll, and Zapp
Keymapp, Kontroll, and Zapp run locally on your computer. Kontroll and Zapp are open source and available on GitHub.
What These Applications Do↓
Keymapp displays your live keymap, generates an on-device heat map of your keyboard use, and flashes firmware onto your ZSA keyboard. It exposes a local API that other applications can use to control certain aspect of your keyboard such as layers, but only when you explicitly enable this API feature in Keymapp's settings (it is off by default). The heat map is processed strictly on your device and is never transmitted to us or to anyone else.
Kontroll is a command-line tool that demonstrates how to use the Keymapp API to control your ZSA keyboard from scripts and the command line.
Zapp is a command-line tool for flashing your ZSA keyboard.
What Information These Applications Send↓
When Keymapp or Zapp needs to fetch a keyboard layout, it sends the layout’s hash identifier (which is stored in your keyboard’s firmware) to Oryx. The request is logged on our servers and includes your IP address. The hash identifier is not, on its own, tied to your account.
Keymapp, Kontroll, and Zapp also perform:
- Update checks
- Anonymous usage telemetry — this telemetry does not include a persistent identifier that would let us link telemetry events to a particular installation or user
- Crash reporting — crash reports may include your IP address along with technical information about the crash (such as a stack trace)
Crash reports are sent to a Sentry instance that we self-host on Digital Ocean infrastructure in Toronto. They are not shared with sentry.io or any third party.
User Content: Layouts and Macros in Oryx
A “keyboard layout” in Oryx is the arrangement of keys, layers, macros, and settings that you build for your keyboard. A layout is technical configuration data, not personal information. However, layouts can contain text — most importantly in macros — that you have entered, and that text can include personal information if you put it there.
Layouts you create in Oryx are public by default. Macros within those layouts are public by default.
An untagged public layout can be reached only by its unique URL, which contains a hard-to-guess identifier. If you choose to tag your layout, the layout becomes discoverable when other users browse or search by tag. To make a layout private, you must be signed in to an Oryx account; private layouts are visible only when you are signed in.
You can build a layout in Oryx without an account. Anonymous layouts are stored on our servers and persist indefinitely. They are not linked to any individual.
Because macros are public by default, you must not include personal or confidential information in your macros. This includes credit card numbers, passwords, government identifiers (such as social insurance or social security numbers), private keys, or any other information you do not wish to make public.
typ.ing: Analytics, Readwise, and Shopify Sync
typ.ing Analytics↓
typ.ing uses self-hosted analytics to understand how the product is used. The analytics system records events such as page views, training session type, and training events (for example, when a session is started or completed). The analytics infrastructure is hosted in Toronto, Canada.
You can opt out of analytics in your typ.ing settings. Analytics are not shared with any third party.
Readwise Integration↓
If you choose to connect Readwise to typ.ing, you provide us with a Readwise API token. We store this token encrypted at rest and use it solely to fetch your Readwise content for use within typ.ing. Content fetched from Readwise is delivered to your device for use during training. We do not transmit Readwise-fetched content to any third party.
You can disconnect Readwise at any time in your typ.ing settings, which removes the stored token.
typ.ing & Shopify Sync↓
We use a flag on your typ.ing account to record whether you are a ZSA customer. This flag is set in two ways:
- When you create a typ.ing account, typ.ing checks Shopify (using your email address) to see whether a customer record exists.
- When a customer record is created on Shopify, Shopify sends typ.ing a webhook with the customer’s email address. typ.ing only updates the customer-status flag on an existing typ.ing account that uses the same email. Becoming a Shopify customer does not create a typ.ing account for you.
We use this flag for internal product analytics and to provide functionality that depends on whether you are a ZSA customer. The flag is not shared with any third party.
Internal Notifications↓
We send internal notifications to a private team channel on Telegram when a typ.ing account is created (including the customer-status flag described above) and when an existing typ.ing user becomes a ZSA customer. These notifications include the user’s email address. They are routed through n8n Cloud and delivered via Telegram. The channel is private and restricted to ZSA staff.
You can view the Telegram privacy policy.
Customer Support Questionnaires
We sometimes invite customers to fill out an optional questionnaire so we can understand how they use their keyboard and provide more relevant support. The questionnaire is delivered through a third-party form service called Typeform.
Filling out the questionnaire is strictly opt-in. If you choose to participate, your answers — together with your email address — are stored on Typeform’s infrastructure and forwarded to our support team by email. We use your responses solely to provide you with support and do not use them for marketing.
You can view the Typeform privacy policy.
Where Your Information Is Stored
We store personal information on infrastructure operated by Digital Ocean in Canada (Toronto) and the United States (New York). The specific location depends on the service and may change over time as our infrastructure evolves.
Some of our sub-processors — including Shopify, Cloudflare, Mailchimp, n8n Cloud, Telegram, and Typeform — may process information in the United States or in other jurisdictions in accordance with their own privacy practices.
When personal information is transferred outside Canada, it is subject to the laws of the receiving jurisdiction, which may permit access by foreign courts, law enforcement agencies, and regulators.
Sub-Processors
We rely on the following third parties to operate our Sites and provide our services:
- Shopify — e-commerce, checkout, and payments (privacy policy)
- Digital Ocean — hosting (privacy policy)
- Cloudflare — CDN, DNS, and security (privacy policy)
- Mailchimp — marketing email (privacy policy)
- n8n Cloud — workflow automation, used to route newsletter signups to Mailchimp (privacy policy)
- Telegram — messaging service used to deliver internal team notifications about typ.ing account events (privacy policy)
- Typeform — form service used to deliver optional customer support questionnaires (privacy policy)
- Google and GitHub — social login providers for Oryx
Data Retention
We retain personal information only for as long as needed for the purposes described in this policy or as required by law. Retention varies by system and category of information. In general:
- Order information is retained for as long as we have an ongoing relationship with you and for as long as required by tax, accounting, and anti-fraud laws.
- Marketing information is retained until you unsubscribe or ask us to delete it.
- Account information and user content are retained for the life of your account and deleted when you delete your account or ask us to delete it.
- Anonymous Oryx layouts persist indefinitely and are not linked to any individual.
- Server logs, crash reports, and analytics events are retained for limited periods that vary by system; we do not retain them indefinitely.
Your Rights
Subject to applicable law, you have the right to access the personal information we hold about you and to ask that it be corrected, updated, or deleted. To exercise any of your rights, contact our Privacy Officer using the contact information above. We will respond to verifiable requests within 30 days.
If You Are in Canada (PIPEDA)↓
You have the right to:
- Access the personal information we hold about you
- Ask that we correct inaccuracies in your personal information
- Withdraw consent to certain uses of your personal information
- Make a complaint to our Privacy Officer, and, if you are not satisfied with our response, to the Office of the Privacy Commissioner of Canada
If You Are in Quebec (Law 25)↓
In addition to the rights above, you have the right to:
- Receive a copy of the personal information we hold about you in a structured, commonly used technological format (data portability)
- Be informed of any personal information collected about you and the purposes of that collection
- Lodge a complaint with the Commission d’accès à l’information du Québec if you are not satisfied with our response
If You Are in the European Economic Area or the United Kingdom (GDPR)↓
We process your personal information on the basis of one or more of the following legal bases: to perform a contract with you (for example, to fulfill an order), with your consent (for example, to send marketing email), or to pursue our legitimate interests in operating and improving our products in a manner that is not overridden by your rights.
You have the right to:
- Access, correct, and delete your personal information
- Object to processing, or ask us to restrict it
- Receive your information in a portable format
- Withdraw consent at any time, where consent is the legal basis
- Lodge a complaint with your local data protection authority
Your personal information may be transferred outside the EEA or the UK, including to Canada and the United States, in connection with the services described in this policy.
If You Are a U.S. State Resident (CCPA/CPRA and Similar Laws)↓
Depending on your state of residence (for example, California, Virginia, Colorado, Connecticut, Utah, or Texas), you may have the right to:
- Know what personal information we have collected about you and how we use it
- Request deletion of your personal information
- Request correction of inaccurate personal information
- Opt out of the sale or sharing of your personal information for cross-context behavioural advertising
- Limit the use and disclosure of sensitive personal information
- Not be discriminated against for exercising your rights
We do not sell your personal information, and we do not share it for cross-context behavioural advertising. To exercise any of your rights, contact our Privacy Officer.
Children
Our Sites and products are not directed to children, and we do not knowingly collect personal information from children. If you believe we have collected information from a child, please contact our Privacy Officer and we will take appropriate steps to delete it.
Automated Decision-Making
We do not use your personal information to make automated decisions that produce legal or similarly significant effects on you.
Security
We use reasonable administrative, technical, and physical safeguards to protect personal information against loss, theft, and unauthorized access, use, or disclosure. No method of transmission or storage is completely secure, however, and we cannot guarantee absolute security.
Legal Compliance
We may share personal information to comply with applicable laws and regulations, to respond to a subpoena, search warrant, or other lawful request for information we receive, or to otherwise protect our rights or the rights of others.
Do Not Track
Our Sites do not change their data collection or use practices when they receive a “Do Not Track” signal from a browser.
Changes to This Policy
We may update this Privacy Policy from time to time to reflect changes to our practices or for other operational, legal, or regulatory reasons. When we do, we will update the “Effective date” at the top of this page.
Contact Us
For questions, requests under this policy, or to make a complaint, please contact our Privacy Officer by email at [email protected] or by mail at:
Privacy Officer
ZSA Technology Labs
250 University Ave
Toronto, ON M5H 3E5
Canada