HourLane help
Short answer: Open a spreadsheet in Google Sheets™ and choose Extensions → HourLane → Open HourLane. Tick the calendars you work from, pick the period and press Refresh. Every event becomes a row in the Timesheet tab with its hours and client, and the Summary tab adds them up per client and month. HourLane only reads your calendar; it never changes it. HourLane is not on Google Workspace Marketplace yet. To hear when it is, write to info@bilingoplus.com or use the support page.
1. Install and open HourLane
- Install HourLane from Google Workspace Marketplace (the listing goes live at launch).
- Google shows the permissions HourLane needs. If they come with checkboxes, tick every one. If one is left unticked, HourLane cannot open or refresh. Why each one is needed is under Permissions.
- Open a spreadsheet and choose Extensions → HourLane → Open HourLane. The HourLane panel opens on the right.
The first time, the panel shows three steps: Tick the calendars you work from, Choose the period, Press Refresh. Your main calendar is ticked for you.
Once it is set up, you can also refresh without opening the panel: Extensions → HourLane → Refresh the timesheet.
2. Calendars
Under Calendars, the panel lists every calendar in your Google Calendar™ list that you can at least see the event details of: your own, calendars shared with you and team calendars. Your main calendar is marked (main). Tick as many as you like. The Calendar column of the timesheet says which one each entry came from.
A calendar where you can only see free/busy times is not listed, because its events have no titles to read.
3. Period
Choose This week, Last week, This month, Last month, Last 30 days or Custom dates. Weeks run Monday to Sunday. Under the list, the panel shows the exact dates, for example 2026-11-01 – 2026-11-30. Custom dates can cover up to a year.
The period decides which part of the timesheet a refresh rewrites. Rows outside it are left alone (see what a refresh keeps).
4. Which events count
Open Which events count under the period:
- Skip all-day events: on by default, so holidays and reminders do not become 24-hour entries. Untick it to count them; they are written without a start and end time.
- Skip events you declined: on by default. Untick it to count them too.
- Only events containing (optional): for example
clientorcall. Only events with that word in the title or the description are counted. Capitals do not matter.
Cancelled events and events with no length are always skipped. A recurring event gives one row per occurrence, each with its own date. After a refresh, the panel says how many events were skipped and why, for example skipped 3 all-day, 1 declined.
Times are written in the time zone of your main calendar, the same times your calendar shows. Dates are written as 2026-11-16 and times as 09:00.
5. Rounding
Round each entry sets how each event’s length becomes hours: Exact minutes, or 6 min, 10 min, 15 min, 30 min or 1 hour, either to the nearest step or always up. Each entry is rounded on its own, before anything is added up.
| Event length | Exact | 15 min, to the nearest | 15 min, always up | 6 min, always up |
|---|---|---|---|---|
| 52 minutes | 0.87 h | 0.75 h | 1.00 h | 0.90 h |
| 1 hour 5 minutes | 1.08 h | 1.00 h | 1.25 h | 1.10 h |
| 20 minutes | 0.33 h | 0.25 h | 0.50 h | 0.40 h |
An event that rounds to zero, such as a 5-minute event rounded to the nearest 15 minutes, is skipped.
6. Clients: tags and rules
Each entry gets a client in this order:
- Your rules, from the top of the list down. The first rule that matches wins.
- A tag in the event title, if Read [Client] and #client in titles is ticked (it is by default).
- The default client: Events with no client go to, or Unassigned if you leave it empty.
Tags in the title
[Acme] Design review: a name in square brackets at the very start of the title. The client is Acme and the Event column says Design review.Design review #acme: a #tag anywhere in the title. The first letter becomes a capital, so#acmeis Acme, and the tag is taken out of the Event column.- If the Rates tab already has the client with another spelling, the tag takes that spelling: with ACME Ltd in Rates,
[acme ltd]is written as ACME Ltd. A #tag is one word, so use square brackets for names with spaces.
Rules
Press + Add a rule, choose what to look at, type what to look for and the client. Capitals and extra spaces do not matter.
| When | Example | Matches |
|---|---|---|
| Title contains | retainer → Northwind | Every event with “retainer” anywhere in its title |
| Calendar is | Client projects → Lumen Labs | Every event in the calendar with that name, as it appears in your list, or with that calendar ID |
| Guest email domain is | acme.com → Acme | Every event with a guest, other than you, whose email ends in @acme.com |
| Event colour number is | 11 → Acme | Every event you gave that colour in Google Calendar |
Event colour numbers are Google Calendar’s own: 1 Lavender, 2 Sage, 3 Grape, 4 Flamingo, 5 Banana, 6 Tangerine, 7 Peacock, 8 Graphite, 9 Blueberry, 10 Basil, 11 Tomato. An event left in its calendar’s default colour has no number, so a colour rule does not match it; use a Calendar is rule instead.
Because rules come first, a rule wins over a tag: with the rule Guest email domain is acme.com → Acme, an event titled [Lumen] Intro call with a guest from acme.com goes to Acme. Move the more specific rules up, or remove the one that catches too much.
7. The Timesheet tab, and what a refresh keeps
The Timesheet tab has one row per event: Date, Start, End, Hours, Client, Event, Calendar, Billable, Notes, Amount, Attendees, Location and Link (which opens the event in Google Calendar), plus one hidden column, HourLane key, that HourLane uses to recognise each event. Leave the hidden column as it is.
A refresh is a running log:
- Rows outside the period stay exactly as they are. Refresh This month all month, and last month is still there in December.
- Rows inside the period are replaced from the calendar: a moved meeting gets its new time, an event you deleted from the calendar drops out, a new one appears.
- Your edits are kept: Billable set to
No, your Notes, a Client you changed by hand and Hours you corrected by hand. The Date, Start, End, Event and the other columns come from the calendar again. - Rows you type yourself, with nothing in the hidden key column, are left in place. Write the date the way HourLane does, such as
2026-11-16, and fill in Hours and Event, and the Summary counts them too.
Rows are sorted by date and start time on every refresh. Put your own calculations in another tab: HourLane rewrites the rows in order, so a column you add to the right of the timesheet would no longer line up with them.
8. The Summary tab
Every refresh rebuilds the Summary tab from the whole Timesheet, your edits included: one line per client per month, newest month first, with Month, Client, Hours, Billable hours, Amount, Currency and Entries. Amount and Currency are filled in with Pro. HourLane rewrites the Summary tab each time, so keep your own notes elsewhere.
9. Rates and amounts (Pro)
Under Billing & statements, press Create the Rates tab. HourLane adds a Rates tab with the clients found in the timesheet so far, and four columns: Client, Hourly rate, Currency (USD to start with) and Email for statements. Type a rate next to each client, then press Refresh.
- The Amount column of the Timesheet is a spreadsheet formula: hours × the client’s hourly rate. Change a rate and the amounts follow at once.
- Amount stays blank when the entry’s Billable is
No, or when the client is not in the Rates tab. A client with an empty rate gets0.00. - The Summary’s amounts are worked out at each refresh, so press Refresh after changing a rate.
- Add a client by typing a new row in Rates. The client name must match the timesheet’s; capitals do not matter.
10. Statements (Pro)
A statement is a summary of the billable hours for one client in one month, with amounts if the client has a rate. It is not a tax invoice: attach it to your own invoice, or send it as it is. Choose the month and the client under Statement for, then:
- Create statement tab: a tab such as Statement Acme 2026-11 with the dates, the work (the event, and your note if there is one), the hours, the amounts, the total and the rate. Making it again replaces it. A tab is for one client at a time.
- Email it to me: an email to your own address with the subject
Statement for Acme — November 2026: 4 h, USD 480.00, a table of dates, work, hours and amounts, and the same lines as a CSV file, such asstatement-Acme-2026-11.csv. Choose All clients to get one email per client with billable entries that month.
Only entries with Billable Yes are on a statement, and Unassigned entries are left out of All clients. Statements are made from the rows in the Timesheet tab. If last month’s events changed after your last refresh, choose Last month and press Refresh first.
To a client: type the client’s address in the Email for statements column of the Rates tab and tick Also email each client under Automatic. The statement then goes from your own Google account to that address, with replies going to you. From the panel, Email it to me goes to you only, so you can check it and forward it yourself.
11. Automatic refresh and monthly statements (Pro)
- Refresh the timesheet every morning: HourLane refreshes the timesheet once a day, early in the morning, for the period you chose, while you are away.
- On the 1st, email me last month’s statements: early in the month (it runs on days 1–3, once per month), HourLane emails you one statement per client for last month.
- Also email each client (address from the Rates tab): the same statements also go to each client that has an address in the Rates tab.
Tick what you want and press Save. The panel then says On. Runs early every morning. If the Pro subscription ends, the automatic runs stop by themselves and the panel says Automatic refresh stopped because the HourLane Pro subscription ended.
12. A spreadsheet with several editors
- The setup lives in the spreadsheet: the ticked calendars, the period, the rules, rounding and the automatic options are shared by everyone who opens HourLane in it.
- Each person reads their own calendars when they press Refresh. A ticked calendar that the person refreshing cannot see is reported as no longer available. When an editor saves the setup, only calendars in their own list stay ticked.
- Automatic refresh runs from the one account that switched it on, and reads that account’s calendars. Other editors see Runs for this spreadsheet under …, and no one else can switch it on while it runs: they get Automatic refresh for this spreadsheet already runs under … Ask them to switch it off first.
- Pro follows the person who refreshes. When an editor without Pro presses Refresh, the Amount column and the Summary’s amounts stay empty until someone with Pro refreshes again.
13. Google’s daily email limit
Google limits how many people one account can email in a day through scripts and add-ons: 100 recipients a day for a personal @gmail.com account and 1,500 a day for a Google Workspace™ account. Each statement uses one, plus one more when it also goes to the client. HourLane checks what is left before each email. If the limit is used up, it stops and says Google’s daily email limit for your account is used up. Try again tomorrow. If the limit stops the monthly run on the 1st, the statements not yet sent are not tried again: make them from the panel the next day.
14. Free and Pro
- Free: manual refresh as often as you like, from the panel or the Extensions menu; every calendar you can see; rules, tags and rounding; the Timesheet and Summary tabs. No plan limit on events. One refresh reads up to 6,000 events; for more, choose a shorter period.
- Pro: $4.99 a month or $39 a year, for the Rates tab and amounts, statements, the morning refresh and the monthly statements by email.
Checkout opens when HourLane launches on Google Workspace Marketplace. Pro is bought from the panel (Get Pro), with Paddle as our Merchant of Record. The checkout is filled in with your Google account email, and after you pay, Pro switches on by itself in the open panel, usually within a minute. Paid with a different email? Open Already paid? Activate, enter the email you used at checkout and press Activate Pro. One subscription is for one Google account.
Cancel any time from the link in your Paddle receipt, or by emailing info@bilingoplus.com. Pro then runs to the end of the period you paid for. Every charge has a 14-day refund (see refunds). Your Timesheet, Summary, Rates and statement tabs stay in the spreadsheet either way.
15. Disconnect, erase
- Disconnect this spreadsheet, at the bottom of the panel: stops automatic refresh and forgets HourLane’s setup in this spreadsheet. The Timesheet tab and your calendar are not touched.
- Erase my data: removes what HourLane stores for your account, including the Pro status and checkout email, and stops automatic refresh from your account. Your spreadsheets and your calendar are not touched.
16. Permissions
When you install HourLane, Google may list each permission with a checkbox. Tick all of them. If one is left unticked, HourLane lists what is missing at the top of its panel (HourLane is missing some permissions), with Give the missing permissions: tick every box on Google’s screen, then close the panel and open HourLane again.
| Permission | In plain English | Why HourLane needs it |
|---|---|---|
spreadsheets.currentonly | See and manage only the spreadsheet you use it in | To write the Timesheet, Summary, Rates and statement tabs. It cannot see your other spreadsheets |
calendar.calendarlist.readonly | See the list of your calendars | So you can tick which ones to read |
calendar.events.readonly | View events in your calendars | To read the events of the ticked calendars for the chosen period. Read-only: it cannot change your calendar |
script.container.ui | Show its own panel in Google Sheets | The HourLane panel and menu |
script.scriptapp | Run when you are not present | The morning refresh and the monthly statements (Pro) |
script.send_mail | Send email as you | To send statement emails (Pro). It cannot read your mailbox |
script.external_request | Connect to an external service | To reach the Google Calendar API and to check a Pro licence with Paddle |
userinfo.email | See your email address | To match your Pro licence and to know where to send your statements |
None of these is a “restricted” Google permission, and none lets HourLane change your calendar or read your Gmail™, your Drive or your other spreadsheets.
17. Troubleshooting
| What you see | Why | What to do |
|---|---|---|
| No rows, or fewer than you expected | The events are in a calendar that is not ticked, or outside the period. All-day events and events you declined are skipped by default, and Only events containing may be filtering them out | Check the ticked calendars and the dates under the period, and the skipped counts after a refresh. Untick Skip all-day events or Skip events you declined if you want them |
| The wrong client | The tag is spelled differently, or a rule higher in the list matched first | Check the tag in the title, and move or change the rule. Or type the right client in the row: a refresh keeps it |
| Amount is blank | The client is not in the Rates tab, the entry’s Billable is No, or the row was refreshed by an account without Pro | Add the client and its rate to Rates, or set Billable to Yes, then press Refresh |
| Times look an hour off | Times follow your main calendar’s time zone, which can differ from the spreadsheet’s or from where you are | Check the time zone in Google Calendar’s settings. If you changed it, press Save in the panel, then Refresh |
| Automatic refresh stopped | The panel says why under Automatic: for example, the Pro subscription ended, or it runs under another account | Renew Pro and tick it again, or ask the account named there |
| … calendar(s) are no longer available — untick them. / A calendar was not found, or you no longer have access to it. | A ticked calendar was deleted, unshared, or belongs to another editor | Untick it and press Save |
| Stopped at 6000 events — choose a shorter period. | One refresh reads up to 6,000 events | Refresh a shorter period, month by month: earlier months stay in the timesheet |
| No billable entries for … in … | That client has no entries with Billable Yes in that month | Check the month and the Billable column |
| Another refresh is running — try again in a minute. | Someone else, or the morning refresh, is refreshing this spreadsheet | Wait a minute and press Refresh again |
| HourLane is missing some permissions. | A permission was left unticked when it was installed | Press Give the missing permissions, tick every box, and open HourLane again |
18. Your data
HourLane runs inside your Google account. Events are read from your calendars and written only into your own spreadsheet; nothing from your calendar is sent to BiLingoPlus. The setup is saved inside the spreadsheet, and a small record for your account (the Pro status and which spreadsheets have automatic refresh) in your Google account. Details are in the privacy policy.
19. Still stuck?
Write to info@bilingoplus.com or use the support page. Tell us the message you see in the panel. Please do not send us your calendar or timesheet with private details in them.
Questions
Can HourLane change or delete my calendar events?
No. Both of its calendar permissions are read-only. It lists your calendars and reads the events of the ones you tick, and writes only into the spreadsheet you use it in.
Can I use HourLane in several spreadsheets?
Yes. Open it in each one. Every spreadsheet has its own setup, calendars, period and rules, and its own Timesheet, Summary and Rates tabs.
Does HourLane read the event descriptions?
Only for the Only events containing filter, which looks at the title and the description. The description is not written into the timesheet.
Can I add rows by hand?
Yes. A row you type yourself has no HourLane key, so a refresh leaves it where it is. With the date written like 2026-11-16, its hours and an event, the Summary counts it too.