About
Privacy and security
Punchline measures software behavior in detail and keeps people anonymous.
What we collect on your site
| Collected | Not collected, ever |
|---|---|
Page path and host; utm_* values (other query parameters removed, emails in URLs replaced) |
Cookies, local storage, device identifiers |
| Referrer host only | Full referrer URLs |
| IP address and user agent, used in memory then discarded | Stored IP addresses or user agents |
| Country code | Precise location |
| Response status and size (Cloudflare install) | Form contents, search terms, request bodies |
| Optional browser snippet: page views; agent signals as counts only (off for EU/UK visitors unless you turn it on) | Keystrokes, text, pointer positions, session recordings |
| Company domains your server sends with events (acme.com), linked to a visitor's day | Email addresses: only the domain is kept; personal mail domains are ignored |
Visitors are grouped within a day by a salted one-way hash; the salt is deleted daily. Browsers sending Global Privacy Control get no hash at all. To stop floods of fake page views, the browser snippet's collector also counts requests per network address for one minute, in server memory only, under a salted hash whose salt never leaves that server; it's never written to storage.
Retention and location
- Individual page-view records: 90 days, then deleted. Daily totals are kept.
- Data is stored in the United States (Oregon). EU hosting is planned.
Sharing outside your dashboard
Through the API, MCP and share links, groups with fewer than 5 people's page views are withheld, and sessions of people are never returned. Agent data is shown in full.
Subprocessors
| Who | Why |
|---|---|
| Vercel | Hosting (United States) |
| Supabase (AWS us-west-2) | Database and dashboard sign-in |
| Google Analytics Data API | Only if you connect GA4: read-only daily totals |
| Anthropic | Only when you use Ask Punchline (aggregate tool results) or the docs assistant (your question and excerpts from these docs): writes the answer; no training on this data |
| Resend | Only if you add email addresses for alerts: sends the daily digest |
| Slack | Only if you add a Slack webhook for alerts: receives the daily digest |
| Google Cloud | Only if you export to BigQuery: runs the daily load jobs into your dataset |
| Stripe | Only if you pay for a plan: takes the payment and keeps the billing email, card and invoices. Punchline stores the Stripe customer and subscription IDs, never card details |
Integrations you connect (HubSpot, Salesforce, Google Ads, Meta, BigQuery, Snowflake) receive the data you choose to send them, in your own accounts, under your agreements with those companies.
Security
- Data lives in a database schema not exposed to any public API, with row-level security on every table.
- Edge installs authenticate with a per-site secret. API keys, share links and invite links are stored only as SHA-256 hashes.
- Credentials Punchline has to use later are stored encrypted (AES-256-GCM): CRM and ad platform tokens, and the Snowflake private key. Alert destinations (a Slack webhook, or your webhook's URL and signing secret) are stored usable so digests can be sent. None of these are ever shown again or logged.
- Dashboard sign-in by email link; no passwords.
Questions or a data processing agreement: hey@opsscale.co.
Ask the docs
Answers come from these docs only, written by Claude (Anthropic). Your question is sent to answer it, and isn't stored.