You’re already juggling crew schedules, supplier calls, estimates, and customer follow-ups before 8 AM. The last thing you need is another app to babysit.
That’s the whole point of automation. You set it up once, and it runs without you. OpenClaw has two built-in systems — heartbeat and cron jobs — that let your AI agent handle recurring tasks on a schedule. Morning briefings, weather checks for outdoor crews, quote follow-ups, end-of-day summaries — all running in the background while you’re on the jobsite.
This guide walks through both systems, when to use which, and gives you copy-paste commands to set up the most useful automations for a contracting business. If you haven’t installed OpenClaw yet, start with our OpenClaw setup guide and come back here.
The Two Automation Systems
OpenClaw gives you two ways to automate contractor tasks: heartbeat and cron jobs. They solve different problems, and most contractors will use both.
Heartbeat: Your Agent’s Recurring Checklist
Think of heartbeat like a foreman doing walkthroughs. Every 30 minutes (or whatever interval you set), your agent wakes up, reads a checklist file called HEARTBEAT.md, handles whatever needs attention, and goes back to sleep.
Heartbeat is best when you want to batch multiple checks together in one pass. Instead of running five separate scheduled tasks, you put all five on the checklist and the agent knocks them out in a single cycle. One API call, multiple checks done.
Cron Jobs: Precise Scheduling
Cron jobs run at exact times you specify. “Every weekday at 6 AM.” “Every Friday at 4 PM.” “48 hours from right now.” They’re borrowed from the same scheduling system that’s run servers for decades — proven, reliable, precise.
Cron jobs are best when timing matters. Your morning briefing needs to land before the crew arrives, not whenever the next heartbeat cycle happens to fire.
When to Use Which
| Situation | Use Heartbeat | Use Cron |
|---|---|---|
| Check email for new leads | ✅ | |
| Morning briefing at 6 AM sharp | ✅ | |
| Monitor unread customer messages | ✅ | |
| End-of-day summary at 5 PM | ✅ | |
| Weather check before outdoor work | ✅ | |
| Follow up on a quote in 48 hours | ✅ | |
| Scan for warranty callbacks | ✅ | |
| Weekly P&L review on Mondays | ✅ |
The rule of thumb: if it needs to happen at a specific time, use a cron job. If it just needs to happen regularly throughout the day, put it on the heartbeat checklist.
Setting Up Heartbeat
Heartbeat runs on two pieces: a configuration in openclaw.json and a checklist in HEARTBEAT.md.
Step 1: Configure the Heartbeat Interval
Open your openclaw.json file and add the heartbeat settings:
{
"heartbeat": {
"every": "30m",
"activeHours": {
"start": "06:00",
"end": "21:00"
}
}
}
This tells OpenClaw to run the heartbeat every 30 minutes, but only between 6 AM and 9 PM. No reason to burn API calls at 3 AM when nobody’s working.
You can adjust the interval to fit your operation. Running a 24/7 emergency service? Extend those hours. Only need checks a few times a day? Set it to "every": "2h".
Step 2: Write Your HEARTBEAT.md
Create a file called HEARTBEAT.md in your OpenClaw workspace. This is the checklist your agent reads every cycle. Here’s a solid starting point for a general contractor:
# Heartbeat Checklist
## Lead Management
- Check email for new lead inquiries. If found, log the lead details and auto-respond with our standard availability message.
## Schedule
- Review today's job schedule. Flag any conflicts or gaps.
## Weather
- Check weather forecast for the next 12 hours at our active jobsites. If rain or extreme heat is expected, flag it.
## Financials
- Check for unpaid invoices over 30 days. List any that need follow-up.
## Customer Service
- Scan for unread customer messages. Summarize anything that needs a response today.
## Warranty
- Check for new warranty callback requests. Log any that came in since last check.
Keep this file focused. Every item on the checklist costs tokens (and therefore money) to process. Don’t put 30 items on here — stick to the 5-8 things that genuinely need regular monitoring.
Customizing for Your Trade
An HVAC contractor’s heartbeat looks different from a GC’s. Here are trade-specific items you might add:
HVAC contractors:
- Check for emergency service requests (no-heat calls in winter get priority)
- Monitor equipment order tracking for pending installs
- Review maintenance agreement renewals coming due this month
Plumbers:
- Scan for after-hours emergency call logs
- Check parts availability for scheduled jobs this week
- Review permit application statuses
Electricians:
- Check inspection scheduling portal for updates
- Monitor material price alerts (copper fluctuations)
- Review open permit status for active jobs
Roofers:
- Extended weather forecasting (3-5 day outlook for scheduling)
- Monitor storm damage lead sources after severe weather events
- Check supplier delivery windows for material drops
Setting Up Cron Jobs
Cron jobs are where the real scheduling power is. You add them through the command line, and they run like clockwork.
The Basics: Adding a Cron Job
Here’s the general format:
openclaw cron add \
--name "Job name" \
--cron "minute hour day month weekday" \
--tz "America/Los_Angeles" \
--message "What you want the agent to do" \
--session isolated
The --cron part uses standard cron syntax. If you’ve never used it, here’s the cheat sheet:
┌───────── minute (0-59)
│ ┌─────── hour (0-23)
│ │ ┌───── day of month (1-31)
│ │ │ ┌─── month (1-12)
│ │ │ │ ┌─ day of week (0=Sun, 1=Mon...6=Sat)
│ │ │ │ │
* * * * *
Some examples:
"0 6 * * *"— 6:00 AM every day"0 6 * * 1-5"— 6:00 AM weekdays only"0 17 * * 1-5"— 5:00 PM weekdays"0 8 * * 1"— 8:00 AM every Monday"0 16 * * 5"— 4:00 PM every Friday
Main Session vs. Isolated Session
When you create a cron job, you choose where it runs:
Main session (--session main): The job runs in your agent’s main conversation. It has access to everything the agent has been discussing — recent messages, context from earlier in the day. Good for tasks that build on ongoing work.
Isolated session (--session isolated): The job runs in a fresh, clean environment. No prior context. This is better for standalone tasks where you want consistent, predictable output every time. It also lets you use a different AI model for the job.
For most contractor automations, isolated sessions work better. Your morning briefing doesn’t need to know what you chatted about yesterday. It just needs to pull weather, check the schedule, and summarize.
One-Shot vs. Recurring
Most cron jobs are recurring — they fire on a schedule. But sometimes you need a one-shot: a task that runs once at a specific time, then disappears.
# One-shot: remind me in 48 hours
openclaw cron add \
--name "Follow up on Smith quote" \
--at "48h" \
--message "Follow up with John Smith on the kitchen remodel quote we sent. Reference quote #2847, $34,500. Ask if he has questions." \
--session isolated \
--announce \
--channel whatsapp \
--to "+15551234567"
The --at "48h" flag tells OpenClaw this is a one-time job, not recurring. Perfect for quote follow-ups, reminder pings, and deadline alerts.
The Cron Jobs Every Contractor Should Set Up
Here are the most valuable automations for a contracting business, with commands you can copy, modify, and paste.
1. Morning Briefing (6 AM, Weekdays)
This is the single most useful automation you can set up. Before your feet hit the floor, you’ve got a summary of everything that matters today.
openclaw cron add \
--name "Morning briefing" \
--cron "0 6 * * 1-5" \
--tz "America/Los_Angeles" \
--session isolated \
--message "Generate today's briefing: current weather and forecast for our jobsite areas, crew schedule for today, any open estimates that need follow-up, expected material deliveries, and any urgent customer messages that came in overnight." \
--announce \
--channel whatsapp \
--to "+15551234567"
The --announce flag sends the output to your phone via WhatsApp. You read it over coffee, and you’re prepped for the day without opening a laptop.
2. End-of-Day Summary (5 PM, Weekdays)
Close out each day with a summary of what happened and what’s on deck for tomorrow.
openclaw cron add \
--name "End of day summary" \
--cron "0 17 * * 1-5" \
--tz "America/Los_Angeles" \
--session isolated \
--message "Generate end-of-day summary: jobs completed or in progress today, any issues reported, outstanding items needing attention, and preview of tomorrow's schedule. Flag anything that needs my personal attention tonight." \
--announce \
--channel whatsapp \
--to "+15551234567"
3. Weather-Based Crew Alert (5 AM, Daily)
For roofing, painting, concrete, landscaping — any trade where weather kills your schedule — this one’s critical. It fires an hour before the morning briefing so you have time to adjust.
openclaw cron add \
--name "Weather crew alert" \
--cron "0 5 * * 1-6" \
--tz "America/Los_Angeles" \
--session isolated \
--message "Check weather for today at all active outdoor jobsites. If rain, high wind (>20mph), or extreme heat (>100F) is expected, generate a crew alert with: which jobsites are affected, recommended plan B (move to indoor tasks, reschedule, early start), and draft text message to send crew leads." \
--announce \
--channel whatsapp \
--to "+15551234567"
This is the kind of automation that pays for itself the first time it catches a rain day before your crew drives 45 minutes to a jobsite.
4. Quote Follow-Up Reminders
Most contractors send a quote and then… forget to follow up. Or they follow up too late. This fixes that. After you send any estimate, fire a one-shot reminder:
openclaw cron add \
--name "Follow up: Johnson bathroom remodel" \
--at "48h" \
--message "Follow up with Mike Johnson on the bathroom remodel quote #3021 ($18,700). Draft a friendly follow-up message asking if he has any questions. If he hasn't responded, set another reminder for 1 week from now." \
--session isolated \
--announce \
--channel whatsapp \
--to "+15551234567"
If you’re using OpenClaw to write your estimates, you can even build this into your quoting workflow — every time you generate a quote, automatically schedule the follow-up.
5. Weekly Invoice Reminder (Fridays)
Friday afternoon is the perfect time to chase unpaid invoices, because people are wrapping up their week and processing payments.
openclaw cron add \
--name "Weekly invoice check" \
--cron "0 14 * * 5" \
--tz "America/Los_Angeles" \
--session isolated \
--message "Review all outstanding invoices. Generate a list sorted by days overdue. For invoices 30+ days overdue, draft polite but firm follow-up emails. For invoices 60+ days, flag for my personal review with recommended next steps." \
--announce \
--channel whatsapp \
--to "+15551234567"
6. Weekly P&L Review (Monday Morning)
Start each week knowing where your money went and where it’s coming from.
openclaw cron add \
--name "Weekly P&L review" \
--cron "0 8 * * 1" \
--tz "America/Los_Angeles" \
--session isolated \
--model "opus" \
--message "Generate weekly financial summary: total revenue collected last week, outstanding receivables, major expenses, job profitability by project, cash flow outlook for this week. Flag any jobs running over budget or behind schedule." \
--announce \
--channel whatsapp \
--to "+15551234567"
Notice the --model "opus" flag. For financial analysis, you want the smarter model doing the thinking. For routine weather checks and schedule summaries, the default model handles it fine.
Real-World Workflow: Putting It All Together
Here’s what a fully automated contractor day looks like with OpenClaw running in the background:
5:00 AM — Weather cron fires. Checks forecast for your three active jobsites. Rain expected after 2 PM at the exterior paint job on Oak Street. Agent drafts a crew text: “Start Oak St. at 6:30 instead of 8. Rain coming at 2. Let’s get the second coat done by noon.”
6:00 AM — Morning briefing lands on your phone. Today’s schedule, two estimates needing follow-up (sent Monday, no response yet), a material delivery expected at the Henderson job between 10-12, and one overnight customer message asking about a warranty repair.
Throughout the day — Heartbeat runs every 30 minutes. At 9:30 AM, it catches a new lead email from a homeowner wanting a deck quote. Agent logs the lead and sends your standard response: “Thanks for reaching out. We’d love to take a look at your deck project. Are you available for a site visit this Thursday or Friday?”
5:00 PM — End-of-day summary arrives. Henderson job is on track, Oak Street got the second coat done before the rain, and the new deck lead responded — they’re available Friday at 10 AM. Agent flags that the Martinez invoice is now 35 days overdue.
Friday 2:00 PM — Weekly invoice reminder fires. Three invoices outstanding, one at 35 days. Agent drafts follow-up emails for each.
Monday 8:00 AM — Weekly P&L review. Last week: $47K collected, $12K in outstanding receivables, Henderson job running 8% over budget due to the change order. Cash flow is solid for next week with two progress payments expected.
That’s why contractors need their own AI agent — not a chatbot you have to manually prompt, but an agent that works autonomously on a schedule.
Testing and Monitoring
Don’t just set these up and hope they work. Test them.
Test a Cron Job Manually
openclaw cron run <jobId>
This fires the job immediately, regardless of its schedule. Use it to verify the output looks right before relying on it.
Check Job History
openclaw cron runs --id <jobId>
Shows you when the job ran, whether it succeeded, and what it produced. If a job is failing silently, this is where you’ll catch it.
List All Scheduled Jobs
openclaw cron list
Review your full automation setup. Over time, you’ll accumulate jobs — this helps you see what’s running and prune anything you don’t need anymore.
Managing Costs
Every heartbeat cycle and every cron job run is an API call. That costs money. Here’s how to keep it reasonable.
Heartbeat Costs
At 30-minute intervals during a 15-hour active window (6 AM to 9 PM), you’re looking at roughly 30 heartbeat cycles per day. Each cycle processes your HEARTBEAT.md checklist in a single API call. A focused checklist with 5-6 items costs roughly the same as a single ChatGPT conversation — a few cents per cycle.
If that adds up too fast, stretch the interval to 45 minutes or an hour. For most contractors, checking every hour is plenty.
Cron Job Costs
Each cron job run is one API call. If you have five recurring jobs running daily, that’s five calls per day — minimal.
The --model flag matters here. Using Opus for a simple weather check is overkill. Save the expensive model for tasks that need deeper analysis, like your weekly P&L review. Use the default model (Sonnet) for routine summaries and notifications.
The Batching Principle
This is the biggest cost-saving move: batch related checks into your heartbeat instead of creating separate cron jobs for each one.
❌ Expensive approach: Five separate cron jobs checking email, weather, calendar, messages, and invoices at different times throughout the day.
✅ Efficient approach: One heartbeat checklist that covers all five items every 30-60 minutes. One API call handles everything.
Reserve cron jobs for tasks that need exact timing or isolation — the morning briefing, end-of-day summary, and weekly reports. Let heartbeat handle the regular monitoring.
Limitations to Know About
Automation isn’t magic. Here’s what OpenClaw’s scheduling can and can’t do:
What it handles well:
- Summarizing and organizing information
- Drafting messages and follow-ups for your review
- Weather monitoring and schedule flagging
- Combining data from multiple sources into briefings
- Routine reminders and check-ins
What it can’t do (yet):
- Directly send emails or texts without your approval (unless you configure it to)
- Access proprietary software like Buildertrend or Procore unless integrations exist
- Make judgment calls on complex situations (it’ll flag them for you instead)
- Replace your actual bookkeeper or estimator — it assists, it doesn’t replace
Where it occasionally stumbles:
- Time zone math on edge cases (always set
--tzexplicitly) - Overly long heartbeat checklists can produce sloppy results — keep it focused
- If your internet or the server goes down, scheduled jobs miss their window
For a deeper look at what OpenClaw can do beyond scheduling, check out our OpenClaw review or see how OpenClaw compares to ChatGPT for contractor use cases.
Quick-Start Checklist
Here’s the minimum viable automation setup for any contracting business. Get these running first, then add more as you see what’s useful.
1. Configure heartbeat in openclaw.json:
{
"heartbeat": {
"every": "30m",
"activeHours": { "start": "06:00", "end": "21:00" }
}
}
2. Create your HEARTBEAT.md with 5-6 monitoring items relevant to your trade.
3. Add the morning briefing cron:
openclaw cron add \
--name "Morning briefing" \
--cron "0 6 * * 1-5" \
--tz "America/Los_Angeles" \
--session isolated \
--message "Generate today's briefing: weather, crew schedule, open estimates, material deliveries, urgent messages." \
--announce --channel whatsapp --to "+15551234567"
4. Add the end-of-day summary cron:
openclaw cron add \
--name "EOD summary" \
--cron "0 17 * * 1-5" \
--tz "America/Los_Angeles" \
--session isolated \
--message "End-of-day summary: completed work, issues, outstanding items, tomorrow preview." \
--announce --channel whatsapp --to "+15551234567"
5. Test both jobs:
openclaw cron list
openclaw cron run <morning-briefing-id>
openclaw cron run <eod-summary-id>
6. Verify the output looks right, then let it run.
That’s it. Two cron jobs and a heartbeat checklist, and you’ve automated the core daily workflow that most contractors handle manually. From here, add quote follow-ups, invoice reminders, and weekly reviews as you get comfortable with the system.
If you’re also using OpenClaw for handling customer messages, the heartbeat becomes even more powerful — your agent monitors incoming messages and responds according to rules you set, all within the same automation cycle.
What’s Next
Scheduling is just one piece of what OpenClaw does for contractors. Once your automations are running, you’ll want to explore:
- Writing estimates and proposals with AI assistance
- Handling customer communication through your agent
- Understanding why an AI agent beats a chatbot for contractor workflows
The goal isn’t to automate everything — it’s to automate the repeatable stuff so you can focus on the work that actually needs you on the jobsite, making decisions and building relationships. OpenClaw’s scheduling handles the rest.