cronthehook


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:
Schedule a Job – Send a POST request with a cron string and a webhook URL.
Supabase Backend – All jobs are stored in a Supabase table for persistence and querying.
Dockerized Worker – A Node.js service polls the schedule once a minute and fires only matching jobs.
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
);
🐳 5. Run with Docker (Recommended)
From inside the repo:
cd docker-compose-setup
docker-compose up
This will:
Start the
cronthehook
backendLaunch 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.
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.