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' } };
}
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.
Start time, end time, and duration cannot be transformed by gate functions. If the timing itself is sensitive, block the event instead.
Related Recipes
- Block Personal Events -- Completely remove personal events instead of redacting them
- Prefix Event Titles -- Add a prefix to event titles rather than replacing them