Integrations and API
August 23, 2026

Connecting your CRM: HubSpot, Salesforce, Pipedrive, and Dynamics

Pull your pipeline into Synthelio for forecasting, and link deals to engagements.

Synthelio connects to HubSpot, Salesforce, Pipedrive, and Microsoft Dynamics 365. The integration pulls your pipeline into Synthelio so that deals you have not won yet can be turned into forecasted revenue and forward capacity, alongside the engagements you are already delivering.

That is the point of it. Current utilization tells you about the past. Deciding whether to hire, and when, requires knowing what is likely to land and roughly when it starts, and that information lives in your CRM rather than in your delivery system.

One CRM at a time

A workspace runs one CRM provider. This is not a limitation you should try to work around, and it reflects how firms in this category actually operate: pipeline lives in one place, and two sources of truth for the same deal is a reporting problem rather than a feature.

Each provider has its own sync toggle, so you can turn a connection off without deleting its credentials.

What the sync pulls

Deals, along with the companies and people attached to them. Salesforce and Dynamics call these opportunities rather than deals, and Pipedrive calls the companies organizations and the people persons. Synthelio normalizes all of it into one shape, so a deal from any provider looks the same once it is in.

The sync runs automatically. You can also trigger it by hand with Sync CRM Data, and the settings page shows when it last ran. Use Test Connection after entering credentials rather than waiting for the next scheduled run to find out you pasted the wrong token.

Connecting HubSpot

HubSpot uses a legacy app token. In HubSpot, go to Settings, then Integrations, then Legacy Apps, then create a legacy app. HubSpot renamed private apps to legacy apps, so older documentation and the naming in your own account may disagree.

The token needs three read scopes: crm.objects.deals.read, crm.objects.companies.read, and crm.objects.contacts.read. Copy the token into the Access Token field in Synthelio.

Connecting Salesforce

Salesforce needs a connected app plus a user login. In Salesforce, go to Setup, then Apps, then App Manager, then New Connected App. Enable OAuth settings with the callback URL Synthelio shows on the settings page, select the api, refresh_token, and offline_access scopes, then save and copy the consumer key and consumer secret.

Two OAuth policies have to be set or the connection will fail. Under Setup, then OAuth and OpenID Connect Settings, enable Allow OAuth Username-Password Flows. Then on the connected app itself, under Manage, then Edit Policies, set permitted users to allow self-authorization and relax IP restrictions.

Synthelio then needs the consumer key, the consumer secret, your Salesforce username, your password and security token concatenated into a single string, and your My Domain instance URL. Most orgs use My Domain, and you will find the URL under Setup, then My Domain.

If you see a username-password flow disabled error, the global setting in step one is the cause. It is the single most common failure in this setup, because the policy on the connected app looks correct while the org-level switch is still off.

Connecting Pipedrive

The simplest of the four. In Pipedrive, go to Settings, then Personal preferences, then API, and copy your API token into Synthelio. That token carries access to organizations, persons, and deals.

Worth knowing: a Pipedrive API token belongs to a user rather than to the company, and it inherits that user's visibility. If you generate it from an account that cannot see the whole pipeline, the sync will not see the whole pipeline either.

Connecting Dynamics 365

Dynamics uses an Azure AD app registration. In the Azure portal, go to Azure Active Directory, then App Registrations, then New Registration, and give it a name. Copy the application client ID and the directory tenant ID. Under Certificates and Secrets, create a new client secret and copy the value immediately, because Azure will not show it again.

Then under API Permissions, add a permission for Dynamics CRM, delegated, user_impersonation. For server-to-server access, use application permissions instead.

Synthelio needs your environment URL, the tenant ID, the application client ID, and the client secret.

Field mapping for forecasting

Two optional CRM fields make the forecast meaningful, and without them a deal is just a number with no position in time.

Project kick-off date, a date field, and months of delivery, a number field. Together they let Synthelio spread a deal's expected revenue across the months it would actually be delivered in, weighted by probability or not, rather than dropping the whole value into the month the deal closes.

The difference matters. A 600,000 deal closing in November is not November revenue. If it kicks off in January and runs six months, it is roughly 100,000 a month from January through June, and it is six months of capacity you need to staff. Only the second version tells you anything about hiring.

There is also an optional business unit field. Its value is matched by name against your Synthelio units, and any deal that does not match rolls up to the top-level unit.

Linking deals to engagements

A CRM deal connects to Synthelio work through a statement of work. Once a SOW carries the deal identifier, Synthelio links that deal back to its engagement and account, and you can filter your pipeline by whether a deal is already linked or still unattached.

Unattached won deals are worth reviewing regularly. A closed deal with no engagement behind it usually means the work started and nobody set it up in the system, which is exactly the situation where hours get logged nowhere and margin becomes unmeasurable.

Pushing SOW amounts back to HubSpot

The HubSpot connection can write in one narrow direction. Once a day, any statement of work with an automatic amount, meaning one recalculated from its billing milestones, updates the amount on its linked HubSpot deal.

The limits are deliberate. Only the deal amount is written, never any other field. It only happens when the SOW and deal currencies match. And it only applies to automatic amounts, so a SOW with a manually entered contract value is left alone.

This requires the crm.objects.deals.write scope on your token. If your existing token is read-only, regenerate it in HubSpot with that scope and save it again in Synthelio. You can trigger the push manually with Push now, and the settings page reports how many deals were updated, skipped, and failed on the last run.

Common questions

Can I connect two CRMs at once? No. A workspace runs one provider.

Does Synthelio write to my CRM? Only the HubSpot deal amount push described above, and only if you turn it on. Everything else is read-only.

What happens to deals I never link? They stay in the pipeline view and count toward forecast, but they have no engagement, no hours, and no margin. That is correct for open deals and a warning sign for won ones.

Why do my stage names look different from another provider's? Stage vocabulary belongs to your CRM and is not translated. Filtering by stage uses your own stage names.

Can’t find what you’re looking for?

Tell us what you need. We will point you to the answer or write the article.

Contact Support