Prefix Event Titles
What it does: Prepends a text prefix (e.g. [Synced]) to every event title before writing it to the target calendar.
Use case: When merging multiple calendars into one view, prefixes help you quickly identify which calendar each event came from.
In the visual builder, set Title to Set to... and type {title} with your label — e.g. [Synced] {title} or {title} (Work). No code editor switch needed.
For more control (conditionals, time-of-day prefixes), use a gate function:
function rule(event: RuleEvent): RuleResult {
return { pass: true, transform: { title: `[Synced] ${event.title}` } };
}
How It Works
The transform.title field on the RuleResult lets you rewrite the event's title. In the visual builder, {title} stands in for the original; in code, concatenate with event.title so the result still contains the real meeting name alongside the prefix.
Customization
Use a different prefix:
function rule(event: RuleEvent): RuleResult {
return { pass: true, transform: { title: `[Work] ${event.title}` } };
}
Add an emoji prefix:
function rule(event: RuleEvent): RuleResult {
return { pass: true, transform: { title: `🗓 ${event.title}` } };
}
Conditionally prefix only recurring events:
function rule(event: RuleEvent): RuleResult {
if (event.recurringEventId) {
return { pass: true, transform: { title: `[Recurring] ${event.title}` } };
}
return { pass: true };
}
Prefix based on time of day:
function rule(event: RuleEvent): RuleResult {
const prefix = event.hour < 12 ? '[AM]' : '[PM]';
return { pass: true, transform: { title: `${prefix} ${event.title}` } };
}
hour is evaluated in UTC — see the property reference for how to shift the boundary to your timezone.
Related Recipes
- Redact Event Titles -- Replace titles entirely instead of adding a prefix