Skip to Content
HelpProjectsCRM Syncing

Supported CRMs

ScopeStack supports syncing opportunities from common CRM tools to provide an easy way to get high-level customer information into the platform.

Once you have enabled CRM Opportunity Syncing on your account, you can find your opportunities under the drop-down menu on either a new project or the Project Overview page of an existing project.

On this screen: The Project Overview form includes a CRM Opportunity dropdown at the top of the project details section. Typing in the field searches your synced opportunities by name. Selecting one fills in the Project Name, Client, Sales Executive and Service Location fields for you. The Service Location works a little differently from the others: see How the Service Location is filled in below.

Once an opportunity is linked to a project, the CRM Opportunity field becomes read-only. Reloading the page does not re-pull anything from the CRM. To pick a different opportunity, use the remove control next to the field to unlink the current one, which makes the dropdown selectable again.

We support syncing opportunities from the following CRMs

  • Connectwise Manage
  • Salesforce
  • Hubspot
  • Microsoft Dynamics 365
  • Autotask by Datto

We offer a couple of additional enhancements for Connectwise Manage. You’ll be able to learn about those here.

You can find individual articles about setting up each connection: ConnectWise Manage, Salesforce, HubSpot, Microsoft Dynamics 365, and Autotask.

Fields a CRM Opportunity Updates in ScopeStack

When you select an opportunity from your CRM in ScopeStack, the following fields are updated:

Note: The Service Location row in each table below behaves differently from the others. It is filled in by your browser at the moment you pick the opportunity, and only saved if certain conditions are met. The ongoing background sync never writes an address onto a project. See How the Service Location is filled in.

How the Service Location is filled in

The Project Name, Client and Sales Executive come across as part of the opportunity link itself. The Service Location does not.

When you select an opportunity, ScopeStack copies the address from that opportunity into the Service Location fields on the screen in front of you. It is saved as a service location on the project only when you save, and only when:

  • the site name is filled in, and
  • either Remote location is checked, or the street, city and postal code are all filled in.

If the opportunity in your CRM has no address, or is missing one of those pieces, the fields stay blank and no service location is created. Nothing is lost in this case; the address simply was never added to the project. You can type it in on Project Overview and save, and it will stay.

The periodic background sync that keeps opportunities up to date never creates or updates a service location. If you change an address in your CRM after a project is already linked, that change will not appear on the project.

Note: For Dynamics 365 and Salesforce, the address is taken from the CRM account record, not the opportunity, so every opportunity under the same account brings across the same address. If your project is for a specific site, you will usually want to edit the Service Location on the project or add the site through Manage Service Locations. HubSpot likewise takes the address from the deal’s associated Company record. ConnectWise and Autotask pull a company or site address that can differ from one opportunity to the next.

Connectwise Manage Opportunities

Opportunity Sync

Connectwise Manage Fields becomes the following ScopeStack Field

  • Opportunity Summary: Project Name
  • Company: Client Name
  • Company Site on the Opportunity: Service Location
  • Sales Rep: Sales Executive

Revenue Sync

Scopestack creates a “forecast” with separate entries for Professional Services, Managed Services, and Product Revenue.

Dynamics 365 Opportunities

Opportunity Sync

Dynamics 365 Fields become the following ScopeStack Field

  • Topic: Project Name
  • Account: Client Name
  • Account’s Address: Service Location
  • Opportunity Owner: Sales Executive

Revenue Sync

ScopeStack will create a ‘quote’ if none exists, and then create a ‘quotedetail’ record on that quote with the following details:

Scopestack Fields becomes the following Dynamics 365 Fields

Total Contract Revenue: priceperunit

Total Contract Cost: msdyn_costamount

Total Contract Cost: msdyn_estimatedcost

Inclusion or Exclusions of Expenses: msdyn_includeexpens

Inclusion or Exclusions of Products: msdyn_includematerial

Fixed Fee or T&M Payment Term Selection: msdyn_billingmethod

Salesforce Opportunities

Opportunity Sync

Salesforce Fields become the following ScopeStack Fields

Opportunity: Project Name

Account Name: Client Name

Account’s Address: Service Location

Opportunity Owner: Sales Executive

Revenue Sync

The opportunity amount is updated with the Total Contract Revenue.

Autotask Opportunities

Opportunity Sync

Autotask Fields become the following ScopeStack Fields

Opportunity Title: Project Name

Opportunity Contact Name: Sales Executive

Opportunity Company Name: Client Name

Company Address: Service Location

Revenue Sync

ScopeStack Fields become the following Autotask Fields

Project.contract_revenue: Opportunity.amount

Project.contract_cost: Opportunity.cost

Project.mrr_terms: Opportunity.totalAmountMonths

