Set it once, get reports forever — free, automatic, no coding required
Here is everything you need to follow this guide:
Cron scheduling is included free in every OpenClaw plan. No upgrade required.
Cron job scheduling is a built-in feature of OpenClaw. It is included in the free plan. There is no add-on, no premium tier, and no per-schedule fee.
| Feature | Cost | Notes |
|---|---|---|
| Cron Scheduling | Free | FREE FOREVER — included in all plans |
| Daily / Weekly / Monthly Triggers | Free | FREE FOREVER — unlimited schedules |
| Email Actions | Free | FREE FOREVER — send to any email |
OpenClaw's free plan includes a limited number of automation runs per month. Most small businesses stay well within the limit with daily reports. If you exceed it, paid plans start at $10/month.
Start free. You will know when you need more.
Every chapter follows the same simple framework: WHAT, HOW, and WHEN. First, we explain the concept. Then, we walk you through building it step by step. Finally, we show you when and how often to use it.
By the end of all 8 chapters, you will understand cron expressions, have three automations running on autopilot, and know how to troubleshoot when things go sideways.
Angela runs a Shopify store selling handmade candles. Every morning she woke up, made coffee, opened her laptop, logged into Shopify, checked yesterday's sales, opened Google Sheets, typed the numbers in, then wrote herself a summary. Thirty minutes, every single day.
Then she set up a cron job in OpenClaw. Now at 9 AM sharp, an email lands in her inbox with yesterday's sales, top-selling candle, and new subscriber count. She reads it while sipping coffee. The thirty minutes turned into thirty seconds.
You already know what a timer is. You set a timer on your microwave for three minutes. It beeps when time is up. A cron job is the same idea, but for your automations.
Here is the difference: a microwave timer counts down once. A cron job repeats. You tell it "run this every morning at 9 AM" and it does — today, tomorrow, next week, next month. It never forgets. It never sleeps in.
The name "cron" comes from the Greek word "chronos," which means time. All you need to know is this: a cron job is a timer that runs your automation on a schedule you pick.
| Feature | Heartbeat | Cron |
|---|---|---|
| How it works | Runs every X minutes/hours | Runs at a specific time on specific days |
| Example | "Every 15 minutes" | "Every Tuesday and Thursday at 2:30 PM" |
| Best for | Frequent checks where exact time does not matter | Scheduled reports, reminders, summaries |
Any time you want something to happen at a specific time on specific days. If you catch yourself saying "I need to remember to do this every Monday" or "I should check this every morning" — that is a cron job waiting to be built.
Every cron schedule is written as five numbers (or symbols) separated by spaces. That might look confusing right now, but in two minutes it will make perfect sense. Each number controls one piece of the schedule.
| Position | What It Controls | Range |
|---|---|---|
| First number | Minute — which minute of the hour | 0 to 59 |
| Second number | Hour — which hour (24-hour clock) | 0 to 23 |
| Third number | Day of the month — which date | 1 to 31 |
| Fourth number | Month — which month | 1 to 12 |
| Fifth number | Day of the week — which weekday | 0 to 6 (0 = Sunday) |
When you see a star, it means "every." A star in the minute spot means every minute. A star in the day spot means every day. A star in the month spot means every month.
Cron uses a 24-hour clock. Here is a quick translation:
| Regular Time | 24-Hour Time | Cron Hour Number |
|---|---|---|
| 6:00 AM | 06:00 | 6 |
| 9:00 AM | 09:00 | 9 |
| 12:00 PM (noon) | 12:00 | 12 |
| 3:00 PM | 15:00 | 15 |
| 6:00 PM | 18:00 | 18 |
| 9:00 PM | 21:00 | 21 |
| 12:00 AM (midnight) | 00:00 | 0 |
0 = at minute zero (top of the hour). 9 = at hour 9 (9:00 AM). * * * = every day, every month, every weekday. Translation: "At 9:00 AM, every day."
30 = at minute 30. 14 = at hour 14 (2:00 PM). * = every day of the month. * = every month. 1 = Monday. Translation: "At 2:30 PM, every Monday."
Quick Win: You just learned to read cron expressions. That is a skill most people think requires a computer science degree. It does not. It is five numbers.
You do not need to memorize cron codes. Bookmark this page and copy the one you need. This is the cheat sheet that the IT department at a 200-person insurance company printed and taped to the wall. If it works for enterprise, it works for you.
| What You Want | Cron Expression | In Plain English |
|---|---|---|
| Every morning at 9 AM | 0 9 * * * | Minute 0, hour 9, every day |
| Every evening at 6 PM | 0 18 * * * | Minute 0, hour 18, every day |
| Every Monday at 9 AM | 0 9 * * 1 | Minute 0, hour 9, every Monday |
| Every weekday at 8 AM | 0 8 * * 1-5 | Minute 0, hour 8, Monday through Friday |
| Every Sunday at midnight | 0 0 * * 0 | Minute 0, hour 0, every Sunday |
| First of every month at 8 AM | 0 8 1 * * | Minute 0, hour 8, day 1 of every month |
| Every 15 minutes | */15 * * * * | Every 15th minute, every hour |
| Every hour on the hour | 0 * * * * | Minute 0, every hour |
| Twice a day (9 AM and 6 PM) | 0 9,18 * * * | Minute 0, hours 9 and 18 |
| Mon, Wed, Fri at noon | 0 12 * * 1,3,5 | Minute 0, hour 12, Mon/Wed/Fri |
| Every quarter (Jan, Apr, Jul, Oct 1st) | 0 9 1 1,4,7,10 * | Minute 0, hour 9, 1st of quarter months |
Comma (,) means "and." Example: 1,3,5 in the weekday spot means Monday and Wednesday and Friday.
Dash (-) means "through." Example: 1-5 in the weekday spot means Monday through Friday.
Slash (/) means "every Nth." Example: */15 in the minute spot means every 15 minutes.
Action Step: Pick one schedule from the table above that matches something you want to automate. Write it down. You will use it in the next chapter.
Raj is a solo freelance web designer. He tracks leads, project hours, and invoices in a Google Sheet. Every morning at 9 AM, his automation pulls yesterday's numbers and emails him a clean summary. He reads it on his phone before opening his laptop. He knows exactly where he stands before his first meeting.
This is your first cron-powered automation. It sends you an email every morning at 9 AM with your key business numbers.
Every day at 9:00 AM, your automation will: (1) pull your latest numbers, (2) format them into a clean email, and (3) send it to your inbox.
Click Create New Flow or New Automation.
Look for a trigger called "Schedule," "Cron," or "Timer." Select it. Enter this cron expression:
This depends on where your data lives. Common options: Google Sheets (Read Rows), your CRM (query new leads), or Stripe (list today's payments). Add multiple steps if you have multiple data sources.
Use a "Code" or "Text" step to combine your data. Here is a template you can copy:
Choose Send Email or Gmail — Send Email. Set the recipient to your own email address. Set the subject to "Daily Briefing — [today's date]."
Click Publish. Your automation is live. Check your email at 9 AM tomorrow.
The marketing team at a 50-person SaaS company used to spend every Monday morning pulling numbers from five different dashboards. Leads, trial signups, demo calls, revenue, and churn. Then someone on the team spent an hour making a slide deck. Now a single cron job does it all at 9 AM Monday and emails the whole team.
A daily briefing tells you what happened today. A weekly report tells you the bigger picture — are things going up or down?
Every Monday at 9:00 AM, your automation will: (1) pull this week's numbers, (2) pull last week's numbers, (3) calculate the difference, and (4) send you a report showing whether you are up or down.
Cron expression:
Add a step that gets your numbers from the last 7 days. Sum up leads, revenue, orders, or whatever you track.
Add another step that gets numbers from 8 to 14 days ago. This is your comparison baseline.
Add a Code step with this formula:
Positive = growing. Negative = shrinking.
Use an email step, a Telegram message, or both. Click Publish.
Pro Tip: Send the weekly report to your whole team. Everyone starts Monday on the same page, knowing exactly where the business stands.
Elena runs a small accounting firm with four employees. Her clients sometimes forget to pay. She used to spend two hours on the first of every month writing reminder emails. Now a cron job checks her invoice list, finds unpaid invoices, and sends a polite reminder to each client. Two hours of work, gone. Zero emails written by hand.
Getting paid on time is hard. This automation sends a polite reminder to every client who has an unpaid invoice on the first of every month.
On the first of every month at 8:00 AM, your automation will: (1) check your invoice list for unpaid invoices, (2) loop through each one, and (3) send a reminder email to each client.
Cron expression:
Add a step that reads from wherever you track invoices — Google Sheets, QuickBooks, Stripe, or your own database. Filter for invoices where the status is "unpaid" or "overdue."
In OpenClaw, look for a "Loop" or "For Each" action. This takes a list (your unpaid invoices) and runs the next steps once for each item.
Add a step that updates your spreadsheet to mark "reminder sent on [today's date]." This helps you track how many reminders each client has received.
Now on the first of every month, every client with an unpaid invoice gets a polite nudge. You did not write a single email.
Quick Win: Businesses that send invoice reminders get paid 14 days faster on average. This automation pays for itself (literally) the first month.
The operations department at a 300-person logistics company runs 12 cron jobs that feed into each other. Daily shipment counts roll up into weekly performance reports. Weekly reports roll up into monthly executive summaries. Monthly summaries roll up into quarterly board decks. One person manages the entire system.
One cron job is useful. Multiple cron jobs working together are powerful. Here is how to build a system where your daily, weekly, and monthly automations all feed into each other.
| Schedule | What It Does | Cron Expression |
|---|---|---|
| Every morning at 9 AM | Daily briefing with yesterday's numbers | 0 9 * * * |
| Every evening at 6 PM | Evening recap with today's numbers | 0 18 * * * |
| Every Monday at 9 AM | Weekly report comparing this week to last | 0 9 * * 1 |
| First of every month at 8 AM | Monthly invoice reminders | 0 8 1 * * |
| First of every month at 9 AM | Monthly summary with comparisons | 0 9 1 * * |
| First of every quarter at 9 AM | Quarterly review with 90-day trends | 0 9 1 1,4,7,10 * |
Your daily briefing collects raw numbers and saves them to a spreadsheet. Your weekly report reads from that same spreadsheet and compares 7-day windows. Your monthly summary reads from the same data and compares 30-day windows. Your quarterly review reads from the monthly summaries. Each layer builds on the one below it.
Every day at 6 PM, this automation sends you: today's final numbers, any follow-ups that came in, and a reminder of what is scheduled for tomorrow. Copy your morning briefing, change the cron to 0 18 * * *, and add a "tomorrow's schedule" section. Five minutes to set up.
Once you have one cron job working, add a second. Then a third. Build the system gradually. Most businesses end up with 3 to 6 cron jobs that cover everything they need.
Here are the most common cron job problems and exactly how to fix each one. Bookmark this section.
What you see: Your automation runs, but at the wrong time. You set it for 9 AM but it fires at 4 AM.
Fix it: OpenClaw's cron scheduler might be set to a different timezone. Check the timezone setting in your flow or in your account settings. If you are in New York (Eastern Time) and the server is set to UTC, 9 AM UTC is 4 AM or 5 AM Eastern. Change the timezone to match your location.
What you see: The time passed and nothing happened.
Fix it: (1) Check that the flow is published and active. (2) Check the cron expression for typos. (3) Look at the flow's run history. (4) If it still did not run, delete the trigger and recreate it.
What you see: You type in a cron expression and OpenClaw shows an error.
Fix it: (1) Make sure you have exactly five values separated by spaces. (2) Check for extra spaces. (3) If */15 does not work, try 0,15,30,45. (4) Some systems use a sixth field for seconds — try adding a 0 at the beginning.
What you see: Reports arrive every minute instead of once a day.
Fix it: You probably have a star (*) where you should have a specific number. * 9 * * * means "every minute of the 9 AM hour" (60 emails). You want 0 9 * * * (just once, at minute zero). Double-check every position.
What you see: The report arrives on time but the numbers are wrong or empty.
Fix it: (1) Check your date filters — are you pulling "yesterday's" data or "today's"? (2) Make sure the data source is still connected. (3) Run the data step manually and check what it returns.
What you see: You want "every other Tuesday" or "the last day of the month" and cannot figure out the expression.
Fix it: Standard cron does not support every possible schedule. Workarounds: for every other week, add a code step that checks the week number. For last day of month, use day 28 or run it on the 1st of the next month. For business days only, use 1-5 in the weekday spot.
* 9 and 0 9Bookmark this section. Copy and paste the expression you need.
| # | Schedule | Cron Expression | Best For |
|---|---|---|---|
| 1 | Every morning at 9 AM | 0 9 * * * | Individuals, small business daily briefings |
| 2 | Every evening at 6 PM | 0 18 * * * | Small business evening recaps |
| 3 | Every Monday at 9 AM | 0 9 * * 1 | Medium business weekly reports |
| 4 | Every weekday at 8 AM | 0 8 * * 1-5 | Enterprise department daily checks |
| 5 | First of every month | 0 8 1 * * | Invoice reminders, monthly summaries |
| 6 | Every 15 minutes | */15 * * * * | Inventory monitoring, uptime checks |
| 7 | Mon/Wed/Fri at noon | 0 12 * * 1,3,5 | Social media posting schedules |
| 8 | Every quarter | 0 9 1 1,4,7,10 * | Enterprise quarterly reviews |
You now know how to schedule any automation to run at any time. Here is your action plan:
Your AI now has an alarm clock. It will show up to work every single day, right on time, without you lifting a finger.
Our recommendation: When connecting an AI model to OpenClaw, we recommend Claude by Anthropic. It follows instructions precisely, handles structured data well, and takes your privacy seriously. You're welcome to use any AI tool — ChatGPT, Gemini, Perplexity all work great. But if you want our honest pick, try Claude.
Join thousands of business owners who use CreatorHQ to work smarter, not harder.
Explore CreatorHQ