TL;DR: Switching roofing software rarely loses data at the import step. The losses happen earlier: exports never run while the old account was still active, field mappings nobody checked, and email lists that burn deliverability on day one. Export before you give notice. Write down your counts. Cut over on a hard date.
The one-sentence answer: Export everything while your account is still live, check the field mapping yourself on a small test import, and only then give notice — in that order, never the reverse.
The scariest sentence in roofing software is not in a sales deck.
It is in AccuLynx's General Terms and Conditions, last updated January 23, 2026:
"AccuLynx shall have no obligation to maintain, store or provide any of Your information and data and may delete such data after termination of the Agreement unless You request in writing prior to the effective termination date that we provide that data to You in a mutually agreed upon format, provided, however, that we may charge You a reasonable fee to fulfill that request."
Read it slowly. Written request. Before the termination date. Mutually agreed format. Possible fee.
None of that is unusual, and AccuLynx at least puts it in writing. Jobber's help center states the plainer version: cancel, and once your billing period ends "you'll lose access to your account data, including clients, jobs, invoices, and any other information stored in Jobber."
Your data is available while you are a customer and conditional the moment you stop being one. Roofing companies do not lose ten years of job history because software deletes it out of spite. They lose it by giving notice first and thinking about exports second.
Here is the sequence that keeps everything, with the failure points we see at each step.
What you need before you start
- Admin access to the current system. Jobber's client export is admin-only and, per its help center, "available on select plans." Confirm yours has it before building a schedule around it.
- The destination decided. Still comparing? That is a different project. Start with how to choose a CRM for contractors, the JobNimbus alternatives roundup, or the head-to-head pages on JobNimbus, AccuLynx, Jobber, and Roofr.
- The new platform's import spec. Which formats it accepts, which objects it holds (jobs, photos, documents, custom fields), and who runs the import.
- Your current contract. Notice period, renewal date, and the data clause. You are looking for sentences like the AccuLynx one above.
- A slow-season window and one owner. A migration run by committee stalls between two systems.
Step 1: Export everything while the account is still live
Do this before you give notice. Not the same week you give notice. Before.
What "export" means varies by platform, and the differences matter more than any feature chart:
| Platform | Self-serve export | The catch |
|---|---|---|
| JobNimbus | Custom Reports to CSV or Excel; attachments per record via "Download All" | No export-all option; attachment zips come one Contact or Job at a time |
| AccuLynx | No self-serve full export documented in its public FAQ | Post-termination data delivery requires a written request before the termination date, in a "mutually agreed upon format," possibly for a fee |
| Jobber | Client list arrives by emailed CSV | 1,500 rows per file; admin-only; not included on every plan |
| Roofr | Contact list to CSV or Excel from the contacts page | Jobs, documents, and payment records are separate questions; confirm each with support |
JobNimbus is direct about the limit. Asked whether you can export all your data, its help center answers, "Unfortunately, no." You save your work two ways: Custom Reports exported to CSV or Excel, and a "Download All" button on each Contact or Job record that produces "a zip file of all attachments residing on that record." One record at a time. A company with 1,400 photo-heavy jobs is looking at 1,400 zip downloads, which is why the attachment work gets assigned early, to a named person, with a count.
AccuLynx publishes no self-serve export walkthrough in its public FAQ. What it publishes is the terms clause above. So the practical move is contractual: before you give notice, send the written data request, get the delivery format agreed in writing, and ask what the "reasonable fee" will be. That letter is your hook. Without it, AccuLynx has no obligation to provide anything after the termination date.
Jobber emails your client export as CSV files capped at 1,500 rows each, so a 4,000-contact list arrives as three attachments. Only admins can run the full client export, and it is not included on every plan.
Roofr documents contact-list export to CSV or Excel from the contacts page. Jobs, measurement reports, documents, and payment records each need their own answer; walk the full object list with Roofr support before you rely on any of it.
Export the closed jobs too, not just the open pipeline. The invoice on a job you finished three years ago is still a live tax record; the FAQ below covers how long the IRS expects you to produce it.
Where this fails: you already gave notice, or already cancelled. If an AccuLynx termination date has not passed, the written request is still timely; send it today. If a Jobber billing period is still running, access survives until it ends; export now. If access is already gone, nothing in either company's public documentation promises recovery. Ask support in writing, and treat whatever you get as a favor rather than a right.
Step 2: Write down your counts
Before anything moves, record the numbers the migration has to hit: contacts, jobs, invoices, photos, documents, and which custom fields are actually in use.
Twenty minutes of counting is the only honest way to answer "did we get everything?" three weeks later. A migration without source counts ends in a shrug.
Step 3: Clean the data before it touches the new system
Deduplicate contacts, close dead jobs, fix the formatting you already know is inconsistent. Garbage moved is garbage kept.
Then deal with the email addresses, because this is where switching roofing software quietly gets expensive.
Across ClickWerxs Command Center onboardings, the contact lists that arrive were built over years: typos nobody caught, domains that no longer exist, addresses that were never validated. Sending to a list like that on day one damages deliverability before the first real campaign goes out.
The thresholds are documented. Google's email sender guidelines, in force since February 1, 2024, require SPF or DKIM authentication from every sender. Anyone sending 5,000 or more messages a day to Gmail addresses also needs DMARC, one-click unsubscribe, and a spam rate held under 0.3% in Postmaster Tools, with Google recommending under 0.1% for headroom. A "we've moved to a new system" blast to every address collected since 2019 is exactly the send that trips those numbers.
Run the list through a verification service first, then send the first campaigns to the segment that has opened something in the past year. Hold the rest back until it is verified.
Where this fails: the blast already went out and complaints spiked. Stop bulk sending, keep email to replies and transactional messages, and rebuild volume slowly against the verified, engaged segment while watching Postmaster Tools. Sender reputation rebuilds on weeks of clean sending.
Step 4: Map the fields yourself
Every import runs on a mapping: which source field lands in which destination field. This is the step to be paranoid about.
Across Command Center onboardings, field mapping errors are the most common data migration failure we see. Source fields rarely align cleanly to the destination schema. Names end up in company fields. Phone numbers land in email columns. Custom data gets silently dropped.
Silently is the operative word. A failed import announces itself. A mis-mapped one looks fine until a foreman pulls up a job in October and the shingle spec is blank.
So make the mapping visible before anyone runs anything:
| Source field | Destination field | Verified on a sample record? |
|---|---|---|
| Contact "First name" | Contact first name | Yes / No |
| Job custom field "Shingle spec" | Job field "Materials" | Yes / No |
| Contact note history | Decide: migrate, archive as PDF, or drop | Yes / No |
The rule for custom fields: every one gets a named destination or a written decision to drop it. "We'll see how it comes over" is how claim numbers, measurement links, and material specs disappear.
Where this fails: the importer says the tool auto-maps and there is no sheet. Then you write the sheet yourself from the Step 2 field list and make them confirm it line by line. A field with no destination is a decision to make on a Tuesday before the import, not a discovery to make on a job site after it.
Step 5: Import a test slice and check it
Load 50 records before you load 5,000.
Then check the slice against reality. Pick ten jobs and trace each end to end: contact spelled correctly and in the right fields, job dates intact, invoice totals matching to the dollar, photos and documents present and opening. Compare slice counts against your Step 2 numbers.
If the slice fails, fix the mapping and run a new slice. Never run the full import on the theory that the errors looked minor. Whatever is wrong in 50 records will be wrong in 5,000, and you will be un-picking it by hand in the busy season.
Step 6: Cut over on a hard date
Running both systems "for a while" feels safe. In practice it doubles the admin work and the while never ends.
Pick the date. From that morning, every new lead, job, and invoice goes into the new system, and the old one becomes read-only reference. Keep the old subscription for one more billing cycle, since access typically ends when the paid period does; Jobber's cancellation policy says exactly that. Then archive your exports in two places you control and close the account.
Where roofing software migrations actually fail
The three patterns worth engineering against:
- The attachment slog gets abandoned. Per-record downloads start strong and stall at job 300 of 1,400. Escalation: a named owner, a running count against the Step 2 totals, and a deadline that lands before the notice letter goes out.
- Custom fields drop silently. The mapping sheet is the gate. No sheet, no import.
- The day-one blast. Unverified list, big announcement, spam spike, and the new system starts life on a damaged sending domain. Verified, engaged segment first. Watch Postmaster Tools for the first month.
How you know the migration worked
- Record counts in the new system match the Step 2 export counts.
- Ten random jobs trace end to end, attachments opening included.
- The first email campaign went to a verified, engaged segment and the spam rate stayed under 0.3%.
- The old account sat through one full billing cycle without anyone needing to log in, and only then was archived and closed.
Miss any of the four and the migration is not done, whatever the calendar says.
Frequently Asked Questions
How long do we need to keep records from the old system?
Longer than the subscription. IRS retention guidance: keep records supporting a return for 3 years in the general case, 4 years for employment tax records, 6 years if income was underreported by more than 25 percent, and 7 years for bad-debt deductions. That is why Step 1 exports closed jobs and not just the active pipeline; the invoice on a 2023 re-roof is still a live tax document.
Who actually owns the data in a roofing CRM?
The marketing page usually says you do. The contract decides what that means, and what it usually means is that owning the data and being able to reach it are different things. AccuLynx's terms are the clean example: whatever you own, the company has "no obligation to maintain, store or provide" it after termination unless you asked in writing first. Read the data clause in your own agreement before sending notice, because that clause sets your deadline.
Can't the new vendor just handle the whole migration?
The middle of it, yes. A competent onboarding team writes the mapping sheet, runs the test slice, and loads the data. What it cannot do is export records you never saved while the old account was live, or reconstruct a custom field the export never contained. Steps 1 and 2 are yours. Everything after that is shareable.
If the destination is ClickWerxs Command Center or the My ClickWerxs field platform, this checklist is what onboarding looks like from the inside: your exports and your counts, our mapping sheet, and a test slice you approve before the full load runs. Field mapping and day-one email are where we have watched migrations go wrong, so those are the two checks we refuse to skip.
See how onboarding works or talk to us about what your current system will and will not give up. Still choosing the destination? Start with the all-in-one roofing software comparison.
Sources
- AccuLynx, "General Terms and Conditions," updated January 23, 2026. Termination and data clause quoted in full above. my.acculynx.com (retrieved 2026-08-12)
- JobNimbus Help Center, "How Do I Backup or Copy My Account Data?" Custom Report exports, per-record "Download All" zips, and the absence of a full-account export. support.jobnimbus.com (retrieved 2026-08-12)
- Jobber Help Center, "Export Client Information." Emailed CSV export, 1,500-row file limit, admin-only access, plan availability. help.getjobber.com (retrieved 2026-08-12)
- Jobber Help Center, "Cancel Your Jobber Subscription." Loss of access to account data after the billing period ends. help.getjobber.com (retrieved 2026-08-12)
- Roofr Knowledge Center, "How to use Roofr Contacts." Contact list export to CSV or Excel. roofrhelp.zendesk.com (retrieved 2026-08-12)
- Google, "Email sender guidelines." Authentication, one-click unsubscribe, and spam-rate requirements in force since February 1, 2024. support.google.com (retrieved 2026-08-12)
- IRS, "How long should I keep records?" Retention periods cited in the FAQ. irs.gov (retrieved 2026-08-12)
Competitor information cited in this post is based on publicly available sources as of the publication date and is subject to change. ClickWerxs is not affiliated with the companies mentioned. All comparative claims are sourced, see source links. This post reflects operator opinion and is not legal, financial, or professional advice.
ClickWerxs provides CRM software through the ClickWerxs Command Center platform. We earn revenue from businesses that subscribe. This post reflects our direct experience onboarding clients onto our platform and is not independent third-party research. Pricing and features cited are current as of publication — see clickwerxs.com/crm/features for current details.
Kaleb Dickhaut is the founder of ClickWerxs and built ClickWerxs Command Center. He earns revenue from businesses that subscribe to the platform. This post reflects his direct operational experience, not independent third-party research.
Kaleb Dickhaut — Founder, ClickWerxs. Kaleb built ClickWerxs from the ground up, from payment processing ISO to the Command Center platform to the AI SEO methodology the blog runs on. He has onboarded hundreds of small businesses onto payment and CRM systems. linkedin.com/in/kaleb-dickhaut
