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

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 four reliable ways to do it with external tools — the fastest is a free, no-code mirror you set up once.


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: Calendar Sync (Free, No Code, Rule-Based)

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, so the source is never changed.

Setup: Pick a source calendar and a destination, choose what carries over, and turn it on. Updates and deletions propagate automatically.

Tradeoffs:

  • Free, no signup required to try it
  • No code and no per-Zap juggling for updates or deletions
  • One-way mirror by design (not two-way sync)

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


Method 2: Zapier (No Code, Per-Event Zaps)

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 3: 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 4: CalendarBridge (Paid, 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 option if you specifically need true two-way sync

Which Method to Use

NeedBest method
Auto-copy events, free, no codeCalendar Sync
Control what carries over (title, attendees, “Busy”)Calendar Sync
Show “busy” without sharing details, freeCalendar Sync
Simple one-way copy without rulesZapier (free tier) or Apps Script
No third-party services at allApps Script
True two-way sync with deletions both directionsCalendarBridge (paid)

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