How to Automatically Copy Events Between Google Calendars
Google Calendar doesn’t have a built-in feature to automatically copy events from one calendar to another. But there are three reliable ways to do it with external tools.
Why You’d Want This
The most common use case: you have a work Google Calendar and a personal Google Calendar (or two separate Google accounts), and you want events from one to automatically appear on the other — without manually duplicating them.
Other scenarios:
- Showing a “busy” block on a shared team calendar whenever you add an event to your private calendar
- Mirroring a calendar for backup
- Keeping a project calendar in sync with your main calendar
Method 1: Zapier (No Code, Easiest)
Zapier connects Google Calendar accounts and copies events automatically.
Setup:
- Create a free Zapier account
- Create a new Zap: trigger = “New Event in Google Calendar” (source calendar)
- Action = “Create Detailed Event in Google Calendar” (destination calendar)
- Map the fields: title, start time, end time, description, location
- Turn on the Zap
Result: Every new event added to the source calendar gets copied to the destination within minutes.
Tradeoffs:
- Free plan has limited Zap runs (100/month) — enough for light use
- Updates and deletions don’t sync automatically (you need separate Zaps for each)
- Paid Zapier plan needed for full sync behavior
Method 2: Google Apps Script (Free, More Control)
Google Apps Script is Google’s built-in automation tool — free with any Google account, no extra service needed.
Setup:
- Go to script.google.com and create a new project
- Paste this script:
function copyEvents() {
var sourceCalId = 'your-source-calendar@gmail.com';
var destCalId = 'your-destination-calendar@group.calendar.google.com';
var now = new Date();
var future = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000); // 7 days ahead
var sourceCal = CalendarApp.getCalendarById(sourceCalId);
var destCal = CalendarApp.getCalendarById(destCalId);
var events = sourceCal.getEvents(now, future);
for (var i = 0; i < events.length; i++) {
var event = events[i];
// Check if already copied (using description tag)
if (event.getDescription().indexOf('[COPIED]') === -1) {
destCal.createEvent(
event.getTitle(),
event.getStartTime(),
event.getEndTime(),
{description: event.getDescription() + '\n[COPIED]', location: event.getLocation()}
);
event.setDescription(event.getDescription() + '\n[SYNCED]');
}
}
}
- Replace the calendar IDs with yours (find them in Google Calendar settings → Integrate calendar)
- Save the script
- Set up a trigger: clock icon → Add trigger →
copyEvents→ every hour (or every 15 minutes)
Result: The script runs on your chosen schedule and copies any new events from source to destination.
Tradeoffs:
- Free, no third-party service needed
- Requires basic comfort with code (copy-paste level)
- Doesn’t handle updates or deletions without additional logic
- Can create duplicates if not carefully managed
Method 3: CalendarBridge (Purpose-Built, Two-Way)
CalendarBridge is a dedicated tool for syncing calendars across accounts, including two-way sync and deletion propagation.
What it does:
- Copies events from one Google Calendar account to another
- Shows “Busy” blocks on the destination calendar (to protect privacy while showing availability)
- Syncs updates and deletions
- Works across Google ↔ Google, Google ↔ Outlook, and Outlook ↔ Outlook
Setup: Connect your accounts, choose which calendars to sync, configure what details to show (full event details or just “Busy”).
Tradeoffs:
- Paid service (free trial, then ~$4–8/month)
- Most reliable and full-featured option for true two-way sync
Which Method to Use
| Need | Best method |
|---|---|
| Simple one-way copy, free | Zapier (free tier) or Apps Script |
| Two-way sync with deletions | CalendarBridge |
| No third-party services | Apps Script |
| Work ↔ Personal Google accounts | CalendarBridge |
| Show “busy” without sharing details | CalendarBridge |
What Google Calendar Doesn’t Do Natively
Google Calendar has no built-in “copy events to another calendar automatically” feature. You can manually move an event to a different calendar (edit event → change the calendar dropdown), but that removes it from the original. Copying requires one of the methods above.
Related: How to manage multiple Google Calendars · How to sync Google Calendar with Outlook · How to get your Google Calendar ICS URL
Ready to automate your busywork?
Carly schedules, researches, and briefs you—so you can focus on what matters.
Get Carly Today →Or try our Free Group Scheduling Tool


