ETL Job Monitoring
ETL job monitoring for missed data pipeline runs.
PingCron alerts you when scheduled ETL jobs, imports, exports, and data syncs stop checking in — before stale data reaches a dashboard.
5 monitors free · No credit card · Live in under 60 seconds
Stale data is the most common ETL failure no one notices.
An ETL job that doesn't run usually doesn't crash loudly. The dashboard still loads. The CSV export still has data — just yesterday's data. The CRM still has customer records — just records that haven't been synced since Tuesday. Reports run on what's in the warehouse, and what's in the warehouse is whatever the last successful pipeline left there.
Data pipelines fail for predictable reasons that don't surface until someone notices the numbers feel off. A source API rotated its credentials. A schema change broke a transform halfway through. The destination database hit a connection limit and your job silently retried itself to death. A scheduled Airflow DAG was paused by accident and stayed paused for six weeks.
By the time someone says "these numbers look wrong", the gap is days or weeks deep — and the audit trail of when things went stale is buried in logs no one is reading.
How ETL jobs go silent:
- Source API credentials expired — extraction returns empty results, no error
- Schema change broke a transform halfway, so partial loads keep "succeeding"
- Destination warehouse hit a connection limit; jobs retry until they give up
- Airflow / Dagster scheduler paused the DAG and no one re-enabled it
- Cron entry for the nightly sync was removed during a deploy, never noticed
- Pipeline runs but skips records due to a quietly-caught exception
Setup
Wrap any ETL run in one ping.
Whether the pipeline is a shell script, a Python job, or an Airflow task, the integration is one HTTP call after the work completes.
Before
0 * * * * /scripts/sync-customers.sh
After
0 * * * * /scripts/sync-customers.sh && curl -fsS https://api.pingcron.io/ping/abc123
PingCron expects a check-in on the schedule you set (hourly, every 30 minutes, daily, etc.). If the pipeline stops checking in past the grace period, you get an alert.
Real-world examples
Python ETL script
import requests
PING_URL = 'https://api.pingcron.io/ping/abc123'
def run_etl():
extract_from_api()
transform()
load_into_warehouse()
try:
run_etl()
requests.get(PING_URL, timeout=10)
except Exception:
requests.get(PING_URL + '/fail', timeout=10)
raiseHourly warehouse sync from cron
0 * * * * cd /opt/etl && python sync_warehouse.py && curl -fsS https://api.pingcron.io/ping/abc123
CSV export job (any language)
30 4 * * * /usr/local/bin/export_customers.sh > /exports/customers.csv && curl -fsS https://api.pingcron.io/ping/abc123
ETL and data sync jobs to monitor.
Any scheduled pipeline whose freshness matters.
Customer data imports
Nightly imports from CRMs, billing systems, or partner APIs.
Warehouse syncs
Hourly loads into Snowflake, BigQuery, Redshift, or Postgres.
CSV exports
Scheduled reports for finance, analytics, or downstream partners.
API data pulls
Periodic fetches from third-party APIs into your stack.
Dashboard refresh jobs
Materialized view refreshes, BI tool extracts, dbt model runs.
Nightly transformations
Cleaned tables built every night that downstream jobs depend on.
CRM syncs
Two-way HubSpot, Salesforce, Pipedrive sync jobs.
Reporting pipelines
Finance reports, marketing attribution, ops digests.
How it works
Four steps. About a minute total.
Create an ETL monitor
Name the pipeline. PingCron generates a unique ping URL.
Match the interval to your schedule
Hourly for incremental syncs, daily for nightly loads, every 15m for near-real-time pipelines. Set a grace period that covers your slowest expected run.
Ping after the load step succeeds
Use && in cron, or call the URL from inside Python after the load step completes.
Get alerted when freshness slips
Email, Slack, Discord, or webhook the moment a check-in is missed.
Alerts where you'll actually see them.
Configure as many channels as you want per monitor.
HTML alerts with monitor details and direct links.
Slack
Post to any Slack channel via incoming webhook.
Discord
Native Discord webhook integration.
Custom webhooks
POST alerts to any endpoint with full payload.
FAQ
Stop letting stale data reach your dashboards unnoticed.
One ping at the end of every pipeline. Get alerted the moment a run is missed.
Start monitoring free5 monitors free · No credit card · Live in under 60 seconds