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 rule(event: RuleEvent): RuleResult {
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 RuleResult 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 rule(event: RuleEvent): RuleResult {
if (event.matches('personal') || event.matches('private')) {
return { pass: true, transform: { title: 'Busy' } };
}
return { pass: true };
}

Use a different replacement text:

function rule(event: RuleEvent): RuleResult {
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 rule(event: RuleEvent): RuleResult {
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 a rule. If the timing itself is sensitive, block the event instead.