Skip to main content

Redact Event Titles

What it does: Replaces every event title with "Busy" before syncing, hiding the real event name from the target calendar.

Use case: Share your availability with a scheduling tool or colleague without exposing meeting names or topics.

function gate(event: GateEvent): GateResult {
return { pass: true, transform: { title: 'Busy' } };
}
Title-only redaction still leaks details

Replacing the title alone does not anonymize an event — the synced event still carries the original description and location. For privacy-sensitive sync, clear those fields too (and optionally set visibility: 'private') — see "Fully redact an event" below.

How It Works

The transform field on the GateResult allows you to replace event properties before they are written to the target calendar. Setting transform.title replaces the event's title while keeping the time and duration intact. The original event in your source calendar is not affected.

Customization

Redact only personal events, pass others through unchanged:

function gate(event: GateEvent): GateResult {
if (event.matches('personal') || event.matches('private')) {
return { pass: true, transform: { title: 'Busy' } };
}
return { pass: true };
}

Use a different replacement text:

function gate(event: GateEvent): GateResult {
return { pass: true, transform: { title: 'Reserved' } };
}

Fully redact an event (recommended for privacy-sensitive sync):

Clears the title, notes, and location so the target calendar only keeps the time slot.

function gate(event: GateEvent): GateResult {
return {
pass: true,
transform: {
title: 'Busy',
description: '',
location: '',
},
};
}

You can also add visibility: 'private' to mark the synced event as private on calendars that support it.

What this still exposes

Start time, end time, and duration cannot be transformed by gate functions. If the timing itself is sensitive, block the event instead.