Two Google Calendars side by side with events automatically duplicating from one to the other via an arrow

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

Method 4: Calendar Sync (Free, Rule-Based Mirror)

Calendar Sync automatically copies events from one calendar to another with a rule layer you set once, and keeps the destination current as events are added, edited, and deleted. Per event you can keep the title or rewrite it (“Busy,” or a template like [Personal] {title}), strip attendees, blank the description or location, and set the copy as Busy/Free/Tentative — applied conditionally (by visibility, attendee count, day, duration, organizer, and more). It’s a one-way mirror — the source is never changed — and it’s free, no signup to try it.

Best for: Auto-copying events between calendars with full control over what carries over — without paying for a sync subscription.


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 details, freeCalendar Sync

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.

See what people say

"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.

Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.

On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."

Gus Ibrahim, Founder & Director, IHR