Integrations
Calendars
Turn meetings into time entries, with a suggested project for each
Connect your calendar and the meetings you've had show up under Time → Meetings, each with a suggested project. One click logs a meeting as time.
Calendars are personal: every member connects their own on their profile, and only they see their meetings. Nothing needs setting up by an admin.
Your meetings also show on the Calendar page next to your deadlines, including the ones coming up in the next 30 days, and your next ones are on the dashboard's Upcoming card. To go the other way, and see your deadlines in your calendar app, use Subscribe in your calendar app.
Connect a calendar
You need your calendar's secret iCal (.ics) link — a private address that lets Consultainer read the calendar. Find it with the steps for your calendar app below, then:
Open Profile → Calendars
Click your name in the corner and choose Profile, then scroll to Calendars. (If you already have one connected, click Connect a calendar.)
Paste the link
Give it a Name (e.g. Work calendar) and paste the link into Secret iCal link.
https://andwebcal://links both work.Click Connect calendar
Consultainer checks that the link returns a calendar and pulls in your meetings from the last two weeks and the next 30 days.
Check it worked: you see Calendar connected — recent meetings are under Time → Meetings, and the calendar is listed with Synced (date) · every hour. You can connect up to five calendars.
Anyone with a secret link can read that calendar, so don't share it elsewhere. Consultainer stores it encrypted.
Google Calendar
Open your calendar's settings
On calendar.google.com, click the gear icon → Settings. Under Settings for my calendars on the left, click the calendar you want.
Copy the secret address
Scroll to Integrate calendar and copy Secret address in iCal format (click the eye icon to reveal it, or the copy icon).
If there's no secret address, your Google Workspace admin has turned off external calendar sharing; ask them to allow it.
Outlook / Microsoft 365
Open shared calendar settings
In Outlook on the web, click the gear icon → Calendar → Shared calendars.
Publish the calendar
Under Publish a calendar, choose the calendar and Can view all details, then click Publish.
Copy the ICS link
Copy the ICS link that appears (not the HTML one).
If Publish a calendar is missing, your Microsoft 365 admin has turned off calendar publishing.
Apple iCloud
Share the calendar publicly
In the Calendar app on a Mac, Control-click the calendar in the sidebar and choose Share Calendar, then tick Public Calendar. (On icloud.com/calendar, click the share icon next to the calendar and turn on Public Calendar.)
Copy the link
Copy the
webcal://link shown and paste it as is.
Fastmail
In Fastmail, open Settings → Calendars, open the calendar, and turn on sharing it as a read-only iCalendar (.ics) link. Copy that link.
Nextcloud
In the Nextcloud Calendar app, open the ⋯ menu next to the calendar and create a Share link. From the link's menu, choose Copy subscription link. Links that need a username and password aren't supported — use the share link.
If your Nextcloud is on a private network, see private addresses.
Sort your meetings
Open Time → Meetings. Meetings are grouped by day, each with its time, length, number of attendees and, when there is one, a suggested project and why (e.g. Attendees from acme.com (Acme)). For each meeting:
- Pick or keep the project and click Log — adds the meeting's length as a time entry on that project, dated the meeting's day and described with its title. Untick Billable first if it isn't billable.
- Click Ignore if it isn't project work.
- Tick Always for this series (shown as Same for this series (N) when several are waiting) before clicking Log or Ignore to sort every waiting occurrence of a recurring meeting the same way, and future ones automatically on each sync. Future ones are logged billable or not the way you set Billable when you ticked it, and dated the meeting's day in the event's own time zone (or UTC, if the calendar doesn't give one).
When two or more meetings have suggestions, Log all N suggested logs them all as billable in one go.
To stop sorting series automatically, click Forget them all on the Calendars card on your profile.
Over MCP: list_meetings, log_meeting, ignore_meeting.
Which meetings show up
Each sync reads your meetings from the last 14 days and the next 30 days, between 5 minutes and 10 hours long. Left out: all-day events, events marked free, cancelled meetings, and meetings you declined. Meeting rooms and resources don't count as attendees.
- Upcoming meetings (not over yet) show only on the Calendar page (marked Upcoming) and the dashboard's Upcoming card. They're not in Time → Meetings, and a remembered series isn't applied to them yet.
- Once a meeting has ended, the next hourly sync moves it to Time → Meetings with its suggested project, or sorts it by its remembered series.
- A meeting that's moved, cancelled or deleted in your calendar before you sort it disappears (a moved one comes back at its new time).
So a meeting that ended a few minutes ago can take up to an hour to reach Time → Meetings; click the calendar's refresh icon on your profile to sync it now.
Declines and "you" are recognized by the email address on your Consultainer account. If your calendar uses a different address, declined meetings still show up and you're counted as an attendee.
How the project is suggested
From the active projects you can see, in this order:
- If the meeting was booked through Cal.com or Calendly (same start time, and the person who booked it is an attendee): the default project set for its event type under Settings → Scheduling, or else a project of the client who booked. Billable starts ticked or not as the event type says, and the meeting shows who booked it.
- The project you logged earlier meetings of the same recurring series to.
- A client whose email domain matches an attendee — from the client's email, billing email, website and contacts (public domains like gmail.com, and your own team's domains, are ignored) — on the project you've logged to most recently for that client.
- A project or client named in the meeting title (names of four or more characters).
Draft clients (people who booked an intake call and aren't clients yet) are never suggested. A meeting whose Cal.com or Calendly booking was cancelled or moved is taken out of Time → Meetings (marked ignored).
When it syncs
Every calendar is synced right after you connect it, then once an hour by the scheduler. To sync one now, click its refresh icon on the Calendars card. When there are meetings waiting, you get a notification at most about once a day.
Removing a calendar (bin icon) deletes its unsorted meetings; time already logged stays.
Calendars on a private network
Consultainer fetches calendar links from your server, and only from public
addresses: localhost, private network ranges, link-local and cloud metadata
addresses, and .local / .internal host names are refused, including
through redirects or host names that resolve there. If your calendars are on
your own network (e.g. Nextcloud on your LAN), add this to .env and run
docker compose up -d:
ALLOW_PRIVATE_FETCH=trueThis lets every member's calendar link reach your private network, so only turn it on if you trust everyone who can sign in.
Troubleshooting
Errors show on the add form, or in red under the calendar's name after a sync.
- "That link didn't return a calendar. Use the calendar's secret iCal (.ics) address." — You pasted the calendar's web page or an embed link. Use the iCal/ICS link.
- "Use an https:// (or webcal://) link." / "That isn't a valid link." — Check you copied the whole link.
- "Links with a username or password aren't supported." — Use a share or publish link instead.
- "That address isn't reachable from here." — The link points to a private address. See private network.
- "The calendar server answered 404." (or 401, 403) — The secret link was reset or unpublished. Copy the new one, remove the calendar and add it again.
- "Couldn't reach the calendar (…).", "The calendar server took too long." — The calendar server is down or unreachable from your server. It's retried every hour.
- "The calendar is too large." — Over 10 MB. Use a smaller calendar.
- "You can connect up to 5 calendars." — Remove one first.
- No meetings appear — Time → Meetings only shows meetings that ended in the last two weeks; ones still to come are on the Calendar page. Check the meeting isn't all-day, marked free, or declined.
- A meeting that just ended isn't in Time → Meetings yet — It moves there at the next hourly sync. Click the calendar's refresh icon on your profile to sync now.