ml-connector
Microsoft Dynamics NAVZoho CRM

Microsoft Dynamics NAV and Zoho CRM integration

Dynamics NAV runs operations and finance for small and mid-size businesses. Zoho CRM manages the sales pipeline, customer relationships, and deal tracking. Connecting the two keeps your customer master aligned, gives sales visibility into order fulfillment and billing status, and eliminates manual re-keying between systems. Contacts created in Zoho flow into NAV as customers and vendors, and sales orders and invoices posted in NAV automatically appear in Zoho for the sales team to track.

How Microsoft Dynamics NAV works

Microsoft Dynamics NAV (cloud as Business Central online, or on-premises) exposes vendors, customers, purchase orders, sales orders, invoices, items, employees, journal entries, and general ledger accounts through OData v4 REST or SOAP web services. Authentication uses OAuth 2.0 client credentials via Microsoft Entra ID (required for cloud, recommended for on-premises) or Basic auth with a web service access key (legacy). Dynamics NAV supports webhooks for push notifications on record changes (3-day subscription expiry requiring automatic renewal) and also supports polling for systems or records outside the webhook scope.

How Zoho CRM works

Zoho CRM is a cloud-based CRM exposing leads, contacts, accounts, deals, sales orders, quotes, invoices, vendors, and products through a REST API. Authentication uses OAuth 2.0 Authorization Code flow with offline_access for long-lived refresh tokens, or Client Credentials for headless integrations. Zoho CRM sends push notifications on create, edit, and delete events (notification channels expire after approximately 1 day and must be renewed). Access tokens expire after 1 hour and require refresh. Webhook notifications contain only record IDs, not full payloads, so ml-connector must fetch the full record from Zoho after receiving a notification.

What moves between them

Customer and contact records flow bidirectionally. Zoho accounts and contacts push to Dynamics NAV as customer and vendor records via webhook. Dynamics NAV sales orders and invoices pull into Zoho on a configurable schedule so the sales team can see fulfillment and billing status. Item masters sync from NAV to Zoho so quotes and orders reference the same product database. Because NAV GL accounts are read-only and immutable once posted, Zoho invoices do not flow back into NAV's general ledger.

How ml-connector handles it

ml-connector stores OAuth credentials encrypted and manages token refresh on both sides. Zoho access tokens expire after 1 hour, so ml-connector tracks expiry and refreshes before each call; Zoho's api_domain field in the token response is also stored and used as the base URL for subsequent calls, since Zoho region-locks the domain. Zoho notification channels expire after roughly 1 day and must be renewed via a PATCH call before expiry, so ml-connector monitors channel age and renews proactively. Zoho webhook payloads contain only record IDs, so ml-connector immediately fetches the full record via GET after a notification arrives. Dynamics NAV webhook subscriptions also expire (3 days for cloud) and are renewed before expiry. For on-premises NAV, OData port 7048 must be open through the firewall and OData services must be enabled via the NAV Server Administration tool. Customer and contact mapping validates that NAV customer and vendor records exist before creating corresponding Zoho accounts and contacts. Every record carries an audit entry with its source system, timestamp, and status.

A real-world example

A mid-sized business process outsourcing firm runs Dynamics NAV for accounting, procurement, and operations, and uses Zoho CRM to track their services sales pipeline and customer relationships. Before the integration, sales reps manually entered customer names from NAV into Zoho when creating new deals, and finance staff manually recorded completed invoices from NAV into Zoho customer records to track payment status. With NAV and Zoho CRM connected, every customer created in NAV automatically appears in Zoho, sales reps can link deals to existing customer records without re-typing, and invoices posted in NAV flow into Zoho so the sales team and finance team share the same customer view and billing history.

What you can do

  • Sync customer and contact master data bidirectionally so Dynamics NAV and Zoho CRM share a single customer view.
  • Push Dynamics NAV sales orders and invoices into Zoho so the sales team can track order fulfillment and billing status.
  • Map NAV items to Zoho products so quotes and orders reference the same product database.
  • Refresh Zoho access tokens automatically before expiry and renew webhook notification channels before they lapse.
  • Maintain a full audit trail and support replay of failed records when downstream systems become available.

Questions

How does the integration handle Zoho's short-lived tokens and channel expiry?
Zoho access tokens expire after 1 hour, so ml-connector tracks expiry and refreshes the token before each call using the refresh_token. Zoho also returns an api_domain field in the token response that must be used as the base URL for subsequent calls, since Zoho region-locks domains. Notification channels expire after roughly 1 day and ml-connector proactively renews them via PATCH before expiry so webhook delivery does not lapse.
Why does ml-connector fetch the full record after receiving a Zoho webhook?
Zoho webhook notifications contain only record IDs, not the full record payload. ml-connector immediately fetches the full record via a GET request so it has all fields needed for mapping and validation before pushing the record into Dynamics NAV. This also ensures the record state matches the source of truth in Zoho at the time of synchronization.
What about on-premises Dynamics NAV deployment? Does the integration work the same way?
Yes, but on-premises NAV requires two setup steps: OData port 7048 must be open through the firewall so ml-connector can reach the NAV instance, and OData and API services must be enabled via the NAV Server Administration tool by an administrator. Once enabled, on-premises NAV uses the same OAuth 2.0 client credentials or Basic auth as cloud Business Central, and ml-connector handles webhook subscriptions and token refresh the same way.

Related integrations

Connect Microsoft Dynamics NAV and Zoho CRM

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

Get started