Newsletter staging and one-tap approval automation for Supabase
Newsletter staging and one-tap approval automation for Supabase is an integration job, not a software purchase. Data Jockey has built one as a Cloudflare Worker cron (30 min) + a cron job on the VPS (15 min) + Vercel cron `20 17 * * *`: it runs in production. It publishes what it calls, reads, writes and checks.
What it reads and writes
Every read and every write this build makes is printed below, as the build sends it, with runtime values replaced by a placeholder.
- stages to `er_newsletter_pending`
Safety checks
An automation that writes into a system of record has to refuse some cases. These are the checks this build makes before it acts.
never auto-sends to subscribers
CAN-SPAM postal-address gate
HMAC-signed action-specific approve token
GET only renders a confirm page so a mail scanner cannot approve by prefetching
per-recipient claim before send
Schedule and settings
These are the tuned constants from the delivered build. They are included because they are the part nobody can guess in advance, and they are the part a second implementation gets wrong.
- `/api/newsletter-send?send=1`
Where it runs
It runs as a Cloudflare Worker cron (30 min) + a cron job on the VPS (15 min) + Vercel cron `20 17 * * *`.
It also touches Resend, Cloudflare Workers and Vercel.
What this record is
Data Jockey is a services firm, so this page is an implementation record. There is no product to buy here and no price on this page.
No customer is named on it either. Data Jockey publishes no customer list, and the calls and checks above are the part a reader can check.
Questions we hear
- Is newsletter staging and one-tap approval automation for Supabase a product or a project?
- It is a project. The queries on this page are specific to how one company had its Supabase set up: which fields carried the human identifier, which documents already existed, and where a human had to stay in the loop. A product cannot know any of that in advance, which is why the integration is the work.
- Did this run in production?
- Yes. It runs in production today as a Cloudflare Worker cron (30 min) + a cron job on the VPS (15 min) + Vercel cron `20 17 * * *`, and this page is read out of the code that runs.
- What happens when the automation is not sure?
- It stops. This build carries 5 distinct kinds of check, and every one of them exists to hand the case to a person. Automating the confident cases and routing the rest is what makes an integration safe to leave running.
- Can Data Jockey build this for us?
- Book a call and we will scope it against the systems you already run. Data Jockey publishes no prices, so there is no figure on this page, and what a build costs depends on what your setup turns out to need.
Where these facts come from
Every call, table, check and setting above comes from the delivery record of this build, and each identifier in it was checked against the file that implements it by tools/capture-proof-of-work.mjs. The capture is committed at data/raw/dj-proof-of-work-capture-2026-09-07.json and records a sha256 of each source file. Generated 2026-09-07. No figure here was rounded, averaged or estimated.
Keep reading
- Proof of work
- Abandoned-checkout reminders automation for Supabase
- Advertising-email retry and alert automation for Supabase
- Buyer-chat invite send automation for Supabase
- Buyer inquiry capture automation for Supabase
- Checkout outcome reporting automation for Supabase
- Client automation job queue automation for Supabase
- AI for manufacturing
- How Data Jockey works
[+/Skip ahead]
Book a 30-minute intro.
30 minutes about your operation.
There is no pitch. We spend the call understanding your pain points, whether that means responsible AI adoption or quantifying where automation will pay off, and providing a plan of attack.