# Turn your Google Calendar meetings into Clockify time entries

> 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.

- Workflow type: agent
- Services: Clockify, Google Calendar, Slack Bot
- Categories: Operations, Personal Productivity
- Published: 2026-08-14

## What it does

- Reads today's calendar at the end of each weekday and compares it against the time you already tracked, so nothing is logged twice.
- Creates time entries for the meetings that actually happened, using their real start and end times and the meeting title as the description.
- Chooses the right project or client by looking at who attended and what the meeting was called.
- Sends you a Slack message with the hours it logged, where they went, and any meeting it could not confidently match.

## What you'll need

- A Google Calendar account holding the meetings you want tracked
- A Clockify account with your projects and clients already set up
- Slack, so the end of day summary can reach you as a direct message

## Prompt

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.

## How to customize

- Change when it runs. Weekdays at 6pm catches the full day, but you can move it later or run it the next morning instead.
- Set the shortest meeting worth logging. It ignores anything under 15 minutes by default, so quick catch-ups do not clutter your timesheet.
- Decide whether the meetings it logs should count as billable by default.

## FAQ

### Will it log time I already tracked myself?

No. Before creating anything it compares each meeting against the entries already on your timesheet for that day, and skips any meeting that overlaps something you tracked by hand. When in doubt it leaves the entry out rather than risk billing a client twice for the same hour.

### What happens to meetings it cannot match to a project?

It never guesses and never dumps them into a default project. Any meeting it cannot confidently place is left unlogged and listed at the bottom of your Slack summary with the time and who attended, so you can assign it yourself in a few seconds.

### Does it log meetings I declined, or my focus time?

No. Declined invites, all-day events, focus and hold blocks, out of office entries and personal appointments are all skipped. Only meetings that actually happened are turned into tracked time.

### How does it know which project a meeting belongs to?

It looks at the email domains of the people who attended and matches them against your client and project names, then uses keywords in the meeting title as a second signal. That is why it helps to have your clients and projects already set up.

### Can I run it at a different time of day?

Yes. Weekday evenings are the default because the whole day is finished by then, but you can move it to any schedule that suits you, including first thing the next morning to catch up on the day before.

Use this prompt in General Input: https://www.generalinput.com/prompts/turn-your-google-calendar-meetings-into-clockify-time-entries