10 Blog

How to Label Synced Calendar Events by Source

Sync several calendars into one and every private event becomes an identical 'Busy' block. Title templates let you label synced events by source, with a rule you write.

Updated By Andrei Reinus

Identical Busy blocks on the left, the same blocks labelled by source like ‘[Job 1] Busy’ on the right

When you sync more than one calendar into a single view, you usually turn on Mark as Private so other people don’t see your meeting titles. The side effect is that every synced event collapses to the same word: “Busy.” Three jobs, two clients, one personal calendar, and your week is a stack of identical grey blocks. You can see you’re booked at 2 PM. You can’t see which calendar booked you.

Title templates fix that. A title template is a short rule you write once per sync, like [Job 1] {{original_title}}, and Hetk applies it to every event flowing in that direction. With Mark as Private on, that event arrives as [Job 1] Busy instead of plain Busy. The prefix you wrote stays visible; the part that came from the event title still gets hidden. You keep your privacy and get your labels back.

What is a title template?

A title template is a text pattern, set per sync direction, that decides what the synced event is called on the target calendar. You type literal text and drop in variables wrapped in double braces. Hetk substitutes the variables and copies the literal text through unchanged.

Leave the template blank and nothing changes: the original title syncs as-is (or becomes “Busy” if Mark as Private is on, same as before). Fill it in and you control the format. The field accepts up to 500 characters, which is far more than any title needs, so the limit is really there to stop runaway input.

Two things worth saying up front. Templates are per direction, so a two-way sync can label events differently on each side. And the substitution is literal text replacement, not a model interpreting your event. More on that below, because it matters.

The two variables you can use

There are two variables today, and they behave differently when privacy is on:

VariableRenders asWith Mark as Private on
{{original_title}}The event’s title from the source calendarBecomes Busy
{{source_calendar_name}}The name of the source calendar (e.g. “Acme Corp”)Still shows the calendar name

Anything outside the braces is literal text and always shows: brackets, colons, spaces, the word “Hold,” whatever you type. If you mistype a variable, say {{orignal_title}}, Hetk leaves it on the page verbatim rather than guessing. That’s deliberate. A visible typo is easier to spot and fix than a silently dropped one.

The split between the two variables is the whole trick. {{original_title}} carries event content, so privacy masks it. {{source_calendar_name}} is metadata about the sync, not about the meeting, so it survives. That lets you label by source without leaking anything about the meeting itself.

How templates work with Mark as Private

Hetk applies privacy first, then the template. So when Mark as Private strips an event’s title to “Busy,” the template runs on top of that result. {{original_title}} has already become “Busy” by the time your prefix gets added.

Walk through it with a template of {{source_calendar_name}}: {{original_title}} on a source calendar named “Acme Corp”:

Source calendarTemplateMark as PrivateResult on the target calendar
Acme Corp{{source_calendar_name}}: {{original_title}}OnAcme Corp: Busy
Acme Corp{{source_calendar_name}}: {{original_title}}OffAcme Corp: Q3 review
Personal[Personal] {{original_title}}On[Personal] Busy
(any)(blank)OnBusy
(any)(blank)Off(original title, unchanged)

The pattern to notice: with privacy on, the only part that changes between rows is the part you wrote. The meeting title never appears. Your colleague viewing the shared calendar sees “Acme Corp: Busy” and learns that you’re booked for a client, not what the meeting is.

A worked example: three jobs, one calendar

The clearest case is someone running more than one job or several clients at once, feeding each work calendar into one personal calendar they actually live in. Without labels, that personal calendar is a wall of “Busy.” With templates, each sync carries its own tag.

Set up one one-way sync per source, each with Mark as Private on and its own template:

  • Job 1 calendar → personal, template [Day job] {{original_title}} → events arrive as [Day job] Busy
  • Job 2 calendar → personal, template [Contract] {{original_title}} → events arrive as [Contract] Busy
  • A client calendar → personal, template {{source_calendar_name}}: {{original_title}} → events arrive as Acme Corp: Busy, named automatically from the calendar

Now your personal calendar shows three kinds of busy at a glance, and none of them exposes a meeting title, an attendee, or a location. If you also share that personal calendar with someone, they see the same harmless labels. The detail stayed on the source calendars where it started.

This is the same problem the keep work and personal calendars separate guide solves for two calendars, extended to as many as you’re juggling. Consultants hit it constantly, which is why the calendar sync for consultants page leads with “no details about which client you’re working with.”

Why this isn’t AI renaming your events

A title template is literal substitution. Hetk finds the variables, swaps in the values, and copies everything else through character for character. The output is fully predictable: same template plus same event always produces the same title. There is no model reading your meeting, no inference about what it’s “really” about, no rewording.

That’s a deliberate line, and it’s the same one we drew everywhere else in the product. Hetk has no AI features in the sync path. Your calendar data goes from one provider to another and isn’t sent to any model for interpretation. A title template fits that rule because it’s a rule: you wrote it, you can read it, and it does exactly what it says. The point of the feature is to give you control over the format, not to hand the naming to a system you can’t predict.

How to set it up

You can add a title template when you first create a sync, or on a sync you already have.

  1. In the sync wizard, after you pick the direction and privacy settings, find the Title Template field for that direction.
  2. Type your template. Use the variable chips to insert {{original_title}} or {{source_calendar_name}} without typing the braces by hand.
  3. For a two-way sync, set a template for each direction independently, or leave one blank.
  4. Save. New and changed events pick up the template on the next sync.

To change a template on an existing sync, open the sync from your dashboard, edit it, and update the field. Clearing the field removes the template and reverts to the plain title (or “Busy,” if Mark as Private is on).

One thing carries over from how privacy works: a template change applies going forward, not retroactively. Events that already synced keep their old titles until they next change on the source side, or until you edit them to trigger a resync. If you want everything relabelled immediately, a small edit on each source event nudges it through.

Tips and limits

One template per direction. A two-way sync has two fields. They don’t have to match, and one can be blank while the other isn’t.

Literal text is safe to lean on. Brackets, plain symbols, and words all pass through. If you want every synced event to read “External: {{original_title}},” that’s a valid template.

{{source_calendar_name}} saves you from hardcoding. If you rename the source calendar later, the label follows automatically, because the variable reads the current name at sync time.

Typos stay visible. An unknown variable renders as-is, so check the result on a test event before trusting it across a busy calendar.

Frequently asked questions

Will the template expose my meeting titles?

Only if you want it to. With Mark as Private on, {{original_title}} renders as “Busy,” so a template like [Job 1] {{original_title}} produces “[Job 1] Busy” with no meeting detail. With privacy off, {{original_title}} shows the real title. The template controls the format; Mark as Private controls whether the content shows.

Can I label events differently in each direction?

Yes. Title templates are set per sync direction. A two-way sync between two calendars has a separate template field for each side, and you can fill one, both, or neither.

Does the label update if I rename the source calendar?

Yes, if you use {{source_calendar_name}}. That variable reads the source calendar’s current name each time an event syncs, so renaming the calendar updates future labels without touching the template.

Is this an AI feature?

No. A title template is literal text substitution: Hetk swaps the variables for their values and copies the rest unchanged. The result is deterministic, and no AI model reads or rewrites your events. See why Hetk has no AI for where that line sits across the product.

Running more than one calendar and tired of a wall of identical “Busy”? Start a 21-day trial and label your syncs in a couple of minutes. No credit card needed.