Privacy Policy
Effective date: July 23, 2026 — Version 2.2
PulseWatch ("we", "us") is a cron job and uptime monitoring service. This policy explains what we collect, why, and what we do with it.
- TL;DR: we store what is needed to run monitoring — your account, your monitors, your pings and check results, and your alert channels.
- We record the source IP and user agent of pings and requests, and use them for security and abuse prevention.
- Anything your script prints can end up in a run-log excerpt. We try to redact secrets automatically, but that is best effort, so don't print them.
- We do not sell your data, run ad trackers, or use analytics scripts.
- Raw pings and check results are pruned on a per-plan schedule. You can export your data or delete your account yourself at any time.
Data we collect
Account. Your email address. If you sign in with Google or GitHub (through Supabase Auth) we also receive the basic profile those providers share, such as your name and avatar. We never see your passwords for those providers.
Monitors. The monitors you create: names, the URLs you ask us to check, schedules, grace windows, tags and status-page settings. Don't put secrets or personal data in monitor names. They appear in alerts and, if you enable it, on your public status page.
Operational data. For heartbeats: ping timestamps plus the source IP and user agent of each ping. For uptime checks: timestamps, HTTP status codes, latency and error messages. Daily aggregates are kept so charts still work after the raw data is pruned.
Ping metrics and run-log excerpts. Numeric metrics you attach to a ping are stored as telemetry. If you POST a request body, typically your job's stderr, we keep an excerpt of it up to a per-plan size limit; anything beyond that is discarded and the excerpt is marked as truncated.
A run-log excerpt contains whatever your script printed. That may include a stack trace, file paths, or anything else in your output. We automatically redact values that look like credentials before storing an excerpt, and by default we also redact email and IP addresses found inside them (paid plans can turn that off when traces need them). This redaction is best effort and is not a guarantee — treat excerpts as operational logs and do not deliberately print secrets or personal data. Excerpts appear in your dashboard and in alerts, and are never shown on public status pages.
Incidents. When a monitor goes down we record an incident with its timeline, duration and the reason that triggered it. If you add a monitor to a public status page, that page exposes the monitor's name, current state and uptime history to anyone with the link.
Alert channels. Email addresses you add for alerts, Telegram chat IDs if you connect the bot, and webhook URLs you configure. Deliveries are logged (recipient, subject, outcome) so missed alerts can be debugged.
API keys. Stored only as a hash. We cannot recover the original, so a lost key must be revoked and replaced.
Payments. Processed by Lemon Squeezy as merchant of record. We never see or store your card number. We store your subscription status, plan, and Lemon Squeezy customer and subscription identifiers.
Emails we send you. Alerts, digests and test emails go through our email providers, and we log that they were sent and whether delivery was accepted.
Security and internal logging
We run automated protections against abuse, including rate limiting and blocking of sources that behave abusively. Source IP addresses are used for this purpose.
We also keep internal logs to operate and support the service: account activity (sign-in, monitor and channel changes, API key changes, billing transitions, exports and deletions) with a timestamp, IP and user agent, kept for 90 days; a short-lived record of system errors; and an audit trail of administrative actions. These never contain secrets, tokens or full webhook payloads.
What we do not collect
No advertising trackers, no analytics scripts, no session recording. The only cookies we set are the authentication cookies that keep you signed in. We do not sell personal data.
How we use data
To run monitoring and deliver alerts, to show you your own history, to bill paid plans through Lemon Squeezy, and to keep the service secure. Nothing else.
Admin access
Our operators can access account data, including your monitors, pings and logs, where needed to provide support, keep the service running, or investigate abuse and security issues. That access is recorded in an internal audit trail. Operators do not sell your data and do not use it for anything beyond operating PulseWatch. There is no feature that lets an operator log in as you.
Who processes data for us
- Supabase — database and authentication
- Railway — API server and monitoring worker
- Vercel — web application hosting
- Lemon Squeezy — payments (merchant of record)
- Resend and Google (Gmail API) — outbound email delivery
- Telegram — alert delivery, only if you connect a Telegram chat
- Cloudflare — bot protection on sign-up, only when that protection is enabled
Each processes only the data needed for its role.
Retention
| Data | Free | Pro | Business |
|---|---|---|---|
| Raw pings, check results and run-log excerpts | 7 days | 30 days | 90 days |
| Daily uptime and latency aggregates | ~365 days | ~365 days | ~365 days |
| State-change and incident history | ~365 days | ~365 days | ~365 days |
| Account activity log | 90 days | 90 days | 90 days |
Backups held by our database provider expire on their standard schedule.
Deletion and your rights
You can delete your account yourself from Settings at any time. This is a cascading delete: it removes your profile, monitors, pings, check results, channels, incident and history data, and your subscription record. You can export your data as JSON from the same page before you go.
For access requests, corrections or complaints, email pulsewatch.dev@gmail.com and we will respond within 30 days. Depending on where you live (for example the EU/EEA or UK) you may have additional statutory rights, and we honor them.
Children
PulseWatch is not directed at children under 16, and we do not knowingly collect their data.
Changes
If we change this policy in a way that matters, we will note the new effective date here and notify you by email or an in-app notice before the change takes effect.
Changelog
- v2.2 — July 23, 2026. Shortened for readability. No reduction in what is disclosed: removed internal implementation detail (specific redaction patterns, rate-limit and ban mechanics, internal table names, excerpt size limits) and repeated explanation, while keeping every disclosure about what is collected, why, who processes it, how long it is kept, and your rights. - v2.1 — July 22, 2026. Documented redaction of run-log excerpts and its best-effort nature. - v2.0 — July 21, 2026. Added metrics and log excerpts, the retention table, status-page exposure, API key hashing, security use of IPs, internal logging and admin access. - v1.0 — July 18, 2026. Initial policy.
Contact
Questions about privacy: pulsewatch.dev@gmail.com