Privacy Policy

Effective 12 October 2026. Version 1.1.

This policy explains how Maps & Apps Inc. processes personal information for unmap's public site, account dashboard, APIs, support, and billing. Maps & Apps Inc. is the controller of that information, and is responsible for it under Canada's Personal Information Protection and Electronic Documents Act (PIPEDA) and, for people in Québec, under the Act respecting the protection of personal information in the private sector as amended by Law 25.

Our Privacy Officer, Abraham Poorazizi, is the person accountable for this policy and for the information we hold. Reach him at privacy@unmap.dev or by mail at Maps & Apps Inc., 108 Patterson Dr SW, Calgary, AB T3H 3B2, Canada.

What unmap is

unmap provides maps, geocoding, routing, account management, and billing for developers. The product is built in Canada and runs on Cloudflare infrastructure. Self-serve processing is North American (Cloudflare's ENAM/WNAM regions), not Canada-only. If you need a contractual Canada-only residency guarantee, contact us before using a self-serve plan.

Data we collect

Account data. When you sign in, we store your email address, account id, selected locale, plan, spend cap, Stripe customer or subscription ids when billing is enabled, and optional GitHub id if you connect GitHub.

Authentication data. Magic-link tokens are stored only as SHA-256 hashes. Sessions are stored in KV for 30 days and tied to a secure, HttpOnly cookie. A separate non-HttpOnly unmap_signed_in=1 hint lets the static website show the Dashboard link; it is not used as authority.

API key data. API keys are stored two ways: as a SHA-256 hash, which is what authenticates your requests, and encrypted with AES-256-GCM under a key held in managed secret storage, so you can show a key again from the dashboard. We keep key metadata such as name, environment, created time, account id, plan, and the list of origins the key is allowed to be used from. Deleting a key removes the key and its metadata.

Usage and billing data. We store endpoint-level usage counts by key and day so we can rate-limit, enforce plan allowances, apply spend caps, and bill paid usage. Card numbers never reach us: Stripe collects and stores them, and we see only the identifiers and invoice records Stripe returns.

Request data. The application does not store visitor profiles, device identifiers, or ad-tech tracking data. We do not log the addresses or coordinates in your API requests. Batch geocoding is the one exception, and a deliberate one: a file you upload has to be stored to be processed, and it is deleted on the schedule below. For geocoding, successful responses may be cached at the Cloudflare edge for up to 24 hours. Those cache entries are built without the API key, but the request text or coordinates can be part of the synthetic cache URL used to make repeat queries fast. Routing responses are cached per key for up to one hour. Tile and style assets are cached as static map resources.

Cloudflare may also process network logs and security telemetry as the infrastructure provider.

Operational telemetry

Automatic Cloudflare invocation logs and traces are disabled. unmap records only request method, endpoint category, response status, a coarse error code, and rounded latency for up to seven days. These events do not contain source IP, user-agent, URLs, headers, cookies, API keys, OAuth values, search or route parameters, coordinates, request bodies, or account identifiers. Access is restricted to the account owner except for time-limited incident access.

Why we use it

We use account, key, and usage data to authenticate requests, operate the dashboard, enforce quotas and spend caps, prevent abuse, provide support, send sign-in links, manage billing, and improve service reliability. We do not sell personal information, we do not use API traffic for ad targeting, and we do not use it to train models.

We rely on your consent, given when you create an account, and on the necessity of processing to deliver the service you asked for and to meet our legal and tax obligations. You can withdraw consent by closing your account, though that ends the service.

Quota, spend-cap, and failed-payment blocks are applied automatically by software, without a person reviewing each case. They affect access to the API only, not any other right or entitlement, and you can ask us to review a block at support@unmap.dev.

Sub-processors

We use these providers to run unmap. Each is bound by its own contract and processes personal information on our instructions.

ProviderWhat it handlesWhere
CloudflareHosting, Workers, KV, D1, R2, edge caching, DNS and security, sign-in email deliveryNorth American edge (ENAM/WNAM)
StripeCheckout, subscriptions, invoices, payment methods, metered usage reportingUnited States and global
GitHubOptional OAuth sign-in, if you choose itUnited States
Simple AnalyticsCookieless page-view counts for the public siteNetherlands

Some processing therefore happens outside Canada, and personal information held in another country can be subject to that country's laws, including lawful access by its authorities. We will update this table before adding a sub-processor that handles personal information.

Retention

DataKept for
Browser session records30 days from sign-in
Magic-link tokens15 minutes, single-use; expired rows deleted a day later
GitHub OAuth state10 minutes
Sign-in rate-limit markers60 seconds
Operational telemetry7 days
Uploaded batch files, their parsed chunks, results, and exports7 days from job creation
Batch job status and counts, without file content30 days from job creation
Geocoding edge cacheUp to 24 hours
Routing edge cacheUp to 1 hour, per key
Account recordLife of the account
API keys and their metadataUntil you delete the key, or the life of the account
Usage counters and billing recordsLife of the account, then 7 years, for tax and audit obligations
Encrypted control-plane backupsUp to 35 days

When you delete a key, its usage counts move to your account rather than being deleted with it, so your usage history and billing records stay complete.

Backups are encrypted daily exports of the control plane (accounts, keys, usage) written to a dedicated, access-restricted store and encrypted with a key held offline. Session, OAuth-state, and rate-limit records are excluded from backups entirely, so a restore never resurrects a session you signed out of.

Files you upload for batch geocoding

If you use batch geocoding, the CSV you upload is stored while the job runs. So are the parsed pieces of it, the results, and the files you download at the end. All of it is deleted 7 days after the job was created, and the exact date is shown before you upload and on the job's own page. You can delete a job sooner, which revokes access immediately and removes the files shortly after.

Only the column you map is sent to the geocoding service. The rest of the file is stored, returned to you in the output, and never queried.

These files are held in Cloudflare R2 and the job's metadata in Cloudflare D1, both currently in Cloudflare's western North America region. We do not offer Canadian data residency, and nothing on this page should be read as promising it.

Your rights

Under PIPEDA and, in Québec, under Law 25, you can ask us to:

  • give you access to the personal information we hold about you, and tell you how it has been used and who it was disclosed to;
  • correct information that is inaccurate or incomplete;
  • delete your account and the information tied to it;
  • withdraw consent, subject to legal and contractual limits;
  • give you your account data in a structured, commonly used technical format (portability, for Québec residents).

Email privacy@unmap.dev. We answer within 30 days. We may need to confirm you control the account's email address before acting.

Account deletion. Ask at privacy@unmap.dev and we will delete your account, sessions, keys, and profile within 30 days, and revoke your keys immediately. Billing and usage records that support issued invoices are kept for the seven-year period in the table above, because tax and audit law requires it; they are not used for anything else.

Complaints. Tell us first. We would rather fix it. If you are not satisfied, you can complain to the Office of the Privacy Commissioner of Canada (priv.gc.ca) or, in Québec, to the Commission d'accès à l'information (cai.gouv.qc.ca).

Security and incidents

Secrets are stored as hashes, encrypted, or in managed secret storage, transport is TLS throughout, dashboard access needs a session cookie we can revoke, and backups are encrypted. No system is perfect. If a breach creates a risk of serious injury, we will notify affected users and the appropriate regulator as PIPEDA and Law 25 require, and keep a register of confidentiality incidents.

Cookies and local storage

unmap uses a secure session cookie for dashboard access and a signed-in hint cookie for static navigation. The theme selector and builder may use browser storage to preserve interface preferences. We do not use advertising cookies. Page views on the public site are counted by Simple Analytics, which sets no cookies, does not collect or store IP addresses, derives a coarse country from the browser's time zone rather than a device identifier, and collects nothing at all when the browser sends Do Not Track.

Children

unmap is a developer tool and is not directed at children. We do not knowingly collect personal information from anyone under 14. If you believe a child has created an account, write to privacy@unmap.dev and we will delete it.

Changes to this policy

We may update this policy as the product changes. Every version carries an effective date and a version number at the top of this page. For material changes we give at least 30 days' notice, by email to your account address or by a notice on unmap.dev, before the new version takes effect.

Contact

Maps & Apps Inc., 108 Patterson Dr SW, Calgary, AB T3H 3B2, Canada. www.mapsnapps.org

Privacy questions, requests, and Privacy Officer contact (Abraham Poorazizi): privacy@unmap.dev. Account and billing help: support@unmap.dev.