Privacy policy
What we collect, why, who else sees it, how long we keep it, and how to reach us about it.
Draft. Text in brackets, such as [Company name], is a placeholder that will be filled in before hosted translation opens. Hosted translation is not open yet; the open-source QA gate needs no account and sends nothing anywhere.
Who we are
Shipglot is operated by [Company name], [Country] ("Shipglot", "we"). For anything in this policy, email hello@shipglot.com.
Short version
- This website sets no cookies, runs no analytics and loads no third-party scripts or fonts.
- The browser tools check your files inside the browser tab. Nothing is uploaded.
- The open-source CLI and GitHub Action send nothing anywhere when they check files. Only
shipglot translate,shipglot syncandshipglot pushcontact the hosted service, and only with a token you created. - Strings you send for translation go to AI model providers (OpenAI, Anthropic, Google) to be translated. We do not sell data and do not train models on your content.
This website and the browser tools
The site is static pages. It sets no cookies, stores nothing in your browser, and requests nothing from other hosts. The server that hosts it receives what every web request carries (IP address, user agent, the page requested, the referring page) and may keep it in request logs. We use those logs only to run and secure the site.
The browser tools parse, check and rewrite files with JavaScript inside your tab. File contents never leave your device.
The CLI, GitHub Action and editor plugins
shipglot check, lock, status and init read your files locally and make no network requests. The GitHub Action runs the same commands on GitHub's runners. There is no telemetry. The VS Code extension and the MCP server run the same checks locally.
These commands send data to the hosted service, and only with a SHIPGLOT_TOKEN:
shipglot translate: for each key that needs a translation, the key, its file group and source file, the source text or plural forms, a length limit if set, the current translation when the source changed, the two neighbouring keys and their source text, and up to three lines of code that use the key. With each request: your glossary and do-not-translate terms,shipglot.style.mdif you have one, and translation memory (existing translations related to the strings being sent, capped at 2,000 entries and 1 MB) unless you turn it off with--no-memory.--dry-runshows what would be sent without sending it.shipglot sync, and the start of every translate run: every source key name with a SHA-256 hash of its text, not the text, to count keys for billing.shipglot push: the translation files your config matches, and the config, to the reviewer editor for the current branch.shipglot-screenshots --upload(an optional separate tool): screenshots of the pages of your app it visited, a highlighted crop around each translated string it found on them, and for each key the page name, where on the page it appears and the text that matched. Nothing is uploaded without--upload.
The hosted service
Hosted translation is not open yet. When it opens, it stores:
- Account data: from GitHub sign-in, your GitHub user id, login, name and email address (we ask GitHub for
read:useranduser:email). With SAML single sign-on, the identifier and attributes your identity provider sends. Your role in each account (owner, admin, reviewer, viewer). - Your content: what the commands above send; translation jobs and their results; a per-string decision log (which models translated and checked each string, whether they were shown its screenshot, and why a result was kept); strings pushed to the editor, with the comments and suggestions reviewers add; screenshots of your app you upload, with which keys appear where in them; glossaries and style guides.
- Usage and billing: source key names and hashes, monthly key counts, translated word counts, subscription status, invoices and credit purchases. Stripe holds the payment details; we never see or store card numbers.
- Security records: an audit log of actions in the account (who, what, when, and the IP address), SHA-256 hashes of API tokens and sessions, rate-limit counters, and records of GitHub and Stripe webhook deliveries.
- GitHub App: on repositories that install the Shipglot GitHub App, the installation, its repository list, and the files the App reads to find translation files and writes in pull requests.
- Over-the-air delivery: translation bundles you publish. They are public by design: anyone with the project's public id can download them.
Why we use it
- To provide the service you signed up for: translating, checking, reviewing and writing back your strings, and billing for it (performance of a contract).
- To keep the service secure and working: audit log, rate limits, logs, fraud and abuse prevention (legitimate interests).
- To keep accounting and tax records (legal obligation).
We do not use your content to train AI models, and we do not sell or rent personal data. We do not send marketing email.
Who else processes it
Service providers that process data for us are listed on Data processing and sub-processors: the AI model providers (OpenAI, Anthropic, Google), Stripe for payments, GitHub for sign-in and the GitHub App, Hetzner for hosting, Cloudflare as the network proxy in front of the site and the service, and our email provider (to be confirmed). Model providers receive the strings and context described above, including a string's uploaded screenshot unless you turn that off with --no-screenshots, under their API terms; requests to OpenAI are sent with response storage turned off (store: false). We may also disclose data when the law requires it.
International transfers
Some of these providers process data in the United States. Where data protection law requires it, transfers rely on the European Commission's Standard Contractual Clauses or another lawful transfer mechanism.
How long we keep it
- Account data and content: while the account exists. Owners and admins can delete a project in Settings; its content is deleted at once, and the usage records billing needs are kept. Deleting an account is not yet self-service; email hello@shipglot.com and we delete it and confirm when it is done.
- Sessions: 30 days, then deleted. GitHub webhook delivery ids: 30 days. Background jobs that failed for good: 30 days. Rate-limit counters: one day.
- Outgoing webhook deliveries, with their payloads: until you delete the webhook endpoint they were sent to.
- Screenshots: until you upload a newer capture of the same page, then 30 more days; all of a project's screenshots are deleted with the project.
- The audit log, which records IP addresses: no set retention period yet.
- Billing records: as long as tax and accounting law requires.
- Web server request logs: the web server in front of the service writes no access log. Cloudflare keeps its own request logs as its terms describe.
Your rights
Depending on where you live, you can ask for a copy of your personal data, have it corrected or deleted, receive it in a portable format, restrict or object to how we use it, and complain to your data protection authority. Email hello@shipglot.com; we answer within 30 days. There is no self-service export yet: we prepare a copy by hand and email it to you. If you use Shipglot through an organisation's account, that organisation controls the content in it, and we may refer your request to them.
Children
Shipglot is a tool for software teams and is not directed at children under 16.
Changes
When this policy changes, the date at the top changes. For material changes, we email account owners before they apply. The product has no in-app notices yet.