Cronjob.de › Guides › Supabase Cron

Monitoring Supabase Cron – including apps built with Lovable

Apps built with Lovable run on Supabase: Lovable Cloud is built on it, and many projects use Supabase directly. Scheduled tasks – the daily summary, cleaning up old data, syncing with other services – live in Supabase Cron. Whether they ran today, you only see when you look. A heartbeat tells you by itself.

Why at all

Why you would not notice otherwise

Supabase Cron is built on the Postgres extension pg_cron and records every run in the table cron.job_run_details. There is no message on failure – you have to look yourself.

If the job calls an Edge Function, net.http_post only sends the request. Whether the function fails afterwards is stored in the response table net._http_response – and by default only for six hours.

And according to its pricing page, Supabase pauses free projects after one week of inactivity. A paused project does not run any jobs either.

Ping address (example)
https://runcheck.de/a8k3m2x9q1
Schedule
cron syntax, GMT time zone
Applies to
Supabase Cron (pg_cron), pg_net, Edge Functions
Sufficient Cronjob.de plan
One heartbeat is free; you see its status in your account. Email alerts come with Plus (€17.88 a year), Slack, Teams and Discord with Unlimited.

Setup

Set up in three steps

What is a heartbeat?

A regular sign of life: after every run your job calls its own address at Cronjob.de. If the call is overdue or the job reports a failure, we alert you. More about heartbeats

  1. Create a heartbeat

    In your account, create a new one under “Heartbeats”, with the same rhythm as your cron job and some leeway. You receive a ping address of its own, such as https://runcheck.de/a8k3m2x9q1.

  2. SQL job: the check-in after the work

    If your job does its work in SQL, add net.http_get with your ping address after it, for example in the SQL Editor. Both run in one transaction, and pg_net only sends requests once it has committed: if the work fails, no check-in goes out. The pg_net extension has to be enabled.

    select cron.schedule('nightly-cleanup', '0 3 * * *', $$
      delete from sessions where expires_at < now();
      select net.http_get('https://runcheck.de/a8k3m2x9q1');
    $$);
  3. Edge Function: the check-in as the last line

    If your job calls an Edge Function – for emails or syncing with other services, say – the check-in belongs inside the function, before the response. Only then does it mean: the work is done. The time limit makes sure the function never waits for us.

    Deno.serve(async (req) => {
      // ... your work ...
      await fetch('https://runcheck.de/a8k3m2x9q1', { signal: AbortSignal.timeout(10000) }).catch(() => {});
      return new Response('ok');
    });

The ready-made lines for Linux, PHP, Python, Node.js, n8n, Make, Supabase and Vercel are on the page Cron job monitoring. Your own ping address appears in your account once you create the heartbeat, with the same lines ready to copy.

When something fails

What happens when a run fails

If the job does not run – project paused, job deactivated, error in the query – or the Edge Function fails before its last line, the check-in is missing. After the leeway we alert you; the next check-in brings the all-clear.

FAQ

Common questions about Supabase Cron

I built the app with Lovable and never wrote SQL. Can I still do this?
Yes. Ask Lovable in the chat to call the address https://runcheck.de/a8k3m2x9q1 at the end of your scheduled job – with a ten-second time limit and without letting an error there abort the job. The lines above show what the result should look like.
Does the check-in slow my job down?
No. pg_net works asynchronously: the request goes out in the background after the transaction ends. In the Edge Function, AbortSignal.timeout limits the wait to ten seconds, and errors while checking in are ignored.
How do I see which jobs exist?
With select jobname, schedule, command from cron.job; in the SQL Editor. Recent runs are in cron.job_run_details.

Set up your heartbeat now

One heartbeat is free; you see its status in your account. Email alerts come with Plus (€17.88 a year), Slack, Teams and Discord with Unlimited. The first 14 days run on the Unlimited plan, no payment details needed.

Set up a heartbeat for free More about heartbeats

More monitoring guides

Official documentation of Supabase Cron

The details about Supabase and Lovable come from their own documentation, as of October 2026. Please check there whether anything has changed since. Supabase and Lovable are trademarks of their respective owners. This guide comes from Cronjob.de and has no business relationship with these providers.