cronthehook

dhruvdhruv
4 min read

Hey folks,
Dhruv here, your local workflow automation enthusiast and a supporter of open source. You already know I love squeezing the most out of platforms like Make.com, n8n, Airtable, and more. But sometimes, when you just want to trigger a webhook at a specific time, you don’t need a whole platform running 24/7.

That’s why I built cronthehook a lightweight, self-hosted service that schedules webhooks using cron expressions. No frills, just reliable scheduling.

Why This Service Exists: Stop Burning Ops on Polling

Let’s get real: most no-code tools charge you per operation. If you’re running a workflow every minute to check whether something should be triggered, you’re wasting a ton of operations.

Here’s a common setup:

  • You save a scheduled timestamp in Google Sheets, Airtable, or Baserow.

  • Then, every minute, a workflow checks: “Is it time yet?”

  • If yes, it triggers the real flow. If not, it just… does nothing.

Now scale that to 100 flows.
That’s 100 checks per minute = 144,000 operations per day = 4.3 million ops/month just for waiting.
Imagine doing that on Make or Zapier. That’s an ops bill you don’t want.

cronthehook flips the model:

  • You register the job once via API (with a cron expression).

  • The system tracks time and triggers the webhook only when it’s supposed to fire.

  • No polling. No overhead.
    On a $5/month VPS, you can easily handle 100K+ scheduled events—with complete control.

What is cronthehook?

cronthehook is a microservice that allows you to schedule HTTP POST requests based on cron syntax. It’s built for automation professionals, devs, and indie hackers who want a lean way to execute time-based logic—without platform lock-in or platform costs.

How cronthehook Works

Here’s how it all fits together:

  1. Schedule a Job – Send a POST request with a cron string and a webhook URL.

  2. Supabase Backend – All jobs are stored in a Supabase table for persistence and querying.

  3. Dockerized Worker – A Node.js service polls the schedule once a minute and fires only matching jobs.

  4. Trigger the Webhook – Your target endpoint is hit exactly when it should be.

That’s it. No fancy dashboards. Just a clean API and a log you can hook into.

Use Cases

  • Scheduled Automations – Trigger Make.com/n8n flows on a strict schedule.

  • API Health Checks – Send regular “pings” to monitor uptime.

  • Reminder Systems – Trigger time-based alerts via SMS, WhatsApp, or Email.

  • Low-Cost Automation Scaling – Run tens of thousands of scheduled jobs without killing your wallet.

Installation Guide

🖥️ 1. Spin Up a VM on Linode

If you're looking for a fast, affordable, and reliable host, I recommend Linode (now Akamai). You can get started with a $5/month VM that’s more than enough to run cronthehook and scale to tens of thousands of scheduled jobs.

Steps:

  • Head over to cloud.linode.com

  • Create a new Ubuntu VM (22.04 LTS recommended)

  • Set up SSH access, then connect to your VM

  • Update system packages:

sudo apt update && sudo apt upgrade -y

🔧 2. Clone the Repository

git clone https://github.com/ddm21/cronthehook.git
cd cronthehook

⚙️ 3. Configure Environment Variables

Copy and customize the environment file:

cp .env.example .env

Edit the .env file with your Supabase URL and keys.

🧱 4. Set Up the Supabase jobs Table

Run this SQL in your Supabase project to create the jobs table:

create table public.jobs (
  id uuid primary key default gen_random_uuid(),
  webhook_url text not null,
  payload jsonb not null,
  scheduled_time timestamp with time zone not null,
  status text not null check (status in ('pending', 'completed', 'failed')),
  retries integer not null default 0,
  last_error text,
  created_at timestamp with time zone not null default now(),
  completed_at timestamp with time zone
);

From inside the repo:

cd docker-compose-setup
docker-compose up

This will:

  • Start the cronthehook backend

  • Launch a Caddy reverse proxy

  • Automatically enable HTTPS via Let’s Encrypt

  • Serve your API on https://yourdomain.com

Make sure:

  • Your domain's A/CNAME points to your Linode IP

  • Your email is set in the Caddyfile for cert renewals

API Documentation & Examples

cronthehook has a clean REST API to schedule, manage, retry, and delete jobs.

➡️ View Full API Documentation on GitHub

Who Should Use This?

cronthehook is perfect for:

  • No-code builders who need clean, scheduled execution

  • Developers who don’t want to bake scheduling logic into app code

  • Agencies and consultants managing client automations

  • Anyone who’s tired of watching ops quotas evaporate just to check a timestamp

Final Thoughts

cronthehook is the tool I needed, so I built it. It’s simple, efficient, and plays nicely with the rest of your stack. Whether you’re deep into automation workflows or just looking for a smarter scheduler, this little service might save you thousands of ops and a lot of cash.

0
Subscribe to my newsletter

Read articles from dhruv directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

dhruv
dhruv

I’m a Freelance AI Automation Consultant helping businesses eliminate manual tasks by designing intelligent, AI-powered workflows. From streamlining operations to integrating smart tools, I specialize in crafting automation solutions that boost efficiency, save time, and drive productivity. Whether you’re scaling up or just starting your automation journey, I can help implement the right systems to meet your goals.