Webhook Capture

Debug what your cron jobs actually send with unique webhook endpoints.

How It Works

Every job you create in CronLabs gets a unique webhook URL. Point your cron job at this URL, and CronLabs captures every request—headers, body, timing, everything.

1

Create a job in CronLabs

Get a unique webhook URL

2

Add a request to your script

Use curl, wget, or any HTTP client

3

Watch requests in real-time

See exactly what your cron sends

What Gets Captured

Request Details

  • • HTTP method (GET, POST, etc.)
  • • Full request URL
  • • Query parameters
  • • Timestamp (UTC)

Headers

  • • Content-Type
  • • User-Agent
  • • Authorization
  • • Custom headers

Body

  • • JSON payloads (formatted)
  • • Form data
  • • Raw text
  • • Binary (base64)

Metadata

  • • Source IP address
  • • Response time
  • • Request size
  • • Status returned

Usage Examples

Basic Ping

The simplest use case—confirm your cron job ran:

curl -X POST https://webhook.cronlabs.dev/catch/YOUR_ID

With Status Data

Send useful information about what your job did:

curl -X POST https://webhook.cronlabs.dev/catch/YOUR_ID \
  -H "Content-Type: application/json" \
  -d '{
    "status": "success",
    "records_processed": 1523,
    "duration_ms": 4521,
    "errors": []
  }'

Error Reporting

Report failures so you can debug later:

#!/bin/bash
set -e

# Your actual work
./process_data.sh

# Report success
curl -X POST https://webhook.cronlabs.dev/catch/YOUR_ID \
  -d '{"status": "success"}'

# Or trap errors
trap 'curl -X POST https://webhook.cronlabs.dev/catch/YOUR_ID \
  -d "{"status": "error", "message": "$?"}"' ERR

Start and End Tracking

Track when your job starts and finishes to measure duration:

#!/bin/bash
START=$(date +%s)

# Notify start
curl -X POST https://webhook.cronlabs.dev/catch/YOUR_ID \
  -d '{"event": "start"}'

# Do your work
./backup.sh

# Notify completion with duration
END=$(date +%s)
DURATION=$((END - START))

curl -X POST https://webhook.cronlabs.dev/catch/YOUR_ID \
  -d "{"event": "complete", "duration_seconds": $DURATION}"

Response Codes

CronLabs webhook endpoints always respond quickly so they don't slow down your jobs:

200 OKRequest captured successfully
404 Not FoundInvalid webhook ID (check your URL)
429 Too ManyRate limit exceeded (upgrade or slow down)

Best Practices

✓

Use POST with JSON

Structured data is easier to search and analyze than plain text.

✓

Include a timestamp

Your server's time might differ from CronLabs' receive time.

✓

Don't wait for the response

Use curl --max-time 5 to avoid hanging if there's a network issue.

✓

Send at start AND end

If you only send at the end and the job crashes, you'll never know it started.

Data Retention

PlanHistoryRequests/day
Free7 days100
Pro30 days10,000
Team90 daysUnlimited