{
  "slug": "dynamics-365-sales",
  "url": "https://apps.sectorgrowth.com/integrations/dynamics-365-sales/",
  "name": "Dynamics 365 Sales",
  "vendor": "Microsoft",
  "aliases": [
    "Microsoft Dynamics 365 Sales",
    "Dynamics CRM",
    "Microsoft Dynamics CRM",
    "Dynamics 365 Customer Engagement",
    "D365 Sales"
  ],
  "website": "https://www.microsoft.com/en-us/dynamics-365/products/sales",
  "category": {
    "slug": "sales-and-marketing-platforms",
    "name": "Sales and marketing platforms",
    "url": "https://apps.sectorgrowth.com/categories/sales-and-marketing-platforms/"
  },
  "summary": "Dynamics 365 Sales keeps leads, opportunities and accounts in Dataverse. HubSpot's own app syncs them both ways; the real work is ownership and matching.",
  "answer": "Yes. Dynamics 365 Sales connects through HubSpot's own Microsoft Dynamics 365 app, listed in the HubSpot App Marketplace as of September 2026, which syncs accounts, contacts, leads, opportunities and activities one way or both ways. We recommend configuring it, 8 to 24 hours of work rather than a build. A custom API integration over the Dataverse Web API joins it for an on-premises server, which the app does not reach, or for matching rules its mapping cannot express.",
  "nativeApp": {
    "status": "hubspot-built",
    "name": "Microsoft Dynamics 365",
    "developer": "HubSpot",
    "verifiedAt": "2026-09-28"
  },
  "api": {
    "style": "rest",
    "auth": "oauth2",
    "webhooks": "yes",
    "changedSince": "yes",
    "sandbox": "yes",
    "rateLimit": "6,000 requests per user in a five minute sliding window on each web server, with 20 minutes of combined execution time and 52 concurrent requests",
    "docsUrl": "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/overview"
  },
  "objects": [
    {
      "source": "Account",
      "hubspot": "company",
      "direction": "two_way",
      "key": "Company name or domain for the first match, then the paired record ids",
      "notes": "Once paired, a renamed account stays matched to its HubSpot company."
    },
    {
      "source": "Contact",
      "hubspot": "contact",
      "direction": "two_way",
      "key": "Email for the first match, then the paired record ids"
    },
    {
      "source": "Lead",
      "hubspot": "contact",
      "direction": "two_way",
      "key": "Email, the same key the contact table uses",
      "notes": "A person held as both a lead and a contact competes for one HubSpot record."
    },
    {
      "source": "Opportunity",
      "hubspot": "deal",
      "direction": "two_way",
      "key": "Paired record ids, with pipelines and stages mapped by label",
      "notes": "Only opportunities in mapped stages sync at all."
    },
    {
      "source": "Task and appointment",
      "hubspot": "engagement",
      "direction": "two_way",
      "key": "Paired record ids, carried by the associated contact or deal",
      "notes": "A task tied to a Dynamics lead moves one way, into HubSpot."
    },
    {
      "source": "Phone call and email",
      "hubspot": "engagement",
      "direction": "to_hubspot",
      "key": "Paired record ids"
    },
    {
      "source": "Custom table",
      "hubspot": "custom",
      "direction": "two_way",
      "key": "Paired record ids, after a first match on a field agreed in setup",
      "notes": "Needs an Enterprise subscription on the HubSpot side."
    }
  ],
  "approaches": [
    {
      "kind": "native",
      "fit": "recommended",
      "why": "HubSpot builds and supports the Dynamics 365 app, which carries the core sales tables and their activities in the direction you set per table, and can raise a Dynamics sales order from a HubSpot deal without code."
    },
    {
      "kind": "custom",
      "fit": "possible",
      "why": "A service over the Dataverse Web API earns its cost for an on-premises Customer Engagement server, which the app cannot reach, and for match keys or filters that email, name and domain cannot express."
    },
    {
      "kind": "ipaas",
      "fit": "avoid",
      "why": "Each flow on a per-task platform signs in as one Dataverse user, so its traffic lands on that user's service protection budget, and it bills per record for data the app already moves."
    }
  ],
  "connectionMethods": [
    "api"
  ],
  "effort": {
    "discoveryHours": [
      4,
      8
    ],
    "buildHours": [
      8,
      24
    ],
    "buildBand": "8 to 24 hours",
    "typicalElapsed": "1 to 2 weeks"
  },
  "pattern": "polling-watermark",
  "faqs": [
    {
      "q": "Does HubSpot's Microsoft Dynamics 365 app work with an on-premises Dynamics server?",
      "a": "No. HubSpot's own listing for the app says it supports only cloud domains hosted on dynamics.com, and setup asks for your Microsoft Dynamics 365 subdomain. An organization running Dynamics 365 Customer Engagement on its own servers needs a different route, which we scope as a custom API integration once we know the server version and how it is reached from outside the network."
    },
    {
      "q": "How quickly does a Dynamics 365 change show up in HubSpot?",
      "a": "HubSpot's data sync documentation says records sync within ten minutes of a change once the initial sync is complete, and that HubSpot checks its own side for changes every five minutes. The initial sync is slower: it indexes every record in both systems, and HubSpot warns that a sync over millions of records can take several days. Saving the sync settings starts that initial sync again."
    },
    {
      "q": "Which Dynamics 365 and HubSpot subscriptions does the HubSpot app need?",
      "a": "HubSpot's listing asks for Dynamics 365 Sales Professional, Sales Enterprise or Sales Premium. On the HubSpot side the app runs on every plan, custom field mappings need a paid Data Hub subscription, custom object sync needs Enterprise, and creating sales orders from a workflow needs Professional or Enterprise. Installing it takes Super Admin or App Marketplace Access in HubSpot, and write permission in Dynamics for any two-way table."
    },
    {
      "q": "Can a HubSpot deal create a sales order in Dynamics 365?",
      "a": "Yes. HubSpot's app adds a Sales Orders card to the deal record and an action for deal-based workflows, and either one creates the order in Dynamics along with a HubSpot order associated to the deal. Configure the Dynamics sales order to HubSpot order sync first, or no HubSpot order appears. Changing a line item price on the deal afterwards does not update the order in Dynamics."
    },
    {
      "q": "Can sellers see HubSpot activity without leaving Dynamics 365?",
      "a": "Yes, through HubSpot Embed, which the app adds to a Dynamics form as a web resource. It shows the HubSpot timeline, properties and workflow enrolments for a contact, company or deal, and lets a seller book a meeting or enrol a contact in a sequence. Each seller has to be a user in both systems, logged in to HubSpot with permission to view records."
    },
    {
      "q": "How does HubSpot decide which Dynamics 365 value wins a conflict?",
      "a": "Each table's sync has a data conflict setting that names a default app, and that app's value overwrites the other when the two disagree. If the default app holds no value for a field, nothing changes on the other side. The setting never overrides the sync direction, so a one-way table still moves one way. We choose the winner table by table in discovery."
    },
    {
      "q": "Does a custom Dynamics 365 integration count against Microsoft's API limits?",
      "a": "Yes, on two levels. Service protection limits apply per user on each web server: 6,000 requests and 20 minutes of combined execution time in a five minute sliding window, and 52 concurrent requests. Separately, application users draw on a tenant pool of 500,000 requests a day plus 5,000 for each Dynamics 365 Enterprise or Professional user licence. A throttled request returns 429 with a Retry-After header, which our service honours."
    },
    {
      "q": "What does a Dynamics 365 Sales and HubSpot setup take in hours?",
      "a": "Plan on 4 to 8 hours of discovery and 8 to 24 hours of configuration: the table list, the lead and contact decision, owners provisioned on both sides, pipelines and stages mapped by label, and a filtered first sync checked before the full one. A custom addition for an on-premises server or unusual matching is a separate build, which we scope at 70 to 150 hours."
    }
  ],
  "sections": [
    {
      "depth": 2,
      "text": "Why teams connect Dynamics 365 Sales to HubSpot",
      "anchor": "#why-teams-connect-dynamics-365-sales-to-hubspot",
      "url": "https://apps.sectorgrowth.com/integrations/dynamics-365-sales/#why-teams-connect-dynamics-365-sales-to-hubspot"
    },
    {
      "depth": 2,
      "text": "What syncs",
      "anchor": "#what-syncs",
      "url": "https://apps.sectorgrowth.com/integrations/dynamics-365-sales/#what-syncs"
    },
    {
      "depth": 2,
      "text": "Architecture",
      "anchor": "#architecture",
      "url": "https://apps.sectorgrowth.com/integrations/dynamics-365-sales/#architecture"
    },
    {
      "depth": 2,
      "text": "Three ways to connect",
      "anchor": "#three-ways-to-connect",
      "url": "https://apps.sectorgrowth.com/integrations/dynamics-365-sales/#three-ways-to-connect"
    },
    {
      "depth": 2,
      "text": "What breaks and how we prevent it",
      "anchor": "#what-breaks-and-how-we-prevent-it",
      "url": "https://apps.sectorgrowth.com/integrations/dynamics-365-sales/#what-breaks-and-how-we-prevent-it"
    },
    {
      "depth": 3,
      "text": "Leads and contacts sharing an address",
      "anchor": "#leads-and-contacts-sharing-an-address",
      "url": "https://apps.sectorgrowth.com/integrations/dynamics-365-sales/#leads-and-contacts-sharing-an-address"
    },
    {
      "depth": 3,
      "text": "Saving a mapping restarts the sync",
      "anchor": "#saving-a-mapping-restarts-the-sync",
      "url": "https://apps.sectorgrowth.com/integrations/dynamics-365-sales/#saving-a-mapping-restarts-the-sync"
    },
    {
      "depth": 3,
      "text": "Owners missing on one side",
      "anchor": "#owners-missing-on-one-side",
      "url": "https://apps.sectorgrowth.com/integrations/dynamics-365-sales/#owners-missing-on-one-side"
    },
    {
      "depth": 3,
      "text": "Delta links older than seven days",
      "anchor": "#delta-links-older-than-seven-days",
      "url": "https://apps.sectorgrowth.com/integrations/dynamics-365-sales/#delta-links-older-than-seven-days"
    },
    {
      "depth": 2,
      "text": "Our approach",
      "anchor": "#our-approach",
      "url": "https://apps.sectorgrowth.com/integrations/dynamics-365-sales/#our-approach"
    }
  ],
  "caseStudies": [],
  "guides": [
    "https://apps.sectorgrowth.com/guides/migration-or-integration/",
    "https://apps.sectorgrowth.com/guides/choose-a-hubspot-integration-approach/"
  ],
  "status": "published",
  "verifiedAt": "2026-09-28",
  "updatedAt": "2026-09-28",
  "authors": [
    {
      "name": "Prash",
      "role": "Lead of Technical Integrations and AI Solutions"
    }
  ],
  "sources": [
    {
      "title": "Connect HubSpot and Microsoft Dynamics 365",
      "url": "https://knowledge.hubspot.com/integrations/connect-hubspot-and-microsoft-dynamics-365"
    },
    {
      "title": "Microsoft Dynamics 365 - CRM App for HubSpot",
      "url": "https://ecosystem.hubspot.com/marketplace/listing/microsoft-dynamics-365-235999"
    },
    {
      "title": "Connect and use HubSpot data sync",
      "url": "https://knowledge.hubspot.com/integrations/connect-and-use-hubspot-data-sync"
    },
    {
      "title": "Match records in data sync",
      "url": "https://knowledge.hubspot.com/integrations/match-records-in-data-sync"
    },
    {
      "title": "Understand your data sync field mappings",
      "url": "https://knowledge.hubspot.com/integrations/understand-your-data-sync-field-mappings"
    },
    {
      "title": "Sync custom objects between HubSpot and data sync apps",
      "url": "https://knowledge.hubspot.com/integrations/sync-custom-objects-between-hubspot-and-data-sync-apps"
    },
    {
      "title": "Embed HubSpot data into a Microsoft Dynamics 365 app",
      "url": "https://knowledge.hubspot.com/integrations/embed-hubspot-data-into-a-microsoft-dynamics-365-app"
    },
    {
      "title": "Use OAuth authentication with Microsoft Dataverse",
      "url": "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/authenticate-oauth"
    },
    {
      "title": "Service protection API limits",
      "url": "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/api-limits"
    },
    {
      "title": "Requests limits and allocations",
      "url": "https://learn.microsoft.com/en-us/power-platform/admin/api-request-limits-allocations"
    },
    {
      "title": "Use change tracking to synchronize data with external systems",
      "url": "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/use-change-tracking-synchronize-data-external-systems"
    },
    {
      "title": "Use webhooks to create external handlers for server events",
      "url": "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/use-webhooks"
    },
    {
      "title": "Work with alternate keys",
      "url": "https://learn.microsoft.com/en-us/power-apps/developer/data-platform/define-alternate-keys-entity"
    },
    {
      "title": "Create and manage environments in the Power Platform admin center",
      "url": "https://learn.microsoft.com/en-us/power-platform/admin/create-environment"
    }
  ]
}