A practical field guide from Automation Ace.
How to Run a Zap on a Custom Schedule or Interval in Zapier
Schedule by Zapier is the built-in trigger for time-based Zaps. It supports a fixed set of intervals — every 15 minutes, every hour, every day, every week, and every month. These cover most use cases, but when a workflow needs every 5 minutes, every 2 hours, or every minute, the native scheduler falls short. This guide covers what Schedule by Zapier supports, how to work around its limitations for common custom intervals, and when to consider external scheduling tools.
What Schedule by Zapier Supports Natively
The Schedule by Zapier trigger offers these built-in interval options:
- Every 15 Minutes — fires four times per hour
- Every Hour — fires at the top of each hour
- Every Day — fires once per day at a specified time
- Every Week — fires once per week on a specified day and time
- Every Month — fires once per month on a specified day and time
There is no built-in option for every minute, every 5 minutes, every 2 hours, every 3 days, or any other interval not in this list.
Running a Zap Every 1 Minute
Zapier does not natively support a 1-minute schedule. The two practical approaches:
Approach 1: Self-triggering Zap with Delay
A Zap can trigger itself by sending a webhook to its own Catch Hook trigger URL. Combined with a Delay step, this creates a recurring loop:
- Create a Zap with a Webhooks by Zapier — Catch Hook trigger.
- Add your workflow steps.
- Add a Delay by Zapier — Delay For step at the end. Set it to 1 minute.
- Add a final Webhooks by Zapier — POST step that sends a POST to the Catch Hook URL from step 1.
- To start the loop, manually trigger the webhook URL once.
Limitations: if a step errors, the loop stops. Task consumption scales linearly with the loop run rate — a 1-minute loop with 3 steps consumes ~4,320 tasks per day. This approach works best for workflows where occasional gaps are acceptable and the step count is low.
Approach 2: External Scheduler
Use an external cron service (Pipedream, EasyCron, cron-job.org, or a cloud function) to POST to the Zap's Catch Hook URL on a 1-minute interval. The external scheduler handles the timing; the Zap handles the workflow. This is more reliable than the self-triggering loop because the trigger source is independent of the Zap's execution state.
Running a Zap Every 5 or 10 Minutes
Schedule by Zapier's minimum interval is 15 minutes. For shorter intervals:
- Every 5 minutes: Use an external cron service to POST to a Catch Hook every 5 minutes, or use three separate Schedule by Zapier Zaps each offset by 5 minutes (tricky to maintain).
- Every 10 minutes: Three staggered Zaps triggered at :00, :10, :20, :30, :40, :50 each hour via external cron, or three Zaps each on the Every 15 Minutes schedule with manual staggering (not precise).
The simplest reliable solution for sub-15-minute intervals is an external cron posting to a Catch Hook URL.
Running a Zap Every 30 Minutes
Schedule by Zapier doesn't have a native 30-minute option. Workaround: create two Zaps on the "Every Hour" schedule — one set to run at :00, one at :30. Both Zaps run the same workflow. This requires maintaining two identical Zaps but works reliably with no external dependencies.
Running a Zap Every 2 Hours (or Every N Hours)
Use multiple "Every Hour" Zaps, or use an external cron to POST to a Catch Hook every 2 hours. For intervals like every 3 hours, every 6 hours, or every 12 hours, external cron is simpler than trying to compose Schedule by Zapier triggers.
Running a Zap at a Specific Time on Multiple Days Per Week
Schedule by Zapier's "Every Day" trigger fires every day — there is no built-in "every Tuesday and Thursday" option. Workaround: use "Every Day" and add a Filter by Zapier step immediately after the trigger that checks the current day of week:
// In a Code step: check day of week and output it
const d = new Date();
const days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
output = { day_of_week: days[d.getUTCDay()] };
Then add a Filter step: only continue if day_of_week is "Tuesday" or "Thursday". The Zap runs daily but only proceeds on the specified days. Factor in the daily task consumption — a filtered Zap still consumes a task for the trigger and filter step even when filtered out on non-matching days.
Running a Zap During Business Hours Only
For business-hours filtering on a scheduled Zap, see the dedicated pattern in running Zaps during business hours only.
Task Cost Considerations
Scheduled Zaps consume tasks on every run, even runs where a filter stops execution early. For high-frequency schedules:
- Every 15 minutes = ~2,880 runs/month = ~2,880+ tasks/month at minimum
- Every 1 minute (via self-trigger) = ~43,200 runs/month
Evaluate your Zapier plan's task limit against the frequency before building a high-frequency scheduled workflow. For polling-style workflows that check for new data and frequently find nothing, consider whether an instant trigger from the source system is feasible — it eliminates empty polling runs entirely.
Schedule by Zapier's 15-minute minimum is one of the most common constraints teams hit when building time-sensitive workflows. The self-triggering webhook loop works for simple cases; external cron services work for everything else. Neither is as clean as a native scheduler, but both are reliable when implemented carefully.
For more on Zapier's built-in scheduling and timing tools, see the Zapier built-in tools guide. For Delay by Zapier patterns including sub-minute delays, see how to add a delay of less than one minute in Zapier. For help designing a scheduled workflow, talk to Automation Ace.
Disclaimer: This article may include links to apps, products, or services. Some links may be affiliate links, which means Automation Ace may earn a commission at no extra cost to you.