Everything you need to get started with QuietPulse in under 5 minutes.
Sign up with your email. It's free โ no credit card required.
In your dashboard, click "New Job" and configure:
Optional: enable Wait for a second missed check-in before alerting when one missed run is acceptable. After a successful ping, the first notification waits for two expected intervals plus the grace period. The job still shows as MISSING after the first interval plus grace, and the first-ever ping alert is not delayed. Keep this off for critical jobs. See the alert timing update for an example.
After creating a job, you'll get a unique heartbeat URL. Call it after each successful run:
curl -s https://quietpulse.xyz/ping/your-unique-tokenIn your dashboard, connect Telegram for direct alerts, verify an email address for email alerts, or configure a webhook for your own systems and incident platforms. You can use multiple channels together.
Add the ping call at the end of your cron command:
# Backup every hour, ping on success
0 * * * * /usr/local/bin/backup.sh && curl -s https://quietpulse.xyz/ping/TOKEN
# Cleanup daily at 3am
0 3 * * * /usr/local/bin/cleanup.sh && curl -s https://quietpulse.xyz/ping/TOKEN2Store the full QuietPulse ping URL in a GitHub Actions secret, then send the heartbeat after the scheduled workflow finishes successfully.
name: Nightly maintenance
on:
schedule:
- cron: '0 2 * * *'
workflow_dispatch:
jobs:
maintenance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run maintenance
run: ./scripts/maintenance.sh
- name: Send heartbeat to QuietPulse
if: success()
uses: vadyak/quietpulse-actions@v1
with:
ping_url: ${{ secrets.QUIETPULSE_PING_URL }}Action source and README: vadyak/quietpulse-actions.
#!/bin/bash
set -e
# Your task here
pg_dump mydb > /backups/mydb_$(date +%Y%m%d).sql
gzip /backups/mydb_$(date +%Y%m%d).sql
# Ping QuietPulse on success
curl -sf https://quietpulse.xyz/ping/YOUR_TOKENimport requests
def my_scheduled_task():
# ... your logic here ...
pass
if __name__ == "__main__":
my_scheduled_task()
requests.get("https://quietpulse.xyz/ping/YOUR_TOKEN")async function runTask() {
// ... your logic here ...
}
await runTask();
await fetch("https://quietpulse.xyz/ping/YOUR_TOKEN");Job created but hasn't received its first ping yet.
Last ping received on time. Everything is running smoothly.
Ping is overdue but still within the grace period.
Ping missed beyond the grace period. The first alert is sent then by default, or after a second missed interval if you enabled the optional delay after a successful ping.
Job is paused. No monitoring or alerts will be triggered.
If the ping doesn't arrive within the expected interval plus grace period, QuietPulse marks the job as MISSING. By default, it sends an alert through your configured channels then. If you enabled the optional second-miss setting, the first alert after a successful ping waits for two intervals plus grace; a new job that has never pinged still alerts after its first deadline.
No. QuietPulse works with a simple HTTP GET request. If you have curl, wget, or any HTTP client, you're good to go.
Yes. The free tier includes up to 5 monitored jobs with expected intervals from 1 minute. For higher job limits, see our pricing page.
QuietPulse supports Telegram, verified email, and webhooks for your own systems or incident platform. You can configure more than one channel.