Bit & GrainBit & Grain
Back to blog
From Spreadsheet to System: Day 2, The Export
8 min read

From Spreadsheet to System: Day 2, The Export

Brandon Carroll

Brandon Carroll

Founder, Bit & Grain

Guest post by Jake Torres, owner of Torres Trim & Finish in Portland, Oregon. Jake switched from Jobber + QuickBooks to Bit & Grain in early 2026. This is his story.


If you have ever moved from one software platform to another, you know the export step is where the optimism from Day 1 usually gets tested. Every platform makes it easy to get in. Getting your data back out is a different story.

Jobber is better than most. The export options are in Settings under Data Export, and you can pull client records, job history, and invoice history separately as CSVs. I will describe exactly what I found so you know what to expect if you are doing the same migration.

What Jobber Lets You Export

I spent about two hours on the export process. Here is what I was able to pull:

Client list. This came out clean. Name, address, email, phone. No problems here. 847 clients over nine years. The CSV was well-formed and easy to work with.

Job history. This is where it gets more complex. Jobber's job export includes the job title, client, status, created date, scheduled date, and a few other fields. What it does NOT include is the line item detail from invoices, the material costs logged to the job, or the notes you have added along the way. Those live in separate exports.

Invoice history. Invoice records export with invoice number, client, amount, status, and date. But the line items within each invoice are not in the standard export. To get those, you need to pull separately via their reporting exports, which is buried under Reports.

The material/expense records. These are the hardest to export cleanly. If you have been logging expenses to jobs in Jobber, those records are accessible but not in the standard data export. You have to go through their reporting section and pull a custom expense report filtered by date range.

What is not in any export. Job photos and attachments do not export automatically. Recurring job templates do not export. Client notes that were added directly to the client record (not to a job) export with the client CSV but in a single text field that is hard to parse.

What I Actually Needed

After reviewing what Jobber exports, I made a practical decision about scope. I was not going to try to migrate nine years of historical job and invoice data into Bit & Grain. The value in that history is mostly lookup (did I do work for this client before? what did I charge?). I can answer those questions in Jobber if I need to for another year or two while the account winds down.

What I actually needed to migrate was:

  1. The full client list (all 847 clients)
  2. Active and pending jobs (27 jobs in various states)
  3. Equipment and materials I track as recurring items
  4. My standard pricing for common job types

Everything else, I would rebuild as I used the system.

Cleaning the Client CSV

The Jobber client export had a few issues I needed to clean before importing:

Duplicate entries. I had 34 pairs of duplicates where the same client had been entered more than once over the years. These needed to be merged or one deleted before import. I handled this in Excel by sorting by last name and looking for obvious duplicates.

Missing emails. About 180 clients had no email address on file. These were older clients from early in the business when I did not collect emails consistently. I left these as-is and planned to add emails as I worked with those clients again.

Address format. The Jobber export puts addresses in separate fields (street, city, state, zip). Bit & Grain's import expects a similar format, so this was a non-issue.

After cleaning, I had a CSV I felt good about importing.

The Job Export Reality

For the 27 active and pending jobs, I decided to re-create these manually in Bit & Grain rather than trying to import them from a CSV. The reason: each active job has specific context (what has been done, what is left, what materials are on site) that would not survive a CSV import cleanly. Re-entering 27 jobs by hand takes a few hours, but the data quality is higher than a migrated record that might have gaps.

I blocked out the following morning to do that re-entry.

What Took Longer Than Expected

The whole export process took about two hours, but what I did not expect was the time to review and make decisions about the data. Exporting is fast. Deciding what to import versus leave behind, and cleaning the data that needed cleaning, that is the actual work.

If you are planning your own migration, allocate a realistic time estimate: export takes 30 minutes, data review and cleaning takes 1 to 3 hours depending on how clean your existing records are.

How Bit & Grain Helps

The migration and import tools in Bit & Grain are designed to handle the Jobber CSV format. You can upload the client CSV and the system maps the fields. Grain AI assists with field mapping when the source columns do not exactly match the import expectations.

The practical guidance is to import clients first, then re-create active jobs manually. Do not try to import historical job data unless you have a specific reason to need it in the new system. Nine years of jobs that are closed and paid are searchable in Jobber. You do not need them in Bit & Grain on day one.

Day 3 covers the actual import: uploading the client CSV, watching Grain AI map the fields, and the first time I created a real job in the new system.

The Zapier Integration Situation

One thing I wanted to document for anyone in a similar position: if you are running a Zapier integration between Jobber and QuickBooks (or any other tool), do not count on that integration to handle your data migration. The Zaps that were running in the background were moving data in a one-way flow (Jobber to QuickBooks) in a format that was useful for that flow but not necessarily useful for a general export.

When I tried to export directly from QuickBooks for any historical financial data I might want to bring forward, the export was structured around QuickBooks categories and chart of accounts, not around jobs. It was not directly useful for a job-centric import into Bit & Grain.

My decision: export clients and active jobs from Jobber. Export nothing from QuickBooks for migration purposes. Use my accountant's records for anything tax-related going back.

If you have been running Jobber longer than a year and have significant historical data in QuickBooks that is job-coded, you may want to spend more time thinking through this. For me, with nine years of data where most of the historical jobs are closed and fully reconciled, the practical value of migrating that history was low.

Creating a Migration Checklist

Before starting the actual import, I created a simple migration checklist. I share it here because having it upfront saved me from several false starts:

Pre-migration:

  • Export client CSV from Jobber
  • Export active job list from Jobber (for reference, not direct import)
  • Download all receipt/expense records from the last 90 days (for any open jobs)
  • Screenshot your standard pricing and service packages (to rebuild in new system)
  • Note your team members and their roles (to add to new system)
  • Document any recurring job templates (to rebuild manually)

Day 1 of active migration:

  • Import client CSV
  • Verify import results and resolve duplicates
  • Re-create top 5 most active clients manually if CSV import did not work cleanly

Days 2 to 5:

  • Re-enter active jobs (prioritize jobs with upcoming appointments)
  • Create estimates for any pending jobs
  • Add team members to new system
  • Set up payment integration (Stripe)

End of first week:

  • Send first invoice through new system
  • Collect first payment through portal
  • Verify payment deposited to correct account

This checklist took me about 30 minutes to build and saved significant confusion during the actual migration week.

One Thing to Do Before You Export Anything

Before you export, spend 30 minutes auditing your data in Jobber. This is not about cleaning the export file. It is about knowing what you have.

Look at: how many clients are actually active vs. dormant (clients you have not worked with in 3+ years)? How many open jobs are actually in progress vs. stalled? Are there invoice records that should be closed but show as outstanding?

This audit gives you a realistic picture of what you are actually migrating. I found that of my 847 clients, about 320 were truly active (had a job or estimate in the last 2 years). The other 527 were historical. I imported all of them, but the knowledge that my "real" active list was 320 clients made the import feel less overwhelming.

The export itself is straightforward once you have that context. Day 3 covers what happens when you actually upload the CSV.

Share this post

Run your trade business from one place.

Join contractors, electricians, plumbers, and carpenters who use Bit & Grain to manage their entire business.