ml-connector
Microsoft Dynamics 365 Business CentralPipedrive

Microsoft Dynamics 365 Business Central and Pipedrive integration

Microsoft Dynamics 365 Business Central runs finance, sales, and inventory. Pipedrive runs the sales pipeline. Connecting the two means a deal closed by the sales team becomes an order in the ERP without re-keying, and the customer, contact, and product records stay consistent across both systems. New organizations and persons in Pipedrive land as Business Central customers and contacts, and a won deal opens a draft sales order or invoice on the right account. ml-connector handles the different APIs and auth on each side and moves the data on a schedule and triggers you control.

How Microsoft Dynamics 365 Business Central works

Microsoft Dynamics 365 Business Central exposes its data through the Business Central API v2.0, a REST API built on OData v4. Every resource nests under a company in a tenant-specific environment URL, and authentication uses the OAuth 2.0 client credentials flow against Microsoft Entra ID with the application granted API.ReadWrite.All. Key entities include customers, items, sales orders, sales invoices, GL accounts, and dimensions, with sales invoices created as drafts and posted by a bound Microsoft.NAV.post action. Business Central pushes change signals through a subscription webhook API, but those notifications carry no payload, so the changed record must be fetched after each notification, and subscriptions expire every three days and need renewal.

How Pipedrive works

Pipedrive exposes its CRM data through a REST API across v1 and v2, returning JSON. Authentication is either a per-user API token sent as an x-api-token header or a three-legged OAuth 2.0 flow that returns a refreshable bearer token, with OAuth apps granted a higher burst rate. The relevant entities are deals, organizations, persons, and products, all readable and writable, using cursor pagination on v2 list endpoints. Pipedrive pushes events by webhook for added, updated, and deleted records, and v1 webhooks are signed with an HMAC-SHA256 signature over the raw body that must be verified before processing.

What moves between them

The main flow runs from Pipedrive into Microsoft Dynamics 365 Business Central. ml-connector upserts Pipedrive organizations as Business Central customers and Pipedrive persons as contacts, mirrors Pipedrive products to Business Central items, and converts a won Pipedrive deal into a draft sales order or sales invoice on the matched customer, with deal products becoming line items. Customer and item master changes can flow back from Business Central to Pipedrive so the sales team sees current accounts and catalog. The cadence is event-driven on the Pipedrive side, where webhooks fire the moment a deal is won or a contact changes, and scheduled polling on the Business Central side, since its webhooks only signal a change and the record must then be read.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Pipedrive side it uses the API token header or refreshes the OAuth bearer token, and verifies the HMAC-SHA256 signature on the raw webhook body before acting, rejecting bad signatures with 401. On the Business Central side it requests a Microsoft Entra client-credentials token, refreshes it on a 401, and targets the correct company in the configured environment. Organizations match to customers and persons to contacts by name and email so duplicates are not created, and products map to items by code or number. A won deal opens a draft sales invoice that is posted with the Microsoft.NAV.post bound action only when the flow is configured to post. Because Pipedrive custom fields come back as opaque hashed keys, ml-connector resolves them from the field-definition endpoints first. Business Central throttling returns HTTP 429 and Pipedrive returns 429 against a daily token budget, so requests back off with exponential delay and jitter, and the three-day Business Central webhook subscriptions are renewed before they expire so no change goes unseen.

A real-world example

A regional industrial-supply distributor with about 80 staff runs Microsoft Dynamics 365 Business Central for inventory, orders, and finance, while its sales team works deals in Pipedrive. Before the integration, every won deal was re-typed into Business Central as a sales order by hand, customer and contact details drifted between the CRM and the ERP, and order entry lagged the actual close by a day or more. With Pipedrive and Business Central connected, a won deal opens a draft sales order on the matched customer automatically, new organizations and persons sync as customers and contacts, and the product catalog stays aligned. Order entry happens at the moment of close and the duplicate data entry is gone.

What you can do

  • Turn a won Pipedrive deal into a draft Business Central sales order or sales invoice on the matched customer.
  • Upsert Pipedrive organizations and persons as Business Central customers and contacts without creating duplicates.
  • Mirror products between Pipedrive and Business Central items so deal lines reference valid catalog entries.
  • Bridge Pipedrive API token or OAuth with the Microsoft Entra client-credentials token, refreshing both as needed.
  • React to Pipedrive webhooks and poll Business Central on schedule, with retries and a full audit trail on every record.

Questions

Which direction does data move between Microsoft Dynamics 365 Business Central and Pipedrive?
The main flow is Pipedrive into Business Central. Won deals become draft sales orders or invoices, and organizations and persons sync as customers and contacts. Customer and item master data can also flow back to Pipedrive so the sales team sees current accounts and catalog, but Pipedrive has no invoice, payment, or GL objects, so financial postings stay in Business Central.
Does the integration use webhooks or polling?
It uses both. Pipedrive webhooks fire when a deal is won or a contact changes, and ml-connector verifies the HMAC-SHA256 signature on the raw body before acting. Business Central webhook notifications only signal that a record changed and carry no data, and they expire every three days, so ml-connector renews the subscriptions and polls Business Central to fetch the changed records.
How are customers and products matched so duplicates are not created?
Organizations match to Business Central customers and persons match to contacts by name and email, and Pipedrive products map to Business Central items by code or number. ml-connector searches for an existing record before creating one and upserts on a match. Pipedrive custom fields arrive as hashed keys, so it resolves them from the field-definition endpoints before mapping.

Related integrations

Connect Microsoft Dynamics 365 Business Central and Pipedrive

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started