PSA Sync Issues

Autotask, ConnectWise, and HaloPSA synchronization errors and resolution steps.

Written By Victor Raessen

Last updated 8 days ago

PSA Sync Issues

Troubleshooting data synchronization problems between Salesbuildr and your PSA (Autotask, ConnectWise Manage, HaloPSA).

Checking sync status

The primary place to monitor and resolve sync issues is Settings > Tools > Issues. Each failed sync creates an issue with:

  • The entity that failed (quote, company, contact, opportunity)

  • An error message explaining what went wrong

  • Options to Retry, Dismiss, or investigate further

Successful syncs automatically clear their corresponding issues.

Autotask: BillingCode errors

The most common Autotask error. Appears when a product category in Salesbuildr is not mapped to a valid Autotask billing code.

  • Symptom: "BillingCode does not exist or is invalid"

  • Cause: The category's billing code mapping is missing or points to a deleted/inactive billing code in Autotask

  • Fix: Go to Settings > Integrations > Autotask > Category Billing Codes and verify each category has a valid billing code assigned

Autotask: Entity not found

Error

Cause

Fix

"Opportunity was not found in Autotask"

The linked opportunity was deleted or deactivated in Autotask

Verify the opportunity exists and is active in Autotask, then retry

"Company has no external identifier"

The company hasn't been synced to Autotask yet

Sync the company first (it should happen automatically on next action)

"Contact has no external identifier"

The contact hasn't been synced to Autotask yet

Sync the contact first, or check that the contact is linked to the right company

"companyID is not associated with contactID"

The contact and company are linked in Salesbuildr but not in Autotask

Verify the association in Autotask, then retry

Autotask: Authentication errors

  • "Autotask authentication error: please verify your credentials" — The Autotask API credentials have expired or been changed. Re-enter them at Settings > Integrations > Autotask.

  • Connection reset errors — Temporary network issues. Salesbuildr automatically retries up to 2 times. If persistent, check Autotask service status.

Autotask: Opportunity status/stage not syncing from Autotask to Salesbuildr

Salesbuildr does not sync Autotask opportunity changes in real time. Changes made in Autotask appear after the next scheduled pull, subject to the fetch window below.

How often Salesbuildr checks Autotask

A background job runs every 10 minutes and queries Autotask for opportunities whose lastActivity or createDate falls in an incremental time window — not every opportunity in the PSA. There is no real-time webhook for Autotask opportunities.

After each run, expect up to ~15 minutes before a qualifying change appears in Salesbuildr: the 10-minute schedule plus a built-in 5-minute buffer at the end of each fetch window (so Salesbuildr does not immediately re-read a record it just pushed to Autotask).

What gets pulled automatically

The recurring import has no status filter — it returns opportunities of any Autotask status (Active, Not Ready to Buy, Lost, Closed, Implemented) when their timestamps fall in the window:

TriggerSynced by recurring import?

lastActivity in window

Yes — status transitions, stage/revenue/probability updates, and other edits on already-linked opportunities

createDate in window

Yes — newly created opportunities (typically Active in Autotask)

There is no filter by company, pipeline stage, or category in the Autotask query. Each matched row is imported only if its linked company, contact (if any), and owner already exist in Salesbuildr.

On-demand import: Opportunities → Import from Autotask remains available to pull a specific row immediately, outside the scheduled window.

Salesbuildr → Autotask pushes still happen immediately when the user edits in Salesbuildr.

Why not real time?

Autotask does not support opportunity webhooks. The 10-minute poll with a watermark window keeps API usage within Autotask's 10,000 calls/hour limit while still covering active pipeline work incrementally.

Services Showing No Name After Autotask Sync

If your services appear in Salesbuildr without a name — even though they have names in Autotask — this is likely caused by how Salesbuildr handles the Manufacturer Part Number (MPN) field during synchronization. This article explains why it happens and how to fix it.


Why Does This Happen?

When services sync from Autotask to Salesbuildr, if the service's MPN is identical to its name, Salesbuildr automatically strips out the name. This is intentional default behaviour — it prevents quote recipients from seeing the MPN and using it to search for the product elsewhere (commonly known as "price shopping").

The side effect is that if your Autotask services use the MPN as the display name, those services will appear in Salesbuildr with a blank name field. Any name you manually add in Salesbuildr will also be overwritten the next time a sync runs, which is why the name keeps disappearing.


How to Fix It

