How to Automatically Copy Events Between Google Calendars

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:

  1. Create a free Zapier account
  2. Create a new Zap: trigger = “New Event in Google Calendar” (source calendar)
  3. Action = “Create Detailed Event in Google Calendar” (destination calendar)
  4. Map the fields: title, start time, end time, description, location
  5. 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:

  1. Go to script.google.com and create a new project
  2. 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]');
    }
  }
}
  1. Replace the calendar IDs with yours (find them in Google Calendar settings → Integrate calendar)
  2. Save the script
  3. 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

NeedBest method
Simple one-way copy, freeZapier (free tier) or Apps Script
Two-way sync with deletionsCalendarBridge
No third-party servicesApps Script
Work ↔ Personal Google accountsCalendarBridge
Show “busy” without sharing detailsCalendarBridge

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