Project.ps_revenue*: Opportunity.oneTimeRevenue

Project.ps_cost*: Opportunity.oneTimeCost

Project.ms_revenue**: Opportunity.xxxRevenue

Project.ms_cost**: Opportunity.xxxCost

* only for costs that are not amortized over the length of the MS contract

** xxxRevenue/xxxCost is monthlyRevenue/quarterlyRevenue/yearlyRevenue as dictated by the Project.payment_frequency value

Hubspot Opportunities

Opportunity Sync

Hubspot Fields become the following ScopeStack Fields

deal.name: Project Name

owner.name: Sales Executive

deal.company.name: Client Name

company address info: Service Location

Deals without an associated Company

Both the client name and the service location come from the deal’s associated Company record. If a deal has no Company, ScopeStack falls back to using the deal’s own name as the client name, and no address is carried across.

That fallback is quiet, and it compounds. Clients are matched by name, so a deal named “Q3 Firewall Refresh” creates a client called “Q3 Firewall Refresh” rather than attaching to the real customer. A second deal for that same customer, under a different deal name, creates a second client. Over time you get a client list full of one-off entries that look like deals, and revenue that should roll up under one customer is spread across several.

This is a different issue from the concurrent-sync duplication fixed in April 2026 — that one was a timing bug, this one is the missing-Company fallback and is still current behavior.

Associate a Company with the deal before syncing it. If you already have clients that were created this way, they have to be corrected in ScopeStack — re-syncing the deal after adding a Company does not merge the old client record away.

Revenue Sync

The opportunity amount is updated with the Total Contract Revenue.

Revenue Information Syncing from ScopeStack back to your CRM

On this screen: On an approved project, the gear icon menu next to the project name includes an Update CRM option. Clicking it sends the current revenue totals back to the linked CRM opportunity.

We support syncing back the projected revenue to the opportunity in your CRM. To complete this update, press the Update CRM button next to the project name on an approved project.

We also automatically update the revenue when a project is submitted for approval in ScopeStack. In most CRMs, you have the option to skip this automated update if you would like. You can check this option in the Connected App settings area for your CRM.

Syncing Frequency

We sync CRM opportunities every hour, on the hour:

  • Open opportunities: synced at half past the hour (e.g., 10:30 am, 11:30 am).
  • Closed opportunities: synced at the top of the hour (e.g., 11:00 am, 12:00 pm).

Recently Changed Opportunities

To optimize performance, we do not reprocess all opportunities every cycle. Instead, each sync picks up where the last successful one finished.

  • Normal operation: we fetch opportunities created or updated since the last successful sync, minus a one-hour overlap so nothing falls through the gap between runs.
  • First sync, or after a connection is reset: there is no previous sync to resume from, so we fall back to the last 3 days.
  • There is no fixed rolling window. If a sync is interrupted for a long stretch, the next successful run resumes from where it left off rather than from a fixed number of days back.

Opportunity State

How we determine whether an opportunity is “open” or “closed” depends on your CRM configuration:

  • Default behavior: we rely on the CRM’s native “closed” status field.
  • Custom configuration: you can define which statuses or stages should be considered “open.” In this case, any opportunity not in one of the configured statuses is treated as “closed.”

Closed Flag in ScopeStack

Each synced opportunity in ScopeStack carries a closed flag:

  • If the closed flag = false → the opportunity appears in the CRM Opportunity dropdown when creating or updating a project.
  • If the closed flag = true → the opportunity will not appear in the dropdown.

Once a project has been linked to a CRM opportunity, the linked opportunity will continue to display in the project even if it later becomes “closed.”

Switching CRM providers

You can move from one CRM to another (for example Salesforce to HubSpot) yourself:

  1. Add the new CRM connection under Settings > Connected Apps (see that provider’s configuration guide). HubSpot connects with a Private App token and activates once the token validates.
  2. Once the new connection is syncing, Disable the old CRM connection so it stops importing. Disabling does not delete anything, so your existing opportunities and the projects linked to them stay in place.

Existing projects are not automatically remapped. Switching the connection does not move the opportunity links on projects you have already scoped, so those projects stay linked to their opportunities from the old CRM. Remapping existing projects onto the new CRM’s deals is a data migration rather than a self-serve step, and it should not be attempted through the API. If you need existing projects carried over, reach out and our team will help you plan it.

Note that HubSpot’s sync imports open deals, so closed HubSpot deals (including the counterparts of opportunities that were already closed in your previous CRM) are not imported automatically.

New to ScopeStack?

ScopeStack automates scoping, pricing, and SOW generation for IT services teams. See how it fits your process.

Book a demoBrowse the docs
Last updated on