Skip to main content
Use this guide to place Harmonia’s content schedule in a dedicated calendar in the signed-in operator’s Google Calendar account.
Harmonia uses Google’s calendar.app.created scope. It can manage only the secondary calendar it creates—not the operator’s unrelated calendars or events.

What gets synchronized

Scheduled time, platform labels, post text, and private Harmonia item references.

What stays manual

Every Add, Update, and Remove operation requires an explicit click by the signed-in operator.

Before you begin

You need:
  • a Google Cloud project with the Google Calendar API enabled;
  • an OAuth 2.0 Web application client;
  • GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET configured on the Harmonia web service; and
  • an authorized redirect URI for every Harmonia origin:
The OAuth consent screen must allow the single scope Harmonia requests:
This scope lets Harmonia create and manage its own secondary calendar. It does not grant access to unrelated calendars or events.

Connect Google Calendar

1

Open connected accounts

Go to Dashboard → Settings and find Google Calendar.
2

Start scoped OAuth

Select Connect with OAuth 2.0. Harmonia sends the browser to Google; tokens never pass through client-side application state.
3

Review consent

Approve the app-created-calendar permission. If the consent screen asks for access to all calendars, stop—the configured scope is wrong.
4

Return to Harmonia

Confirm that Google Calendar is shown as connected for the current workspace.
Harmonia creates Harmonia Content Calendar on the first approved item sync, not during OAuth. A durable provisioning claim prevents concurrent first-sync requests from creating multiple calendars.

Add a scheduled item

1

Schedule a draft

Give the content item a future time in Harmonia’s content calendar.
2

Review the projection

Open the item and check its post text, platforms, and scheduled time.
3

Approve the external mutation

In Google Calendar, select Add to Google Calendar.
4

Confirm verification

Wait for a verified timestamp and an Open verified event link. A green connection badge alone is not proof that an event exists.
The click is the approval for this external calendar mutation. The background worker and internal service token cannot call the mutation route. Harmonia creates a transparent 30-minute event at the content item’s scheduled time. It records success only after reading the event back from Google and matching its identity, time, text, platforms, and private Harmonia references.

Update a synchronized item

Editing the post text, platforms, schedule, or status does not silently alter Google Calendar. Harmonia marks the item update required.
1

Open the stale item

The item shows update required after its text, platforms, schedule, or status changes.
2

Review and approve

Check the new projection, then select Update Google Calendar.
3

Confirm the new verification

Verify that the timestamp advances and the Google event link remains available.
If the item changes while the Google request is running, Harmonia retains update required instead of claiming the older projection is current.

Remove an event

1

Open a synchronized item

Confirm that you are removing the correct external event; the Harmonia content item will remain.
2

Approve removal

Select Remove from Google Calendar.
3

Confirm verified absence

Wait for Harmonia to report removed. Harmonia verifies Google returns 404 or 410 before storing that state.
Removal deletes only the Google event. It does not cancel or delete the Harmonia content item. Repeating removal is an idempotent no-op whose absence is verified again.

Recover from a failure

Reconnect under Settings. Reauthorization preserves the existing Harmonia calendar identity and keeps the prior refresh token when Google omits a new one.
The Harmonia item changed after its last verified sync. Review the projection and select Update Google Calendar.
Retry from the item drawer. Harmonia preserves the previous verified event link, ETag, source revision, and timestamp while showing the failure.
Inspect Google Calendar before reconnecting. Harmonia locks provisioning because a lost response might still have created the calendar; automatically retrying could create a duplicate.
Confirm that the app-created calendar is gone before reconnecting. Harmonia does not silently replace a missing calendar.
Disconnecting removes Harmonia’s stored credentials. It does not delete the user-owned secondary calendar or any events already in it.

Disconnect

Select Disconnect under Settings to remove Harmonia’s workspace-scoped credentials. Disconnecting does not delete the user-owned secondary calendar or its events. For endpoint, state, retry, and verification details, see Google Calendar sync reference.
Last modified on August 25, 2026