Integrations
Set up website tracking, check the JobNimbus sync, connect Follow Up Boss, CompanyCam, QuickBooks Online, and Stripe, and save the Claude key.
Sidebar → Settings → Integrations shows how data flows through roofingBoss and on to other systems. Each integration has its own page, listed in the Integrations menu:
- Overview: one card per integration with its status and a key number, such as how many jobs are mirrored. Click a card to open that integration.
- Marketing: Website tracking
- CRM and data: JobNimbus, Follow Up Boss, and CompanyCam
- Accounting and payments: QuickBooks Online, Stripe, and, for admins, Webhook events
- AI: for admins, Claude
The menu runs down the left side on a wide screen and across the top on a narrow one. The dot next to each name shows its status: green when it's working, red when it needs attention, amber when it's part-way set up, and gray when it's off or not set up. Hover over the dot to see the status.
Set up website tracking
Open Website tracking in the Integrations menu. It connects the marketing website to Google Tag Manager and Google Analytics. The IDs are saved in roofingBoss, and the marketing site loads them on every page within 5 minutes.
- Paste the container ID from Tag Manager into Google Tag Manager container ID (it starts with
GTM-). - If Google Analytics isn't set up inside Tag Manager, paste the ID from your web stream into Google Analytics 4 measurement ID (it starts with
G-). Leave it blank if Tag Manager already sends to Google Analytics, or visits count twice. - Click Save.
The badge changes from Not set up to Live. Only admins can change these IDs; everyone else sees what's saved.
Website editors previewing pages in the Studio's Presentation tool, or with the website's Preview mode bar showing, don't load either tag, so their editing isn't counted as visits. To test your Tag Manager setup, use a normal browser tab without the Preview mode bar.
Check the JobNimbus sync
Open JobNimbus in the Integrations menu. roofingBoss keeps its own full copy of your JobNimbus contacts, jobs, and activities. After the first full copy, it picks up changes every 15 minutes, and right away if JobNimbus webhooks are set up.
The JobNimbus mirror table has one row each for Contacts, Jobs, and Activities:
- Status: Up to date, Backfilling with a progress bar during the first copy, Paused, Error, or Not started. Backfill stalled or Backfill retrying means the first copy stopped making progress.
- In JobNimbus and Mirrored: record counts in each place. They should match closely once the sync is up to date.
- Newest change seen, Last run, and Webhooks: how fresh the copy is.
Click Sync now to pick up changes immediately. If a sync is already running or waiting to retry, roofingBoss says so and doesn't start another one; try again in a few minutes. Recent failures appear in a red Sync errors box. Admins also get an Active switch on each row to pause that sync.
Set up JobNimbus webhooks
On the JobNimbus page, admins see a JobNimbus Automation webhooks card with one web address each for contacts, jobs, and activities. Webhooks are optional, but they let changes arrive within seconds instead of every 15 minutes.
- Click the copy button next to an address.
- In JobNimbus, go to Settings → Automations.
- Add a rule: when a contact (or job, or activity) is created or modified, send a webhook to the address you copied.
- Repeat for the other two.
If the card says the webhook token is created on the first sync, click Sync now and come back.
Connect Follow Up Boss
Open Follow Up Boss in the Integrations menu. The Follow Up Boss sync sends JobNimbus data to Follow Up Boss, one way: contacts become people, jobs become deals, and calls, texts, emails, and notes your team logs become notes. Settings are saved in roofingBoss, and the data is written to Follow Up Boss. Changes made in Follow Up Boss aren't copied back, and nothing is written to JobNimbus.
Every contact becomes a person, whatever its contact type. Archived records are sent too, such as jobs closed as Commission Paid & Closed, because those are past clients. Records deleted in JobNimbus aren't sent. Every job with a mapped status becomes a deal, including lost, out-of-scope, and bad-debt jobs, so you can build call lists from any deal stage.
Follow Up Boss has no contact type, so each person gets their JobNimbus contact type as a tag, spelled as in JobNimbus, such as CAM, Property Manager, or HOA. Customer isn't added, because nearly every contact has it. People already in Follow Up Boss get this tag the next time roofingBoss sends their contact: when the contact changes in JobNimbus, or when you run the import again.
People the sync creates, and every deal, follow JobNimbus, except who a person is assigned to (see Assign new people to reps and ponds). People who were already in Follow Up Boss (matched by email or phone) are merged instead: missing emails, phones, addresses, and tags are added, and nothing already there is removed or replaced, except the current job status field if you pick one. If two JobNimbus contacts match the same Follow Up Boss person, the first one keeps it up to date and the second only links to it.
Made-up emails and phone numbers are never sent, so they can't put strangers on one Follow Up Boss person. That covers emails such as none@none.com, noemail@gmail.com, no@email.com, or email@rentmanager.com, an email that is just a phone number (such as 9412865952@gmail.com), and phone numbers such as 555-555-0199 (any number ending in 555-0100 through 555-0199), one digit repeated, or 1234567890. A contact is still sent with the rest of its details; a name and one real phone number are enough.
Only admins can change this page. Everyone else sees it as Read-only.
- In Follow Up Boss, create an account-owner API key under Admin → API.
- In roofingBoss, open Follow Up Boss in the Integrations menu, and click Add API key.
- Paste the key into API key.
- The first time, also enter the System and System key that identify the integration to Follow Up Boss.
- Click Save key. roofingBoss tests the connection right away.
- Click Refresh pipelines & users to load your Follow Up Boss pipelines, users, ponds, stages, and custom fields, and the stage of each JobNimbus job status (see Who counts as a past client).
Afterwards, only the key's last four characters are shown. The Connection badge reads Connected when the key works. Click Test connection any time to check again.
To replace the key, click Rotate key, paste the new key, and click Save new key. The system identity stays the same unless you click Change system key too. Remove saved key deletes the key, and links between JobNimbus records and Follow Up Boss are kept. If a developer also set a key on the server, the sync falls back to that key and keeps running; otherwise it stops until a key is added again. To pause syncing, turn off Outbound sync (JobNimbus → Follow Up Boss) first.
Set the sync rules
The Sync rules card controls what goes into each deal and person:
- Deal price: Approved estimate total, Approved invoice total, or Latest estimate total
- Sync tag: a tag added to every person the sync creates or matches, so you can filter them in Follow Up Boss. The contact's JobNimbus type is added as a tag too, except Customer. People already synced get it the next time their contact is sent. Tags already on a matched person are kept.
- Skip jobs and activities older than (days): jobs count from their last status change, activities from when they were logged. 0 sends every active job and every activity.
- Push communications as notes: adds logged calls, texts, emails, and notes to the person. Notes are only created, never edited.
- Pond for past clients without an active rep and Pond for everyone else without an active rep: see Assign new people to reps and ponds. Pick No pond to leave those people unassigned.
- Stage for past clients and Stage for vendors: see Set the stage of new people. Pick Don't set to leave Follow Up Boss's default stage, Lead.
- Deal field for the JobNimbus job link, Deal field for the JobNimbus job id, Deal field for the roofingBoss job link, and Person field for the current job status: see Links and job status in Follow Up Boss. Pick Don't fill to leave a field alone.
The pond, stage, and field lists come from Follow Up Boss. If they're empty, click Refresh pipelines & users on the Connection card.
Until the first full import finishes, a Before the first import box says how much the import will send, using the contact and job counts in the JobNimbus mirror. Notes are sent only for the calls, texts, emails, and notes your team logged, not for system entries such as status changes, so the box doesn't count them; Preview (dry run) shows the exact number. The box turns red when communications are on and there is no age cutoff, because then every job and every activity your team logged is sent.
Click Save rules, or Reset to undo unsaved changes.
Assign new people to reps and ponds
When the sync creates a person in Follow Up Boss, it assigns them to the contact's JobNimbus sales rep if that rep is an active Follow Up Boss user with the same name. Otherwise the person goes to a pond, so any rep can claim them in Follow Up Boss:
- A past client goes to Pond for past clients without an active rep. See Who counts as a past client.
- Everyone else goes to Pond for everyone else without an active rep.
- With No pond, the person is left unassigned.
After that, the sync changes a person's assignment only when their sales rep changes in JobNimbus. Other changes, such as a new phone number, never move them, so a person someone claimed from a pond, or reassigned in Follow Up Boss, stays put. People who were already in Follow Up Boss keep their assignment, and deals go to the sales rep only when the rep is an active user.
roofingBoss learns which Follow Up Boss users are active when you click Refresh pipelines & users. Until it has been clicked once, every user counts as active, so click it once now and again whenever someone joins or leaves the team. Refreshing doesn't send anything to Follow Up Boss by itself: people and deals that haven't changed in JobNimbus are left alone, and the new statuses apply the next time a person or deal is sent.
Who counts as a past client
A past client is the primary contact on a job from Signed Contract onward: a job in any status of the Sold, In Production, Accounts Receivable, or Completed stage of its JobNimbus workflow. That includes AR Current and the other accounts receivable statuses, Bad Debt, Paid, and Commission Paid & Closed. Jobs in the Lead, Estimating, or Lost stage don't count, and neither do jobs deleted in JobNimbus.
roofingBoss reads each status's stage from your JobNimbus workflows when you click Refresh pipelines & users, so click it again after you add a status or move one to another stage in JobNimbus. Until it has been clicked once, only Paid and Commission Paid & Closed count. If JobNimbus can't be reached, or its workflows come back without stages, roofingBoss says so and keeps the stages it read before.
Set the stage of new people
When the sync creates a person, it sets their stage:
- Stage for past clients for a past client.
- Otherwise Stage for vendors for a contact whose JobNimbus type is Subcontractor, Supplier, or Manufacture.
- Otherwise nothing, so Follow Up Boss uses Lead.
When a job later moves to a past-client status, such as Signed Contract or AR Current, the job's primary contact is moved to Stage for past clients, once, if the sync created that person. The sync never changes the stage of people who were already in Follow Up Boss, never moves anyone back, and leaves stages alone otherwise, so stages you change in Follow Up Boss stay.
If Follow Up Boss refuses that stage change, for example because the stage was renamed or the person was deleted there, the deal is still updated. Click the run under Recent runs or Outbound passes to see the error. The stage change is tried again later. If a stage was renamed, click Refresh pipelines & users, pick it again in Stage for past clients, and click Save rules.
Links and job status in Follow Up Boss
roofingBoss can fill custom fields you create in Follow Up Boss, so after a call the team can open the job straight from the deal, and a smart list can show each person once, by the job that matters now:
- On each deal: a link to the job in JobNimbus, the job's JobNimbus id, and a link to the job in roofingBoss.
- On each person: the JobNimbus status of their current job.
To set them up:
- In Follow Up Boss, the account owner creates the fields. For deals, create text fields such as JobNimbus-Job-Link, JobNimbusJobID, and RoofingBoss-Link. For people, create a text field such as Current Job Status. roofingBoss never creates fields.
- In roofingBoss, click Refresh pipelines & users on the Connection card to load the fields.
- Under Follow Up Boss fields on the Sync rules card, pick them in Deal field for the JobNimbus job link, Deal field for the JobNimbus job id, Deal field for the roofingBoss job link, and Person field for the current job status. The deal lists show text fields only, and the person list shows text and dropdown fields.
- Click Save rules.
- Deals and people that already exist get the fields the next time they are sent. To fill them all now, run the import again, or a canary first. After that, changes in JobNimbus keep them up to date.
A person's current job is their active job whose status changed most recently in JobNimbus. Deleted jobs don't count. If several JobNimbus contacts share one Follow Up Boss person, the jobs of all of them count. When a job's status changes, roofingBoss sends only that field, and only if the person's current status changed. When the person has no active job any more, the field is cleared.
Unlike stage and assignment, the status is also written on people who were already in Follow Up Boss, so pick a field that only roofingBoss fills. With a dropdown field, roofingBoss writes only statuses that are among its choices and leaves the field alone otherwise. If Follow Up Boss refuses the status, the person and the deal are still sent without it: the error shows in the run's log, and the status is tried again later.
If you delete one of these fields in Follow Up Boss, click Refresh pipelines & users right away. Until then, roofingBoss keeps sending the old field. After the refresh, the setting shows (not found, refresh) and the field is no longer filled: pick another one and click Save rules. If the fields can't be loaded, roofingBoss says so and keeps the fields it loaded before.
Map JobNimbus statuses to stages
Every job becomes a deal, and its JobNimbus status decides the deal's stage. Jobs whose status isn't mapped are skipped. The Pipelines & stages card shows how many active jobs are mapped.
The quickest way is to copy your JobNimbus workflows:
- Click Update pipelines from JobNimbus.
- Review the preview. Each active JobNimbus job workflow becomes a pipeline with the same name, and each status becomes a stage with the same name and order. Each pipeline shows Create, Update, or Up to date.
- Click Update pipelines.
This also maps every status to its matching stage. Follow Up Boss allows one closed stage per pipeline, so only Commission Paid & Closed is marked closed. Stages that aren't JobNimbus statuses stay in the pipeline, after the JobNimbus stages. If one of them was marked closed, Update pipelines clears that mark, because it moves to the JobNimbus closed status. Other pipelines and existing deals are left alone. Run it again whenever you add or rename statuses in Workflows.
To map by hand, use the table:
- By record type maps a status for one JobNimbus record type.
- Any record type sets a fallback for a status across all record types. Rows without their own mapping show the inherited stage with a ↳ badge.
- Pick a stage in Follow Up Boss pipeline / stage. Pick Not mapped, or click the X, to clear it.
Preview and run the import
The Initial import card sends everything across in three passes: people, then deals, then notes.
- Click Preview (dry run). It walks every record and reports what would be created or skipped, without writing to Follow Up Boss. It also counts contacts that share an email or mobile phone and would end up on one Follow Up Boss person.
- In Recent runs, click the preview to see why records were skipped, and fix any unmapped statuses.
- Try a canary first (see below).
- Click Start import, then Start import again to confirm.
The full import waits for the JobNimbus mirror: it starts once Contacts, Jobs, and Activities read Up to date in the JobNimbus mirror table. Until then roofingBoss says the mirror is still loading. Previews and canaries can run sooner. Only one preview or import runs at a time.
The import runs in the background, so you can leave the page. Existing Follow Up Boss people are matched by email or phone and merged, so anything only in Follow Up Boss is kept. Click Cancel run to stop after the current batch. Running the import again is safe: linked records are updated, not duplicated.
If a batch fails, the run waits up to 15 minutes and tries it again, and its badge keeps reading Running. After five failed tries, or right away when Follow Up Boss refuses the API key, the run reads Failed.
If the run's badge reads Stalled, a short stall can clear on its own while a slow page finishes. If it's still stalled after 15 minutes, click Cancel run and start the import again. Records already sent aren't duplicated.
If every person, deal, or note in a pass fails, for example because the API key isn't allowed to create deals, the run stops and reads Failed, and it doesn't count as the finished full import the ongoing sync needs. Click the run in Recent runs to see the error and the record log, fix the cause, and start the import again.
Try a canary import
A canary sends a few records first, so you can check them in Follow Up Boss before sending everything. Under Records to include, pick one:
- Everything (full import)
- Canary: the newest N contacts, with their jobs and activities (up to 100)
- Canary: specific JobNimbus contacts or jobs: paste up to 100 JobNimbus ids, separated by commas or new lines. A job brings its primary contact along, and a contact brings its jobs. Both bring their logged activities.
Then click Preview (dry run) or Start canary import. The run shows Canary in Recent runs, and its details say how many contacts, jobs, and activities it covered. A canary doesn't count as the first full import, so the ongoing sync stays off until a full import finishes.
Turn on the ongoing sync
After the first full import finishes, turn on Outbound sync (JobNimbus → Follow Up Boss) on the Connection card. Every 15 minutes it sends the contacts, jobs, and activities that changed since the last pass.
Turning it on needs a finished full import and a Connected badge. Turning it off always works, even while Follow Up Boss is down or after the key was rotated or removed.
Each pass also tries again records that didn't go through: a Follow Up Boss error, a contact that wasn't sent yet, or a status with no stage mapping. It waits 15 minutes before the first retry and up to 6 hours between later ones, so a status you map today is picked up without the job having to change.
Passes that sent or checked something are listed under Outbound passes on the Initial import card. Click one to see what it did and any errors. Admins can click Stop pass to stop a running pass after its current batch.
Connect QuickBooks Online
Open QuickBooks Online in the Integrations menu. The QuickBooks Online card connects roofingBoss to the company's books. For now the connection is read-only: roofingBoss checks it every day and keeps the change notices QuickBooks sends, but writes nothing to QuickBooks. Only admins see the buttons on this card and the Stripe card.
Keep JobNimbus's own QuickBooks sync on. Until invoices and payments move into roofingBoss, JobNimbus is still what posts customers, invoices, and payments to QuickBooks.
- Check the badge. Not set up means a developer still has to add the QuickBooks keys, and the card lists what's missing. Ready to connect means you can go ahead.
- Click Connect QuickBooks.
- Sign in with your Intuit account, pick the company, and approve the connection.
- You come back to the QuickBooks Online page, and the badge reads Connected.
The card then shows the Company, the Environment (Sandbox or Production), when it was Connected and by whom, the Last check, and how many Change notifications have arrived.
- Check connection tests the connection right away.
- Reconnect approves the connection again. Use it when the badge reads Reconnect soon (Intuit's approval is about to expire) or Needs attention. Once roofingBoss records are linked to a QuickBooks company, it won't switch to a different one.
- Disconnect removes roofingBoss's access at Intuit. Nothing in QuickBooks changes, and reconnecting the same company picks up where it left off.
Admins also see Intuit developer portal setup, with the Redirect URI and Webhook endpoint to copy into the Intuit app settings.
Check the Stripe connection
Open Stripe in the Integrations menu. The Stripe card is for taking invoice payments by card or bank transfer. For now roofingBoss only checks the Stripe key and keeps Stripe's events. It doesn't charge anyone, and customers still pay through JobNimbus.
There's no connect button: a developer adds the Stripe key. Then an admin:
- Clicks Check connection. The badge changes from Key added, not checked to Connected, and Account shows the Stripe account name.
- Under Stripe Dashboard setup, copies the Webhook endpoint into Stripe under Developers → Webhooks, with the events listed under Events to send. A developer then adds that endpoint's signing secret.
Mode shows Test mode or Live. A Check the Stripe settings box means a key was entered in the wrong place, and it says which one.
Review QuickBooks and Stripe events
Admins open Webhook events in the Integrations menu. Once QuickBooks or Stripe sends anything, Recent QuickBooks and Stripe events lists each event's Source, Event, Record, Status, and when it was Received. Stored means it arrived and was kept. Ignored means it was for a different QuickBooks company or the other Stripe mode. test next to an event means it came from Stripe test mode. roofingBoss doesn't act on these events yet.
Save the Claude API key
Admins open Claude in the Integrations menu. The roadmap uses this Anthropic API key to write release notes for updates that arrive without them, and for its review every Monday (see Roadmap). The key is saved in roofingBoss only, and it's stored encrypted.
- In the Claude Console, create a key under API keys. Open the Claude Console on the card takes you there.
- Paste it into API key.
- Click Save key. roofingBoss asks Anthropic to check the key before saving it.
The badge reads Key saved, and API key shows the key's last four characters. The full key isn't shown again. Saved says when and by whom, Last check when Anthropic last checked it, and Last used when the roadmap last used it.
- Test connection asks Anthropic to check the saved key again.
- Rotate key replaces it: paste the new key into New API key and click Save new key. The next update or review uses the new key. Then delete the old key in the Claude Console.
- Remove saved key deletes it from roofingBoss. The key keeps working in the Claude Console until you delete it there.
Needs attention means Anthropic turned the key down, or couldn't check it. The card says why. Paste a Claude Code sign-in token or an Admin API key and the card explains that it needs a regular API key. Not set up means a developer still has to finish setup on the server before a key can be saved.
CompanyCam
When a job in JobNimbus is linked to a CompanyCam project, a CompanyCam link appears on that job and its work orders, and opens the project's photos. See Jobs. That works without any setup in roofingBoss.
Open CompanyCam in the Integrations menu to see how many jobs are linked and how many photos are waiting. As the JobNimbus sync runs, a job's CompanyCam project is saved on roofingBoss's own copy of the job, so the link keeps working once JobNimbus is no longer the database. The Our project link card shows Jobs linked, Photos waiting, and where the API key comes from.
Admins can add a CompanyCam key so roofingBoss can talk to CompanyCam directly:
- Create an application key in the CompanyCam developer portal.
- Paste it into Application key and click Save key. roofingBoss tests the connection right away, and the badge reads Connected when the key works.
Click Test connection to check again, or Remove saved key to delete it. The key is saved in roofingBoss and isn't shown again.
The Photo webhook card gives admins a web address to add in CompanyCam as a webhook for photos, documents, and videos. Photos that arrive this way are counted under Photos waiting. roofingBoss doesn't download them or create CompanyCam projects yet.