Shared Reports in Clockify

If you bill your services by the hour, you need to provide your clients with a detailed listing of how you spent your time.

Compiling this list of hours can be a real chore.  For years, I used a variety of custom-built solutions to track my hours and a different custom solution to bill those hours.  This combination led to a multi-step process of transferring the hours from my tracking solution to my billing solution.

I dreaded this billing process.

Scaling Up

At the beginning of 2021, I decided I needed to hire another full-time developer.

We would be going from two full-time developers to three.  The custom solution we had used for years was not built to scale.  Rather than sink dozens of development hours (or more) into upgrading our in-house solution, I decided it was time to move to an off-the-shelf system that we could grow with.

I turned to Clockify.

My initial plan was to use the service for tracking hours only.

That was an upgrade over my existing hour-tracking approach, but it still required a multi-step export process to produce a file that I could share with our clients.  There had to be some way to provide my clients with detailed hours without jumping through a bunch of hoops to make the data presentable.

Enter Clockify shared reports.

The beauty of shared reports in Clockify is that they are dynamic.

Rather than create a new static report every billing period, you set the report criteria and Clockify serves up the latest data every time the client visits their custom, GUID-based URL.

Step-by-Step

Here is the process I follow when setting up a new client:

  • Filter > Status > [√] Invoiced
    NOTE: I set the status to only show "Invoiced" hours on the reports I share with clients.  I do this so that I have a chance to review the hours before the client actually sees them.  I don't use the Invoice feature in Clockify to create invoices for my clients.  Instead, I use the "Invoiced" status as a way to mark which hours I have reviewed and approved.
  • Time period > "Last month"
    This is only the default view when clients first visit the link.  There is an option to lock the viewable time period, but I leave it open so that clients can filter to show whatever time period they would like.  Even though the dates in the upper right show 10/01/2021 - 10/31/2021, the report URL will open to whatever "Last month" is at the time the client visits the site.  In other words, if they visit the site in December, it will open to show November's data.
  • [Apply Filter]
  • Export > Customize...
    Your client will be able to export the data in whatever fields are checked in the "Detailed export settings" form, so choose wisely.  I'm not sure what purpose the "Report name" serves in this context, as you will be giving your report a different name when you save it later.
  • Enable Rounding
    I round my data in 6-minute intervals.  This avoids rounding issues that occur with 5 or 10-minute intervals (e.g., 40 minutes is 0.66667 hours).  
  • Hide Amount
    I hide the amount because I often use hybrid maintenance agreements, where the first X number of hours are pre-paid.  Showing an hourly amount due for those hours would only cause confusion.
  • Click the three-node icon to Share the Report
  • Enter the client's name as the Report name
  • Leave Visibility set to Public - Anyone with the link can view
    The only other option is to share the report internally with other licensed users.  Using a public link does mean that the data is open to the world.  The only security is obscurity.  It's unlikely anyone will stumble upon a random GUID-based URL.  Even so, I'm careful to review our descriptions and remove sensitive information before marking the time entry as "Invoiced."  
  • Leave [√] Always open as last month enabled
  • Leave  [  ] Lock dates disabled
  • Leave [  ] Schedule to email disabled
    Here again, only licensed users can receive scheduled emails.
  • Click [Create Link]

Viewing Previously Shared Reports

To view previously shared reports, you can go to Reports > Shared:

From here, you can click on the report name to open it in a new browser tab.  You can also click on the [Copy] button to copy the URL to the clipboard.

If you click the three dots to the right of the copy command, you will see three additional options:

Edit sharing settings

Unfortunately, there are very few settings that you can edit after you have created the shared report.  If you want to change any of the options beyond the four in the screenshot below, you will need to create a new shared report from scratch:

Filter info

This is a simple, read-only view of the filter settings in effect for the current report.  To change any of these settings, you will need to create a new report.  Take note that this will also generate a new GUID URL.  For this reason, it's important to get the initial settings correct so that you minimize the number of times you need to send your client a new URL.

Delete

If you don't need the shared report anymore, then you can delete it.  You may need to do this if your client gets a new accounts payable clerk, as there would be nothing stopping the previous clerk from using the URL to access the hourly billing details from home (or, worse, from their new job).  

Don't worry, Clockify warns you so that you don't delete the shared report accidentally:


NOTE: The above screenshots are all from my own Clockify account.  I have a Pro subscription, so some (many?) of the features shown will not be available with the free version of Clockify.  The Pro version is currently about $100/user/year.  Personally, I think it's a bargain.


External references

Extra Features
The only truly free time tracker and timesheet app that lets teams track how much time they spend working on projects

Referenced articles

The Hour-Tracking Journey
From Palm Pilots to Google Sheets to Clockify, I take a trip down hour-tracking memory lane.
Pricing Annual Technical Support
How am I trying to fix my biggest business mistake? By giving my clients three options that explicitly address their risk tolerance.

Image by Markus Kammermann from Pixabay