Use case

Weekly standup prompts, daily digests, fail alerts. All on cron.

Slack Workflow Builder is great inside one channel for one cadence. For team-wide digests, multi-timezone standup prompts, and fan-out to multiple channels, an external cron driving Slack incoming webhooks is the cleaner pattern. Crontap is the clock.

Get started

Free plan · no credit card required

The problem

Why this is painful without the right tool

  • Slack Workflow Builder schedules are per-channel and bound to the Workflow editor; cross-channel and cross-team reuse is awkward.
  • Workflow Builder cadence is limited to coarse intervals; cron-style precision (weekdays at 09:30 in each member's timezone) is not expressible.
  • Slack reminders fire as one-off DMs from /remind; they do not produce a structured channel post with blocks and attachments.
  • Multi-channel digests (the same content posted to engineering plus marketing plus a customer channel) need a fan-out somewhere; Workflow Builder makes this hard.

The fix

How Crontap solves it

For each digest, create a Slack incoming webhook URL on the target channel. Paste into Crontap and pick a cron. The payload is a Slack-shaped JSON block (text, blocks, or both). Crontap fires on time, retries on 5xx, and alerts on failure via email / webhook (a different webhook so the failure does not silently miss the same channel that just stopped working).

cron expression
30 9 * * 1-5
Weekdays at 09:30 in the channel's timezone, post the standup prompt to #engineering.

For dynamic content (yesterday's deploys, today's on-call, this week's open PRs), the cleanest pattern is to point Crontap at a small backend endpoint that builds the Slack-shaped JSON and posts it to the webhook. That keeps the data layer in your code and the schedule layer in Crontap.

For static content (a weekly standup prompt, a Friday retrospective reminder), the JSON payload can live directly in Crontap. Either pattern works; the dynamic pattern scales better as the digest gets richer.

For multi-channel fan-out, one Crontap schedule per channel is the simplest pattern. The dashboard groups them; the failure alerting routes per channel.

FAQ

Common questions

What's the shortest interval Crontap supports?
Every 1 minute on paid plans. Free tier available for slower cadences. Most Slack digests run at every hour, daily, or weekdays-only; minute cadence shows up for fail-alert pings rather than digest content.
Can I post rich blocks and attachments?
Yes. Slack incoming webhooks accept the standard Block Kit JSON. Paste it into the schedule's payload field; Crontap sends it as-is. For variables that change per run, point Crontap at a small backend that renders the JSON and posts to Slack.
How do I avoid losing alerts when the same Slack channel breaks?
Wire the failure integration to a different channel or to email. If the digest channel breaks (channel deleted, webhook revoked), the failure alert still lands somewhere you actually see it.

Ready to fix it?

Point Crontap at any URL. Pick any cron. Done.

WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.

Free forever tier ・ No credit card required

GET

/wp-cron.php?doing_wp_cron=1

Running
Your next schedule

Schedule

"every 5 minutes"

Next

in 23s