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.

Agentic Task
ClockifyGoogle CalendarSlack BotOperationsPersonal ProductivityData SyncMeeting Workflows
PromptCreate

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.

What does this prompt do?

  • 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 do I need to use this?

  • 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

How can I customize it?

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

FAQs

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.

Related templates

Plan a field sales day around drive time and neglected accounts

Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.

Geolocation
HubSpot
Google Calendar
App
Share of voice dashboard for your brand and competitors

See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.

GDELT
Notion
Slack Bot
App
Approval war room for every social post awaiting sign-off

One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.

Hootsuite
Slack Bot
App
Turn champion job changes into new pipeline in Attio

Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.

Boomerang
Attio
Slack Bot
Agentic Task
Collect social post requests and schedule them in Hootsuite

Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.

Hootsuite
Slack Bot
General Input Database
App
Voice agent QA review board for your Hume EVI calls

Open one board each morning, see which voice calls went badly, replay the exact moment the caller got frustrated, and file the fix.

Hume
Linear
Slack Bot
App

Stop losing billable hours you forgot to log.

Let this run at the end of each weekday and your timesheet fills itself in, leaving only the genuinely unclear meetings for you to place.