Legal
Privacy policy
Last updated: 20 April 2026
Plain-English summary
- We scan URLs you ask us to scan and return the results. We do not store the scanned pages, and we do not track your site's visitors.
- We count usage events (scans, page views, CLI pings) without any personal identifiers — only a rough source tag such as
axle-clioraxle-wordpress. - If you subscribe to a paid plan, we store your email, the hash of your API key, and your subscription status so we can issue keys and grant access. Payments are processed by Polar; we never see your card details.
- If you publish a verified accessibility statement, its contents (organization name, coordinator details, etc. that you entered in the generator) are stored and rendered publicly at
/s/<id>. That is the point of publishing.
What we collect
Scan data
When you submit a URL to /api/scan(via the web form, CLI, Action, or any of the platform plugins), we fetch that URL with a headless browser, run axe-core against it, and return the result. We do not cache or store the scanned page's HTML, screenshots, or the scan result on our server. The result lives in the HTTP response only.
Anonymous usage metrics
We count per-day and per-all-time:
- Total scans
- Total scans grouped by source (
web,axle-cli,axle-action,axle-netlify,axle-cloudflare,axle-vercel,axle-wordpress, etc.) - Total page views on the hosted site and the published statement pages
- Per-IP daily scan count, for rate limiting only — rotates every 36 hours
None of this is tied to a named individual. We do not set any third-party analytics cookies. The CLI sends one anonymous ping per scan ({source: 'axle-cli', event: 'scan_complete'}) which you can disable with AXLE_NO_TELEMETRY=1.
Account / billing data (paid plans only)
If you subscribe to Team or Business:
- Your email (captured by Polar at checkout and forwarded to us)
- Your Polar customer ID and subscription ID
- The SHA-256 hash of your axle API key (never the plaintext)
- Your plan name and subscription status
Card data is held by Polar. We never receive it.
Published statement contents
When you click "Publish verified" on the statement generator, everything you filled into the form — organization name, coordinator details, adjustments list, reporting channels — is stored and made publicly available at /s/<id>. Don't publish anything you wouldn't want indexed by Google.
What we never do
- We do not inject tracking into your site's pages.
- We do not sell data to third parties.
- We do not use your scan data to train models.
- We do not store URLs you scan beyond the duration of the scan itself (except for aggregated source counters).
Subprocessors
We rely on the following infrastructure vendors:
- Vercel — application hosting (US, EU). Serves the Next.js app and runs the scan workers.
- Upstash (Redis) — keeps aggregated counters and hashed API keys.
- Polar — checkout and subscription management for paid plans.
- Resend — transactional email (the one that delivers your API key after checkout).
- Anthropic— when you enable hosted AI fixes, the violation text and offending HTML snippet are sent to Anthropic Claude for diff generation. Anthropic's API is no-training by default for API traffic.
Data retention
- Per-day scan and view counters: 48 hours.
- Per-source all-time counters: indefinite, no personal data.
- API key records: lifetime of subscription + 90 days after cancellation.
- Published statements: indefinite, until you ask us to remove them by emailing asaf@amoss.co.il.
Your rights
If you are in the EU, UK, Israel, or another jurisdiction with a right-to-access / right-to-delete regime, email asaf@amoss.co.il. We will respond within 30 days. Given the minimal data surface, most requests can be handled by simply deleting your API key record and any statements you've published.
Contact
Privacy-related questions: asaf@amoss.co.il.