Last December, base44 finally shipped Automations. So if you are reading this thinking the platform has "no scheduler", that is no longer technically true. What is true: base44 Automations cost 1 integration credit per run, gate behind the Builder plan ($40/mo), have a 5-minute minimum cadence, and stop entirely when you run out of credits. A 5-minute cron eats 8,640 credits a month. On the Builder plan's 10,000 monthly cap, that is ~86% of your budget gone on bookkeeping, before any user-facing action runs.
Here is the pattern that schedules whatever cadence you want, against your existing public function URL, without burning the credits you bought for end-user actions. It is a sibling of the credit-burn pattern on Bubble and the missing-scheduler patterns on Lovable and Bolt.new, with base44-specific math.
base44 actually has a scheduler now. So why this post?
If your last look at base44 was before the post-Wix-acquisition wave of features, you missed the launch.
Automations launched December 31, 2025
base44 shipped Automations on the last day of 2025. From the chat panel, you describe an automation in plain English, base44 wires up a backend function and a trigger, and you get one of three trigger types: a schedule, a CRM/entity event, or a connector webhook (Gmail, Calendar, Slack). The schedule trigger is what concerns this post.
The catch you do not see in the launch post
The schedule trigger is real, but it ships with four constraints that matter the moment you do the math:
- 1 integration credit per run. Every fire of a scheduled automation deducts one credit from your monthly allowance, regardless of what the automation actually does inside.
- Plan-gated to Builder ($40/mo) and up. Free and Starter plans cannot run Automations at all. The Billing and plans page is the source of truth here.
- 5-minute minimum cadence. Anything below 5 minutes is not selectable in the UI.
- Backend dies when credits run out. This is the kicker. base44 does not bill overage; it stops your backend. Your scheduled automations stop with it. There are open complaint threads from teams who learned this the hard way.
If your shape is "one nightly cleanup at 03:00 UTC", you can stop reading. The native Automations work fine for that. If your shape is "every 5 minutes" or "every 2 minutes" or "more than one cron, please", the math gets ugly fast.
What base44 Automations actually cost (with math)
Three numbers, then four worked totals.
5-minute cron at the minimum cadence
A 5-minute cadence fires 12 times per hour, 24 hours a day, 30 days a month:
12 runs/hour × 24 hours × 30 days = 8,640 runs/monthAt 1 integration credit per run, that is 8,640 credits per month for one schedule, before the automation does any actual work.
Builder plan ($40/mo, 10,000 monthly credits)
8,640 of 10,000 credits is 86.4% of the plan, gone on the schedule alone. You have 1,360 credits left for everything else the app does (CRM updates, AI calls, Stripe events, the user actions you actually built the app for). If you have a second 5-minute schedule, you are over the cap on day 17.
Pro plan ($80/mo, 20,000 monthly credits)
Same 8,640 credits, ~43% of the plan. Better, still painful. Two 5-minute schedules and you have ~14% of the plan left for everything else.
Elite plan ($160/mo, 50,000 monthly credits)
Same 8,640 credits, ~17% of the plan. Comfortable for one 5-minute cron. Five of them is half the plan.
What happens when credits hit zero
base44's billing model is hard-cap, not overage. When your monthly credits run out, the backend goes offline. Functions return errors. Automations stop. End-user actions stop. The fix is to top up credits, which restarts the backend. If you wired the schedule to a payment-failed reminder, the reminder stops at the worst possible moment.
External cron behaves differently. The schedule keeps firing. If your function returns 5xx because base44 is offline, Crontap reports the failure and alerts you (email, Slack, Discord, Telegram, webhook). Same outcome (the work does not happen) but you get told about it the second it starts, not the next morning.
The 60-second fix
The pattern is the same one Lovable users use, the same one Bolt.new users use, with base44-specific URL shape: expose a public backend function, lock it down with a shared secret, point external cron at it.
Step 1: ask the chat to expose a backend function
In the base44 chat, say something like:
"Create a backend function called
nightly-syncthat pulls yesterday's Stripe payments and writes them to theTransactionentity. Add anX-CRON-TOKENheader check against an env var calledCRON_SECRET, and return 401 if the token is missing or wrong."
base44 scaffolds the function, adds the secret check, and surfaces the public URL in the function's metadata panel.
Step 2: copy the public function URL
It looks like:
https://<your-app>.base44.app/functions/nightly-syncCustom domains follow the same shape. Note that this URL is publicly callable by default; the X-CRON-TOKEN check from Step 1 is what keeps random visitors from invoking your nightly job.
Step 3: set the shared secret in base44
In Project Settings, under Secrets, add CRON_SECRET and paste a long random string. Generate one locally if you need a starting point:
openssl rand -base64 32Save. Redeploy if base44 prompts you.
Step 4: create the schedule in Crontap
Head to Crontap and click New schedule.
- URL. Paste the function URL from Step 2.
- Method.
POST. - Headers. Add
X-CRON-TOKEN: <the same secret you saved in Step 3>. - Cadence. Type plain English ("every 2 minutes", "every Monday at 9am") or paste a cron expression. Crontap previews the next 5 fires inline so you can sanity-check before saving. Minute cadence is the floor on Crontap Pro; base44 Automations cannot go below 5 minutes at all.
- Timezone. Pick the IANA zone that matches the schedule's intent (
Europe/Berlin,America/Los_Angeles,Asia/Singapore). Crontap is per-schedule; no DST math.
Step 5: press "Perform test" and verify
Click Perform test. Crontap fires a real POST once. You should see:
- A 200 in Crontap's run history.
- A run entry in base44's function logs for
nightly-sync. - Zero credits deducted for the schedule itself (the function body's actions still bill normally if it touches the database or calls an integration).
If you see 401, your X-CRON-TOKEN header does not match the CRON_SECRET env var. If you see 5xx, the function body itself failed and you can debug from base44's logs. Add a failure alert in Crontap so the next 4xx or 5xx pings you immediately.
Schedule your base44 functions without burning credits. Free forever tier. Three schedules. No credit card. Schedule your first job →
When base44 Automations are the right call
External cron is a shape, not a religion. base44's native Automations are the right answer for:
- A single automation that runs once a day. 30 runs a month is 30 credits. Negligible against any plan. Use the native dropdown, save the click.
- Entity-event triggers (on row create or update). This is not a cron substitution; it is a different feature. Native event triggers are the cleanest expression of "fire this when a Lead row is created". External cron cannot replace this, and external cron should not try to.
- Connector webhook triggers (Gmail, Calendar, Slack). Same shape. base44 receives the webhook from the connector and runs the function. There is no clock involved. No external scheduler can sit in that path usefully.
- Anything where you want everything in one base44 dashboard. If your team's mental model is "open base44, find the schedule", and your cadence is daily-or-rarer, the native UI wins on locality.
For everything else (sub-5-minute cadence, more than one schedule on a small plan, multi-environment parity, per-IANA timezone, cross-platform dashboard for a team that runs base44 plus Lovable plus a Vercel app), external cron reads cleaner and bills cheaper.
Real things teams schedule on base44 apps
The four shapes we see most often, with cadence and the credit cost on each path.
Hourly Stripe subscription sync
Pull active subscriptions, reconcile against the local Subscription entity, flag mismatches. Cadence: hourly. Native cost: 720 credits/month. External cron cost: 0 credits for the schedule, the function body bills normally for the Stripe integration call.
Daily Slack digest at 09:00 local
Aggregate yesterday's signups, send a Slack message via the Slack connector. Cadence: daily, per timezone. Native cost: 30 credits/month per timezone. External cron cost: 0 for the schedule, one schedule per IANA zone with no DST math.
Every-2-minute polling for a real-time dashboard
A live KPI dashboard polls a vendor API every 2 minutes for fresh numbers. Cadence: every 2 minutes. Native cost: not possible (5-minute floor). External cron cost: 0 for the schedule, the function body bills normally per call. Crontap Pro covers minute cadence flat.
Weekly aggregation report into Sheets
Every Monday at 06:00 local, push last week's numbers to a shared Google Sheet via the Sheets connector. Cadence: weekly. Native cost: ~4 credits/month. Use the native dropdown for this one; do not over-engineer it.
The pattern: short cadence and tight credit budgets push you toward external cron. Daily-or-rarer with comfortable credit headroom keeps you on Automations.
FAQ
Does my base44 free or Starter plan get Automations?
No. Automations gate behind the Builder plan ($40/mo) and up. External cron does not care about your base44 plan; it just needs a publicly reachable function URL, which Free and Starter both expose.
Does external cron count against my integration credits?
No. base44 charges credits for work it does (function executions, AI calls, integration calls), not for inbound HTTP requests it receives. Crontap's POST hits your function URL, base44 runs the function, base44 bills the function's actions. The schedule itself is 0 credits. The 1-credit-per-run charge is specific to the native Automations trigger system.
What happens to scheduled jobs when my credits run out?
Native Automations stop entirely (the backend goes offline). External cron keeps firing; the function returns 5xx until you top up. You get failure alerts from Crontap (email, Slack, Discord, Telegram, webhook) the moment it starts, instead of finding out the next morning.
How do I lock down a public function URL?
Two reasonable shapes. The walkthrough above uses a shared-secret header (X-CRON-TOKEN against an env var); the function returns 401 on a missing or wrong token. The other shape is a bearer token in Authorization: Bearer <token>, validated the same way. Both work; pick whichever your team is used to. Do not skip the check.
Can I run two cadences against the same function (test vs prod)?
Yes. Two Crontap schedules pointed at the same URL, different secrets if you want per-environment auth, different timezones if you want per-region intent. base44 logs the runs separately because the request bodies differ.
Will this still work if base44 changes its Automations pricing?
Yes. The pattern (public function URL + external cron + shared secret) is independent of the Automations product. If base44 makes Automations cheaper next quarter, you can switch back. Until then, the math is the math.
Schedule your base44 functions without burning credits. Free forever tier. Three schedules. No credit card. Schedule your first job →
References
- base44 Automations docs (non-technical)
- base44 backend functions and automations (developer)
- base44 billing and plans
- base44 changelog: scheduled tasks launch
Related on Crontap
- How to add scheduled tasks to your AI-built app (Lovable, Bolt, Replit, v0, base44, Tempo, Create.xyz). The pillar that covers every AI app builder side by side.
- How to schedule tasks in Lovable apps (the missing scheduler). The cousin pattern on a platform that does not ship a scheduler at all.
- How to schedule tasks in Bolt.new apps (the missing scheduler). The cousin pattern on Bolt.new, with the same public-URL + shared-secret shape.
- Bubble Scheduled Workflows vs external cron. The same credit-burn / unit-burn cost pattern on a different low-code platform.
