How to Schedule Cron Jobs in Firebase Cloud Functions (Without Paid Plans)
Firebase Cloud Functions are powerful, but scheduling background tasks can be tricky without a Blaze plan. Luckily, you can run cron jobs for free by combining Firebase with GitHub Actions or third-party schedulers. This article explains how to build a serverless function in Firebase and trigger it on a schedule without spending a dime. Step 1: Create a Firebase Function Inside your Firebase project, add a function in functions/index.js (or functions/src/index.ts if using TypeScript): const functions = require("firebase-functions"); exports.scheduledTask = functions.https.onRequest((req, res) => { console.log("Scheduled function triggered"); res.send("Function executed"); }); Step 2: Deploy Your Function Make sure Firebase CLI is installed and authenticated: firebase deploy --only functions Once deployed, note the public HTTPS URL of the function. It will look something like: https://[region]-[project-id].cloudfunctions.net/scheduledTask Step 3: Schedule With GitHub Actions Create a GitHub Actions workflow to run the task periodically: # .github/workflows/firebase-cron.yml name: Firebase Scheduled Trigger on: schedule: - cron: '0 9 * * *' # every day at 9am UTC jobs: run-cron: runs-on: ubuntu-latest steps: - name: Trigger Firebase function run: curl https://[region]-[project-id].cloudfunctions.net/scheduledTask Bonus: Use External Cron Services Tools like cron-job.org, Upstash Scheduler, or EasyCron offer free cron job scheduling. Point their HTTP request to your Firebase function URL at the desired interval. Pros and Cons ✅ Pros Totally free with Firebase's Spark plan No need for paid scheduling services Flexible triggers using GitHub or third-party tools ⚠️ Cons No native cron support without Blaze plan Delay possible depending on trigger service
Firebase Cloud Functions are powerful, but scheduling background tasks can be tricky without a Blaze plan. Luckily, you can run cron jobs for free by combining Firebase with GitHub Actions or third-party schedulers. This article explains how to build a serverless function in Firebase and trigger it on a schedule without spending a dime.
Step 1: Create a Firebase Function
Inside your Firebase project, add a function in functions/index.js
(or functions/src/index.ts
if using TypeScript):
const functions = require("firebase-functions");
exports.scheduledTask = functions.https.onRequest((req, res) => {
console.log("Scheduled function triggered");
res.send("Function executed");
});
Step 2: Deploy Your Function
Make sure Firebase CLI is installed and authenticated:
firebase deploy --only functions
Once deployed, note the public HTTPS URL of the function. It will look something like:
https://[region]-[project-id].cloudfunctions.net/scheduledTask
Step 3: Schedule With GitHub Actions
Create a GitHub Actions workflow to run the task periodically:
# .github/workflows/firebase-cron.yml
name: Firebase Scheduled Trigger
on:
schedule:
- cron: '0 9 * * *' # every day at 9am UTC
jobs:
run-cron:
runs-on: ubuntu-latest
steps:
- name: Trigger Firebase function
run: curl https://[region]-[project-id].cloudfunctions.net/scheduledTask
Bonus: Use External Cron Services
Tools like cron-job.org, Upstash Scheduler, or EasyCron offer free cron job scheduling. Point their HTTP request to your Firebase function URL at the desired interval.
Pros and Cons
✅ Pros
- Totally free with Firebase's Spark plan
- No need for paid scheduling services
- Flexible triggers using GitHub or third-party tools
⚠️ Cons
- No native cron support without Blaze plan
- Delay possible depending on trigger service