Background tasks you can
see and control.

Cron jobs, queues, and scheduled tasks — with structured logs, real-time monitoring, and automatic retries. Any framework, any language.

import { cron } from "@usepingback/next";

export const syncProducts = cron(
  "sync-products",
  "0 */6 * * *",
  async (ctx) => {
    const products = await shopify.products.list();
    ctx.log(`Syncing ${products.length} products`);

    for (const product of products) {
      await upsertProduct(product);
    }

    ctx.log("Sync complete", {
      count: products.length,
    });
  },
  { retries: 2, timeout: "120s" }
);

Cron Jobs

Run functions on a schedule with standard cron expressions. Pingback handles timing, retries, and logs every execution.

Monitor every job. Debug every failure.

Logs, retries, and alerts — so you know what ran, what failed, and why.

Observability

Structured Logs

Every job emits logs via ctx.log(). Search, filter, and trace across executions in one dashboard.

Dashboard

Real-Time Monitoring

See every execution as it happens — status, duration, response, and errors. Get alerts when things break.

Reliability

Automatic Retries

Configurable retry policies with exponential backoff. Failed jobs recover without you waking up at 3 AM.

Execution

Fan-Out Tasks

Spawn independent sub-tasks from any job. Each runs with its own retries, timeout, and tracking.

See every execution in real time

Trace runs from trigger to completion — with logs, timing, output, and retry history in one view.

Pingback dashboard showing execution history, structured logs, trace timeline, and JSON output for a cron job run

Works with your stack

Add Pingback to any framework in minutes.

01.Install the SDK

Add the adapter for your framework.

02.Define your jobs

Write cron and task functions in your codebase.

03.Monitor everything

Deploy and get a dashboard with execution status, structured logs, failure alerts, and retry history.

npm install @usepingback/next
import { cron } from "@usepingback/next";

export const cleanup = cron(
  "cleanup",
  "0 3 * * *",
  async (ctx) => {
    const expired = await removeExpiredSessions();
    ctx.log(`Removed ${expired} sessions`);
  },
  { retries: 2 }
);

Simple, predictable pricing

Start free. Upgrade when you need more.

Free

$0/mo

For side projects and experimentation.

  • 5 jobs
  • 1,000 executions / month
  • 1-minute minimum interval
  • 24-hour log retention
  • 1 project
  • Email alerts
Get Started

Pro

Popular
$12/mo

For production apps that need reliability.

  • 50 jobs
  • 50,000 executions / month
  • 10-second minimum interval
  • 30-day log retention
  • 5 projects
  • Email + webhook alerts
Upgrade to Pro

Team

$39/mo

For teams managing multiple projects.

  • Unlimited jobs
  • 500,000 executions / month
  • 10-second minimum interval
  • 90-day log retention
  • Unlimited projects
  • Email + webhook alerts
  • 10 team members
  • Priority support
Upgrade to Team

Your background jobs deserve a dashboard.

No credit card required.

Get Started