Privacy Policy
Last updated: 15 October 2026
In short
- Your source code never leaves your machine. The plugins send file paths, languages, timestamps and line counts, never file contents.
- Your data is stored in Germany (EU). We do not sell it, and there are no advertising or third-party analytics trackers.
- Teammates, clients and the public see your activity only where you turn it on: a team project, a share link, or your public profile.
- Detailed activity is kept 6 months on Free and 12 months on Pro, then reduced to daily totals.
- You can export everything as JSON or delete your account from Settings at any time, on every plan.
This summary is for convenience; the sections below are the policy.
On this page
Data controller
The data controller for personal data collected via Inlinr is Thibault Fayard, reachable at support@inlinr.com.
Guiding principle
Inlinr is designed to minimize collection. No source-code line ever leaves your machine. IDE plugins send only metadata: file path (relative to the folder open in the editor), the repository's git remote, a timestamp, language, editor and its version, git branch, line and cursor position, line counts, and which AI assistant made an edit when there is evidence one did. The Claude Code plugin adds token counts, the model name and a conversation identifier. File contents, diffs, prompts and assistant replies are never collected.
Data we collect
- Identity & account — email, name, and avatar from GitHub (via OAuth), GitHub handle, subscription plan, and the preferences you set (time zone, first day of the week, idle timeout, email settings).
- Coding activity — heartbeats sent by plugins (file path, git remote, timestamp, language, editor, branch, line counts, AI attribution); durations are computed from the timestamps. Manual entries you log (meetings, calls, etc.), with their label, duration and billable flag. Projects, hourly rates, budgets and goals you set.
- AI assistant usage — with the Claude Code plugin: the model name, token counts and a conversation identifier, read from the assistant's local session logs. Never the prompts or the answers.
- Commits — only if you connect them: commit hash, date and line
counts, received from a GitHub webhook or from
inlinr sync-commits. Commit messages and author emails are not stored. - Imported data — if you import a WakaTime export, the activity it contains. The WakaTime API key you enter for that import is used only during the import and is not stored.
- Teams — the GitHub handle, and the email when GitHub makes it public, of people a team member invites.
- Billing — for Pro users, Stripe collects your name, billing address, country and optional VAT number at checkout. Inlinr stores only the Stripe customer and subscription identifiers and the subscription status. Card data is handled exclusively by Stripe; Inlinr never sees and never stores it.
- Declared dependencies — only for projects where you switch
dependency tracking on, one project at a time. We read the named
package.jsonfiles of that repository and store the package names and version ranges it declares, plus which file they came from. We never read the repository's file listing, and we never read or store any other file. If the manifests are sent from your machine instead of read from GitHub, we receive the dependency fields of eachpackage.json, the pnpm workspace file if there is one, and the installed versions of the direct dependencies. Switching it off deletes what was stored. - Messages you send us — feedback sent from the dashboard is emailed to us with your name, email and the page you were on.
- Technical data — IP address and browser user-agent of each sign-in session, kept with that session. For each connected IDE plugin: the machine name, operating system and editor it reported when you approved it, and when it was last seen.
Who can see your data
By default, only you. Others see your activity only where you choose:
- Teams — on a project you add to a team, teammates see totals per project and per member. They never see your files, branches or languages. You can hide a project from the team.
- Client share links (Pro) — a link shows one project, with the sections you pick and an optional PIN. You can revoke it at any time.
- Public profile —
/u/<handle>and the README card exist only if you turn them on in Settings, and show only what you choose to display.
Purposes of processing
- Provide the time-tracking service and produce the related statistics.
- Manage paid subscriptions, invoicing, and accounting/tax obligations.
- Authenticate user sessions and connected devices (IDE plugins).
- Communicate with users (weekly digest and two getting-started emails, all turned off by one switch in Settings → Notifications; transactional notifications; customer support).
- Detect and prevent payment fraud (via Stripe Radar).
Legal bases (GDPR art. 6)
- Performance of the contract — for data strictly necessary to provide the Service (account, activity, Pro billing).
- Legal obligation — for retention of invoices (10 years, French Commercial Code art. L123-22) and VAT records.
- Legitimate interest — for technical data (Service security), fraud prevention, and the weekly digest and getting-started emails about your own account. They are on by default; one switch in Settings → Notifications stops them, and every email has an unsubscribe link.
- Consent — for the public stats page at
/u/<handle>(explicit opt-in in Settings), for client share links you create, and for dependency tracking, enabled project by project.
Retention
- File-level heartbeats — 6 months (Free) or 12 months (Pro); beyond that, folded into daily totals per project, language, editor and AI assistant, without file paths, and the heartbeats are deleted.
- Aggregated daily summaries — for the lifetime of the account.
- Billing records — invoices and payment records are kept in our Stripe account for 10 years after the last transaction (accounting obligation).
- Declared dependencies — until you switch dependency tracking off for that project, which deletes them immediately.
- Sign-in sessions — a session, with its IP address and user-agent, expires after 7 days without use. It is deleted when you sign out or delete your account, and at the latest the day after it expires.
- Connected devices — until you revoke the device in Settings → Editors or delete your account. Unapproved editor sign-in codes are deleted the day after they expire, and team invitations 30 days after they expire.
- Server error logs — they can contain the IP address of the request that failed; they are rotated by size and kept a few weeks at most.
- Backups — daily copies of the database are kept 7 days, monthly copies 400 days. Data you delete disappears from backups as they expire, at the latest 400 days later. Backups are only read to restore the service.
- Full account deletion — from Settings → Danger zone → Delete account, or on request to support@inlinr.com. It cancels a running subscription and deletes your account and every piece of activity attached to it. Only the billing records held in Stripe remain, for the legal duration above.
Sub-processors (GDPR art. 28)
Inlinr relies on the following sub-processors, all bound by GDPR-compliant Data Processing Agreements:
- Hetzner Online GmbH — application and database hosting. Server location: Germany (EU).
- Stripe Payments Europe Ltd. — payment and tax processing. PCI DSS Level 1 compliant, based in Ireland (EU). Stripe shares data with Stripe, Inc. in the United States under the EU-US Data Privacy Framework.
- Cloudflare, Inc. — storage of database backups (R2), in a bucket restricted to the European Union. Backups are encrypted on our server before they are sent, with a key Cloudflare never holds. Cloudflare is a US company certified under the EU-US Data Privacy Framework.
- Resend — email delivery (weekly digest, getting-started emails, feedback you send). Hosted in the United States; transfers framed by Standard Contractual Clauses (SCC).
- GitHub Inc. (United States, certified under the EU-US Data Privacy
Framework) — OAuth identity provider, and — only for projects
where you enable dependency tracking — the source of the
package.jsonwe read, requested with your own access token. No personal data is sent to GitHub beyond authentication; the public profile (handle, avatar) is fetched at sign-in.
Other services we contact
These services receive no personal data from Inlinr:
- npm, Inc. (registry.npmjs.org), OSV.dev (Google LLC) and GitHub's public API — consulted for the published versions, security advisories and release notes of a package, only for packages declared by a project with dependency tracking enabled. The request contains a package name and nothing about you: no account identifier, no project name, no repository.
- Better Stack — uptime monitoring of the Service and the status page at status.inlinr.com. It checks that the Service answers; it receives no account or activity data.
- WakaTime — only when you import your WakaTime history: your browser uploads the export file to Inlinr, and the API key you provide is used to read your project and editor names from WakaTime.
Your rights
Under the GDPR you have the following rights regarding your data:
- Access — obtain a copy of all your data. Your whole account is exportable at any time as JSON from Settings → Data, on every plan; Pro adds CSV / JSON per project, and manual entries are available as iCal.
- Rectification — your name, email and avatar come from GitHub and are updated there; everything else (projects, rates, entries) can be corrected from the dashboard, or by writing to us.
- Erasure — delete your account and all your data (except for accounting archives kept by legal obligation).
- Restriction & objection — you may object to a specific processing (e.g. disable the weekly digest in Settings → Notifications).
- Portability — retrieve your data in a structured format (JSON)
from Settings → Data, or via
/api/v1/export/account.
To exercise these rights, write to support@inlinr.com. A response will be sent within 30 days.
Cookies
Inlinr uses only strictly necessary cookies:
- Session cookie — keeps you signed in. Set when you sign in with GitHub, removed when you sign out.
sidebar_state— remembers whether the dashboard sidebar is open or collapsed, for 7 days.
The dashboard also keeps a few flags in your browser's local storage, for example which notices you have dismissed. They never leave your browser.
No advertising cookies, no third-party analytics tools (Google Analytics, etc.). Under French CNIL deliberation 2020-091, no prior consent is required for these cookies.
Security
Data is stored on servers located in Germany (EU), in a database that is not reachable from the internet, and travels encrypted (TLS). Passwords are not stored (authentication is via GitHub OAuth or device tokens for plugins only). Each editor on each machine has its own token, which you can revoke from Settings → Editors. Backups are encrypted on our server before they leave it, with a key kept off the server, and stored in the European Union; see Retention for how long.
Complaints
If you believe the processing of your data does not comply with the GDPR, you may lodge a complaint with the French data-protection authority (CNIL): cnil.fr/en/plaintes.