Skip to content
Notis

Stop Manually Logging Hours—Let Your Calendar Do It

Your calendar is your truth source. Every day, Notis syncs your meetings to a timesheet sheet, automatically calculating billable hours by client or project.

Trigger

Recurring schedule

Notis starts this workflow on a schedule, such as daily, weekly, or during business hours.

Action

Batch update spreadsheet

Updates a specified range in a google sheet with given values, or appends them as new rows if `first cell location` is omitted; ensure the target sheet exists and the spreadsheet contains at least one worksheet.

Why this helps

Freelancers and service providers waste time manually logging hours to timesheets, often forgetting or approximating. This error-prone process makes accurate billing and payroll frustrating.

  • Accurate timesheet populated automatically from your calendar
  • No more manual hour estimation or forgetful logging
  • Easier to bill correctly and get paid for all your time
  • Quick visibility into how you spend your day

Setup

Build it in a few focused steps.

  • 1Connect Google Calendar and Google Sheets to Notis
  • 2Tell Notis: 'Every day at 6 PM, sync today's calendar meetings to my timesheet sheet, logging duration, attendees/project, and marking billable time'
  • 3Set up your timesheet sheet with columns for date, meeting/project name, duration, client, and billable status
  • 4Choose your notification channel
  • 5Test by reviewing yesterday's meetings to see how they map to hours

Questions about this workflow

How does Notis know which meetings are billable?

You can tag billable meetings in your calendar invite title (e.g., 'Client XYZ Meeting') or tell Notis which calendars and attendees count as billable.

What about meetings that are partially billable or internal prep time?

You can customize categories—e.g., 'client meetings are 100% billable, internal meetings are 50%, personal time is 0%.' Notis will apply those rules automatically.

Can I edit the timesheet after it's generated?

Yes. Notis populates it, but it's your sheet, so you can edit, add notes, or adjust as needed.

Does this work with multiple calendars or different time zones?

Yes. You can specify which calendars to track and set your timezone so times are logged correctly.

When this happens · Trigger

Do this · Action

Supported Triggers and Actions

Notis builds workflows that link Google Calendar to Google Sheets. A trigger fires from one place; an action lands in another.

Google Calendar triggers

Google Sheets actions

Attendee Response Changed

Polling trigger that fires when any attendee's RSVP changes to accepted, declined, or tentative. Returns attendee info and current status.

TriggerPolling

Add Sheet to Spreadsheet

Adds a new sheet (worksheet) to a spreadsheet. use this tool to create a new tab within an existing google sheet, optionally specifying its title, index, size, and other properties.

ActionInstant

Event Canceled or Deleted

Triggers when a Google Calendar event is cancelled or deleted. Returns minimal data: event_id, summary (if available), and cancellation timestamp.

TriggerPolling

Aggregate Column Data

Searches for rows where a specific column matches a value and performs mathematical operations on data from another column.

ActionInstant

Event Starting Soon

Triggers when a calendar event is within a configured number of minutes from starting. Returns event details, time remaining, attendees, and join links when available.

TriggerPolling

Append Dimension

Tool to append new rows or columns to a sheet, increasing its size. use when you need to add empty rows or columns to an existing sheet.

ActionInstant

Calendar Event Changes

**SOON TO BE DEPRECATED** - Use Calendar Event Sync (polling trigger) instead. Real-time webhook trigger for calendar event changes. Returns event metadata only. For full event data, use Calendar Event Sync (polling trigger).

TriggerInstant

Batch get spreadsheet

Retrieves data from specified cell ranges in a google spreadsheet; ensure the spreadsheet has at least one worksheet and any explicitly referenced sheet names in ranges exist.

ActionInstant

Event Created

Polling trigger that fires when a new calendar event is created. Returns event ID, summary, start/end times, and organizer info.

TriggerPolling

Batch update spreadsheet

Updates a specified range in a google sheet with given values, or appends them as new rows if `first cell location` is omitted; ensure the target sheet exists and the spreadsheet contains at least one worksheet.

ActionInstant

Calendar Event Sync

Polling trigger that returns full event data including details, attendees, and metadata. For real-time notifications with basic info, use Calendar Event Changes (webhook).

TriggerPolling

Batch Update Values by Data Filter

Tool to update values in ranges matching data filters. use when you need to update specific data in a google sheet based on criteria rather than fixed cell ranges.

ActionInstant

Event Updated

Triggers when an existing Google Calendar event is modified. Returns the event ID, change type, and the specific fields that changed with their previous and new values.

TriggerPolling

Clear Basic Filter

Tool to clear the basic filter from a sheet. use when you need to remove an existing basic filter from a specific sheet within a google spreadsheet.

ActionInstant

Clear spreadsheet values

Clears cell content (preserving formatting and notes) from a specified a1 notation range in a google spreadsheet; the range must correspond to an existing sheet and cells.

ActionInstant

Connect any two apps with Notis in the middle.

Not just Google Calendar and Google Sheets. Any combination from 1,000+ integrations.

When this happens · Trigger

Do this · Action

Save your first hour today.

7 days free trial with 20$ free usage included.
No card. Works with personal or business Google Sheets.