Turn your Google Calendar meetings into Clockify time entries

By General Input

Every weekday at 6pm, we check today's meetings against what you already tracked and log the missing ones to the right project in Clockify.

Integrations

  • Clockify
  • Google Calendar
  • Slack Bot

Type

Agentic Task

Categories

  • Operations
  • Personal Productivity

Every weekday at 6pm, reconcile today's meetings against the time I already tracked in Clockify, and log the billable hours I forgot. Use a cron trigger for this, not a poll trigger. I do not want a live timer that starts when a meeting begins, because meetings run long, get cancelled, or overlap something I am already tracking. This is an end of day catch up pass, and deciding what is already covered versus genuinely missing is judgement work.

Start in Clockify with Get currently logged-in user's info to resolve my user id and my active workspace id. Everything else in Clockify is scoped to that workspace, so establish it before making any other Clockify call.

Then gather the three inputs. From Google Calendar, use List Events on my primary calendar for today only, expanding recurring events into individual instances and ordering by start time so I get real instances rather than a recurrence rule. From Clockify, use Get all projects on a workspace to load my projects along with their client names. Also from Clockify, use Get time entries for a user on a workspace for my user id, filtered to today, to see what I already tracked by hand.

Decide which events count as real, tracked work. Skip any event where my own response status is declined. Skip all-day events, which appear with a date instead of a specific start and end time. Skip focus blocks, out of office and working location entries, which the calendar marks with a distinct event type, and skip anything whose title looks like a self-directed hold rather than a meeting, for example titles containing focus, hold, block, busy, lunch, commute, or a personal appointment such as a dentist or school run. Skip events shorter than the minimum meeting length, which should default to 15 minutes. If an event has no other attendees and reads like a personal reminder, leave it out.

Never double log time. Before creating anything, compare each surviving meeting against the time entries I already tracked today. If an existing entry overlaps the meeting's time window at all, treat that meeting as already covered and skip it, even when the description does not match. I would rather miss one entry than end up billing a client twice for the same hour. Overlap on the clock is the test, not description similarity.

For every meeting that is left, pick the best matching project. Use the attendee email domains as the strongest signal, matching the external domain against my client names and project names, and use keywords in the meeting title as a secondary signal. If a meeting clearly belongs to a client but no confident project match exists, do not guess and do not fall back to a default project. Leave it unlogged and report it instead.

Create each confidently matched entry with Add a new time entry in Clockify, using the event's real start and end times as the entry's start and end, the event title as the description, and the matched project. Timestamps are ISO-8601 in UTC, so convert the calendar times correctly rather than passing local times through. Set whether these entries are billable by default according to my preference, defaulting to billable.

Finish by sending me a Slack direct message. Look up my Slack user by my email address, open a direct message conversation with me, and use Send a Message to deliver the summary. Tell me the total hours logged, list each meeting alongside the project it went to, and then list separately any meeting the workflow could not confidently match, with the time and the attendees, so I can assign those myself. If there was nothing to log because everything was already tracked, say so in one short line rather than sending an empty report.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seats