You can resolve this by enabling a setting in Salesbuildr that allows the MPN to be used as the service name.

  1. In Salesbuildr, go to Settings.

  2. Select Integrations from the left-hand menu.

  3. Click on Autotask.

  4. Locate the flag labelled Allow MPN as name (or similar) and enable it.

  5. Save your changes.

Once this setting is enabled, services that sync from Autotask will retain their name even when it matches the MPN.


Things to Keep in Mind

Note: Manually adding a name directly to a service in Salesbuildr is not a permanent fix. Because the sync runs on a recurring schedule, any manually entered name will be overwritten the next time the sync runs — unless the setting above is enabled.

Tip: Before enabling this setting, consider whether you want customers to see MPN values on quotes. If price shopping is a concern for your business, you may want to rename services in Autotask to use a customer-friendly description rather than the MPN, so that the name that syncs across is one you're comfortable sharing.


Still Having Issues?

If services are still showing without a name after enabling the setting and waiting for the next sync cycle, check the following:

  • Confirm the setting was saved successfully by navigating back to Settings > Integrations > Autotask.

  • Allow enough time for the next scheduled sync to complete.

  • If the issue persists, contact Salesbuildr support with the name of the affected service and your Autotask account details.

ConnectWise: Rate limit errors

  • "ConnectWise API rate limit exceeded" — Salesbuildr hit the ConnectWise API rate limit. The system retries automatically with exponential backoff (5s, 10s, 20s, up to 60s). If the error persists after 4 retries, wait a few minutes and retry manually.

General sync failures

  • "Already synchronizing" — The entity is currently being synced. Wait a few minutes and check the status again.

  • Some line items not synchronized — The quote synced but individual items failed. This is a warning, not a critical error. Check which items failed and verify their product mappings.

  • "Payment term/type is deleted" — A referenced payment term or type was deleted in the PSA. Select a different payment term in the quote settings.

For PSA-specific configuration, see Autotask Configuration, ConnectWise Configuration, or HaloPSA Configuration.

ConnectWise Sync Error: "catalogItem object is invalid" — Inactive Category Mapping

When syncing a quote to ConnectWise, you may encounter an error message that reads:

Category 80 in ConnectWise is disabled. Re-map this product's category in Settings → Integrations → ConnectWise → Categories.

Older errors show the raw message from ConnectWise instead:

catalogItem object is invalid. [ID] is an inactive

Both mean the same thing, and neither is caused by a problem with the product itself: a Salesbuildr product category is mapped to a category that has been disabled or deleted inside ConnectWise. This guide explains why it happens and how to resolve it.


Why this happens

When a ConnectWise product category is deactivated, ConnectWise stops returning it via its API. Salesbuildr can no longer read the category's details — but the mapping you previously created is still saved. Every sync that references that category keeps failing until the mapping is corrected.

Salesbuildr detects these mappings and shows them directly on the category mapping page, so you can fix them yourself.


How to resolve it

Step 1: Open the ConnectWise category mapping page

Go to Settings → Integrations → ConnectWise → Categories and select the Map categories tab.

Step 2: Find the highlighted mappings

Mappings pointing at a disabled or deleted ConnectWise category are highlighted at the top of the mapping table and labelled Inactive or deleted. If the category was deleted from ConnectWise outright, the row reads Unknown ConnectWise category (ID 80), because the name is no longer available to look up.

A panel above the table repeats the steps below.

Step 3: Re-map the affected Salesbuildr category first

In the mapping table underneath the highlighted rows, select an active ConnectWise category for each affected Salesbuildr category. Do this before removing anything — removing the old mapping on its own does not restore sync.

Step 4: Remove the inactive mapping

Click the trash icon on the highlighted row. The row disappears from the list, but the change is not stored yet.

Step 5: Click Save

The removals and the new mappings are applied together.

Step 6: Retry the sync

Attempt to sync your quote again. The error should no longer appear.


Preventing this in the future

Set a Default category on the Defaults tab of the same page. When a mapped category turns out to be disabled, Salesbuildr syncs the product into the default category rather than failing. The mapping still needs correcting, but your sync keeps working in the meantime.

Tip: Any time you disable or delete a product category inside ConnectWise, audit your category mappings in Salesbuildr straight away. Go to Settings → Integrations → ConnectWise → Categories and update any mappings that referenced that category before your next sync attempt.


Still seeing the error?

If the error persists after re-mapping, the affected product may belong to a subcategory or a second category with an inactive mapping. Check all category assignments on the product and repeat the steps above, and check the Map Root Category tab as well — root category mappings can point at disabled categories too. If it still fails, reach out to Salesbuildr support for assistance.

See also