Zero-Bloat Developer Tools

The Dead-Simple Cron Job Monitor & Heartbeat Alert System

Did your script run? We'll text you if it didn't.

The simplest cron heartbeat and dead man's switch for developers. No complex observability platforms. Just a URL to ping and absolute peace of mind.

The Nightmare of Silent Failures

Your database backup script fails on a Friday. Your API scraper gets rate-limited on a Sunday. You don't find out until a customer complains on Tuesday. Traditional uptime monitors only check if your website is up. PingPug monitors the unseen background tasks that keep your business running.

3 Steps to Bulletproof Cron Jobs

1.Create a Ping URL

Generate a unique, secure endpoint. Define your expected interval (e.g., every 24 hours) and a grace period.

2.Append to your Code

Add a simple HTTP GET request to the end of your bash script, Node.js task, or Python pipeline.

3.Get Alerted

If our servers do not receive a heartbeat ping from your script in time, we instantly trigger an SMS and Email alert.

Works with any language or framework

No heavy SDKs or dependencies required. Just standard HTTP requests.

cURL (Bash)

curl -m 10 --retry 3 https://pingpug.xyz/api/ping/YOUR_UNIQUE_ID

Python

requests.get('https://pingpug.xyz/api/ping/YOUR_UNIQUE_ID', timeout=10)

Node.js

await fetch('https://pingpug.xyz/api/ping/YOUR_UNIQUE_ID', { signal: AbortSignal.timeout(10000) });

Go

client := http.Client{Timeout: 10 * time.Second}; client.Get("https://pingpug.xyz/api/ping/YOUR_UNIQUE_ID")

Ruby

require 'net/http'; require 'uri'; Net::HTTP.get(URI('https://pingpug.xyz/api/ping/YOUR_UNIQUE_ID'))

PHP

file_get_contents('https://pingpug.xyz/api/ping/YOUR_UNIQUE_ID', false, stream_context_create(['http' => ['timeout' => 10]]));

Java

HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build().send(HttpRequest.newBuilder().uri(URI.create("https://pingpug.xyz/api/ping/YOUR_UNIQUE_ID")).build(), HttpResponse.BodyHandlers.discarding());