Dashboard ← Back to Home

Privacy Policy

Last updated: April 11, 2026 — revised to disclose Google Analytics, Google Fonts, Vercel, Upstash, and clarify website-vs-app data handling

TL;DR: The app never sees your Claude conversations — they go directly from your Mac to your own cloud storage. The website (codehandoff.com) uses Google Analytics for traffic measurement, same as most marketing sites. We try to be unusually specific below so you can decide what you're comfortable with.

The App vs. The Website

We treat these as two separate products with two different privacy stances:

What We Collect

When You Purchase

When you buy Code Handoff through Polar, we receive:

Payment information (credit card, etc.) is processed entirely by Polar. We never see or store your payment details.

When Polar sends us a purchase webhook, our server logs a non-sensitive event for debugging: order_id, email_hash (first 10 hex chars of SHA-256 of the buyer email — not reversible to an email without knowing it already), purchase total, status, and created-at timestamp. We then forward a purchase event to Google Analytics (see Website Analytics below) containing the transaction ID and amount — but not the email or name.

When You Use the App

Code Handoff stores the following locally on your Mac:

Important: All of this data stays on YOUR machine. We do not have access to it.

Optional Crash Reports (Off by Default)

Code Handoff ships with opt-in crash reporting. It is OFF by default. You must explicitly enable it during code-handoff setup or by setting CH_CRASH_REPORTING=1. When enabled, and only when the app hits an unhandled exception, we POST the following to codehandoff.com/api/crash:

Crash reports are throttled to at most one per 24 hours per install. We never send file contents, Claude conversations, rclone remote names, OAuth tokens, license keys, or email addresses. You can disable at any time by setting crash_reporting: false in ~/.code-handoff/config.json or by setting CH_CRASH_REPORTING=0.

What the server logs on its side: the scrubbed crash payload above plus a received-at timestamp. The client's IP is used only to rate-limit abusive callers in server memory and is not written to logs, hashed into logs, or persisted anywhere.

When You Visit the Website

Every page under codehandoff.com — including this privacy policy — loads Google Analytics 4 (measurement ID G-5RP6DYBD6V). Google receives the standard pixel data when you view a page:

In addition to raw pageviews we fire a small number of custom events so we can tell which parts of the site are working:

We do not use GA to identify you personally. We do not set a user_id, we do not join GA data to your email, and we do not send your license key or any crash-report content to GA. You can block the pixel with any standard ad blocker or tracker blocker — the site does not depend on GA to function.

The website also loads the Inter font family from Google Fonts (fonts.googleapis.com). Google Fonts receives your IP on the first load because it's a CDN.

Our API routes (/api/webhook, /api/license-lookup, /api/devices, /api/crash, /api/health) are rate-limited per IP + per license key. If the UPSTASH_REDIS_REST_URL environment variable is configured for the deployment, rate-limit counters are stored in Upstash Redis; otherwise we fall back to in-memory counters inside the serverless function. Counters auto-expire on a short window (typically ≤5 minutes) and hold only the key and a numeric request count — no payload, no user content.

What We Do NOT Collect

Website analytics (GA4) is a separate system from the app; see "When You Visit the Website" above for exactly what Google receives. If you want a fully analytics-free experience, downloading the DMG from the GitHub releases page and using the CLI directly skips the marketing site entirely.

How Sync Works

Code Handoff uses a "shadow sync" architecture:

Third-Party Services

Polar (Payments & Licensing)

We use Polar to process payments, issue licenses, validate activations, and send purchase webhooks. They handle all payment processing and have their own privacy policy. The CLI talks directly to Polar (not through our server) when you activate, deactivate, or validate a license key.

Google Analytics & Google Fonts

Every page on codehandoff.com loads Google Analytics 4 and the Inter font from Google Fonts. Both are provided by Google under the Google Privacy Policy. See "When You Visit the Website" above for the exact event list. Use any standard tracker blocker if you'd prefer not to share this information with Google.

Vercel (Hosting)

The marketing site and /api/* handlers are hosted on Vercel. Vercel receives standard edge-server log data (IP, request path, timestamp, status code) for the marketing pages and API calls.

Upstash Redis (Rate Limiting)

When configured, Upstash hosts the rate-limit counters for our API handlers. Only short-lived numeric counters keyed by IP or license key are stored; no request bodies, headers, or user content.

Cloud Providers

Your data syncs through your chosen cloud provider (Dropbox, Google Drive, OneDrive, or iCloud). Your use of these services is subject to their respective privacy policies.

GitHub

We host our open-source code and release downloads on GitHub. Downloading the app is subject to GitHub's Privacy Statement.

Data Retention

Your Rights

You can:

Security

Children's Privacy

Code Handoff is not intended for users under 13 years of age. We do not knowingly collect information from children.

Changes to This Policy

We may update this privacy policy from time to time. We'll notify users of significant changes via email or in-app notification.

Contact

Questions about this privacy policy? Contact us at support@codehandoff.com