Automated Time Tracking and Billing Integration with Shoutbase & Quickbooks
Tracking billable hours and invoicing—on top of completing the actual job—can be stressful, especially if you’re part of a small business where you’re wearing multiple hats. What if I told you there was a way to ease that burden, allowing you to spend less time working on non-billable tasks, such as entering data and tallying up completed work to prepare invoices? The magic words are “integration” and “automation.” By combining existing tools and allowing them to communicate and work together, you can automate certain tasks and get more done faster.
Zapier is an online tool that makes it easy to create integrations. In minutes, I’m able to create “Zaps” that automate my tasks, saving more time (and money) each day. In one example, I use Zapier to automatically create time activities in Quickbooks from my preferred time tracking tool, Shoutbase. Shoutbase makes time tracking a breeze and fits into my workflow with minimal interruptions. Entering time directly into Quickbooks is more tedious, but this is where I currently bill from and therefore need the time entry data. After setting up my Zapier integration, I’m now able to start and stop time entry tasks in Shoutbase, and the data is automatically transported to Quickbooks for billing.
This step-by-step guide will show you how to create the Shoutbase and Quickbooks Zap described above. At the end of this guide, you will be able to:
- Understand how to create a basic Zap in Zapier.
- Use Shoutbase to create time entries.
- Have time activities automatically created in Quickbooks when new Shoutbase timers are created and stopped.
Getting Started
Before creating this integration, make sure you have the following accounts set up and a basic understanding of the systems we’ll be working with. If you’re new to one or more of the technologies listed, I’ll include information about getting started with each.
Shoutbase
Shoutbase is a time tracking system built for speed and simplicity. It’s optimized for fast data entry that lets you record time quickly, so you can get back to what you’re doing with minimal disruption. Shoutbase is free for individual users, and setting up an account is a breeze.
Quickbooks
Quickbooks is well-known accounting software. It allows businesses to accept business payments, manage and pay bills, and complete payroll functions. If you’re brand new to Quickbooks, you can start a free trial. Make sure you have at least one employee (yourself) and a customer. These will be used in the tutorial.
Zapier
Zapier is a tool that helps you integrate the different web applications you use to help you save time and energy. Zapier also includes a free trial and a free tier. If you are brand new to Zapier, check out their Getting Started Guide to gain a basic understanding of using Zapier and creating “Zaps” before continuing with this tutorial.
Technical Design
Before jumping into creating the Zap, here is a brief technical design of how our Zap will work.
- User creates time entry in Shoutbase. This is our “Trigger,” which means this event will cause Zapier to run the processes we define in our Zap.
- Zapier polls Shoutbase for new time entries by the user. Every 5-15 minutes, Zapier will make another request to Shoutbase to fetch entries.
- Shoutbase responds with a set of time entries.
- From the time entries response, Zapier determines if there are any new time entries since the last time it made a request. If there are no new time entries, nothing happens, and Zapier resets to make the request again in 5-15 minutes. If there is a new time entry, Zapier continues to the next step.
- When a new time entry is found, Zapier runs custom javascript code, which we will define, to reformat data from the time entry (duration) into the format accepted by Quickbooks.
- Once the code is finished running, Zapier uses the data from the previous step to call the Quickbooks API to insert a time activity.
The following uml diagram illustrates how information is requested, transformed, and passed through the integration system.
Create a New Zap
Log into your Zapier account. Once logged in, click “My Zaps.” Here you will see your Zap dashboard. This is where you can see and control the Zaps you’ve created in the past or create a new Zap. Click the “Make a Zap!” button.
Trigger Definition
The first step to creating a Zap is defining your trigger. A trigger is an action that occurs in one system that causes something to happen in another system. In our case, “Shoutbase New Time Entry” will be the trigger.
1. Name Your Zap
I like to name Zaps very explicitly, so I can easily know what my triggers and actions are just by reading the name. In this case, I’m naming my Zap “Shoutbase Time Entry => Quickbooks Time Activity.” You can use this or choose something different.
2. Choose Triggering App: Shoutbase
The Shoutbase Zapier integration is new and currently in beta version. You’ll have to use this invitation link to select Shoutbase as your triggering app. In the future, you’ll be able to select Shoutbase from the list of other applications.
3. Select Trigger Event: New Time Entry
From the dropdown menu, select “New Time Entry.” This is a polling trigger event, which means the Zapier API will make regular requests (every 5-15 minutes) to check if there are any new time entries for your Shoutbase account. When there are, it will continue to the next step.
4. Connect Your Account
Continue to connect your Shoutbase account. A window will appear requesting access to your Shoutbase account. Authorize Zapier to connect to your Shoutbase account by clicking the “Allow” button. If you do not have a Shoutbase account yet, go to shoutbase.com to register and verify your account.
5. Finish Trigger
In the “Customize Time Entry” section, skip this for now by clicking “Continue.” Next is the “Find Data” section. Here, Zapier will poll the Shoutbase API for recent time entries, to give you an idea of the data you’ll be working with for the rest of the Zap.
If you are new to Shoutbase and haven’t created a time entry yet, now is a great time. Log in to your Shoutbase account. In Shoutbase, create and save a time entry that includes a description as well as a start and stop time.
Once you’ve created this time entry in Shoutbase, go back to Zapier. Click the “Test & Continue” button. This will poll for new time entries. Select the time entry you just created. And that’s it for the trigger.
Format Data
Next, we need to format the data from our trigger into something our action can use. In this case, we want to parse the duration from the time record into the proper format.
1. Code by Zapier
From the menu, select “Code by Zapier” and choose “Run Javascript” as your event.
2. Input Data
Input the data from the previous steps, which we will use in our custom code. Add the duration from Step 1 (time record).
3. Code
Add javascript for transforming duration, which is recorded in seconds, to hh:mm (hours: minutes) format. You can write custom javascript here to fit your needs. For now, this is all we need to move on to the next step.
You can copy the code below hosted by Pastebin.
4. Finish Code Step
Test your code and continue. If you receive any errors here, check your code for accuracy.
Action Definition
1. Add QuickBooks Action
Select QuickBooks as “App” and “Create Time Activity” as “Action Event.” Next, connect your Quickbooks account in the authorization pop-up window.
2. Customize Time Activity
In this step, we will define the parameters used to create our new time activity when Shoutbase time entries are submitted. I have customized this to fit my needs. Your time activities may be customized differently to fit your needs. For now, follow along with these steps, and you can add your own customization later.
For time activity type, choose “Employee.”
For “Employee Name,” choose yourself. If you don’t have an employee, log on to QuickBooks and create one. If you do have employees but your name is not an option, consider creating one for yourself (using QuickBooks). If you choose an employee that is not yourself, keep in mind that your Shoutbase time entries will create QuickBooks time activities for this other employee. I’m choosing Stormi because that’s me!
Select “No” for “Enter Start and End Times.” We will use the duration (hours and minutes) instead of start and end times. In the time field, click the dropdown menu icon. Click to expand “2. Run Javascript.” Select “Time.” This is capturing the time parameter we defined as output in Step 2 of the Format Data section, which is the duration for our Shoutbase time entry in hh:mm format.
Next, add a description. Here you can customize the comment to suit your needs. I like to include the entire description from my Shoutbase time entry. This way, I can read the comment and get the full context of what I was working on.
In the next fields, we’ll define the customer, hourly rate, and other parameters used for billing. I’m simply selecting my generic customer, “Customer,” and entering an hourly rate. This is a very basic example, but remember that you can customize this later to suit your needs. Your customers and rates may be dynamic, depending on the job. You could add additional code to the Javascript action that parses this information from the time entry description or use Shoutbase’s tag system to differentiate time entries. This level of customization is more advanced and may be discussed in a follow-up tutorial.
3. Finish Up
After customizing the time activity, click the “Continue” button. Run your test. Once you receive a success message in Zapier, check your QuickBooks account for new time activities. You should see a new activity appear with the description and duration of your test time entry. Finally, don’t forget to turn on your Zap. This is done by toggling the grey switch at the top of the screen to “On.” When your Zap is on, Zapier will continuously poll your Shoutbase account for new time records. If it’s off, the Zap won’t work.
See Your Zap in Action
1. Enter Time in Shoutbase
Now that your Zap has been created and activated, let’s see it in action. Log in to Shoutbase and select “New Entry” from the nav menu. (If you’re using mobile Shoutbase, you can click the blue plus button at the bottom of the screen.) Add some details to the description, then add a start and stop time. Zapier only polls the Shoutbase API for stopped timers, so if you don’t include an end time to the time entry, Zapier will not recognize it until it is stopped.
2. Manually Run Your Zap in Zapier
Zapier polls the Shoutbase API for new time entries every 5-15 minutes, so we won’t instantaneously see our new time record appear in QuickBooks. However, we can manually trigger Zapier to run our Zap and check for new time entries instantly. To do this, go to your Zaps dashboard in Zapier, find your Shoutbase/QuickBooks Zap, click the dropdown menu, and click “Run.”
3. QuickBooks Time Activities
Log in to your Quickbooks account and open your time activities. See that the newest entry has the same description as your Shoutbase time entry and has the proper amount. Rejoice that you will no longer have to manually enter time into QuickBooks!
Conclusion
This simple Zap took only minutes to put together and saves me so much time and mental energy each week. And it’s only just the beginning. The possibilities for integration and optimization are endless. Zapier lets me expand the capabilities of web applications I prefer interfacing with, while minimizing tedious and repetitive tasks.
I enjoy tracking time in Shoutbase because it’s fast and easy to use and conveniently manages the time for my entire team with tags, goals, and reports. And Shoutbase is actively expanding its capabilities to integrate with other systems beyond QuickBooks, like Jira, Github, and Slack, all by using Zapier.
If you’re interested in learning more, check out my other articles on why and how integrations can make us all better at doing what we do.
Better Time Tracking for Jira Using Shoutbase & Zapier
Tracking Time on GitHub PRs Using Shoutbase & Zapier
Dynamic Duos: Integrating Jira & Shoutbase Using Zapier
What did we miss?
Please let us know by tweeting to @shoutbase on Twitter.
Stormi Hoebelheinrich
Developer of Shoutbase and Olio Apps.
LinkedIn: @shoebelheinrich
Thanks for reading!
If you would like to learn more about Shoutbase, please follow us on Twitter, Instagram, Facebook, LinkedIn, or Medium!