Skip to main content

Set Events as Free

What it does: Transforms every synced event's free/busy status to "free", so the events appear in the target calendar but do not block your availability.

Use case: When syncing a read-only reference calendar (e.g. a holiday or team calendar) into your primary calendar, you want to see the events without them appearing as busy time.

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

How It Works

The transform.showAs field on the GateResult overrides the event's showAs property in the target calendar. Setting it to "free" means scheduling tools will not treat those time slots as unavailable. The original event in your source calendar is not modified.

Customization

Set events as free only outside business hours (block availability during work hours):

function gate(event: GateEvent): GateResult {
if (!event.isWeekday || event.hour < 9 || event.hour >= 17) {
return { pass: true, transform: { showAs: 'free' } };
}
return { pass: true };
}

Set all-day events as free but keep meetings as busy:

function gate(event: GateEvent): GateResult {
if (event.isAllDay) {
return { pass: true, transform: { showAs: 'free' } };
}
return { pass: true };
}

Combine with title redaction for a fully private reference calendar:

function gate(event: GateEvent): GateResult {
return {
pass: true,
transform: {
showAs: 'free',
title: 'Synced Event'
}
};
}