Back up GitHub repositories to Amazon S3 and send email reports
Ready for 3.0Ready for 3.0. This template uses no nodes that n8n 3.0 removes. No removed nodes, versions or helpers found. Static check, last run 2026-10-19.
What this workflow does
This workflow has 15 nodes and runs on a schedule (cron 0 2 * * *). Along the way it connects AWS S3.
How it runs
Trigger: On a schedule (cron 0 2 * * *).
- Set Backup Parameters (Edit Fields (Set)): sets 6 fields: github_owner, s3_bucket, s3_prefix…
- Validate Backup Settings (Code): runs custom JavaScript code
- Fetch GitHub Account Info (HTTP Request): calls an HTTP API
- List GitHub Repos (HTTP Request): calls an HTTP API
- Process Each Repository (Loop Over Items (Split in Batches)): loops over the items in batches
- List S3 Backups (AWS S3): get many
- Download Repo Archive (HTTP Request): calls an HTTP API
- Filter Expired Backups (Code): runs custom JavaScript code
- Upload Archive to S (AWS S3): upload
- Log Repository Backup Status (Code): runs custom JavaScript code
…plus 4 more steps. See the full node list below.
Services it uses
Before you upgrade to n8n 3.0
Nothing in this workflow is removed in n8n 3.0, so it should import and run after the upgrade.
Nodes used (8)
- Schedule Trigger
n8n-nodes-base.scheduleTrigger - Edit Fields (Set)
n8n-nodes-base.set - Code
n8n-nodes-base.code - HTTP Request
n8n-nodes-base.httpRequest - Loop Over Items (Split in Batches)
n8n-nodes-base.splitInBatches - AWS S3
n8n-nodes-base.awsS3 - If
n8n-nodes-base.if - Send Email
n8n-nodes-base.emailSend
From the author
Quick overview This workflow runs nightly to back up GitHub repositories by downloading each repo as a tarball and uploading it to Amazon S3, then deletes older archives based on a retention window and emails a run report via SMTP. How it works 1. Runs every…