CRM Integration

Dynamics 365 Integration

Capture leads from AI chat conversations and sync them directly to Microsoft Dynamics 365. Built for Teams-first organizations.

Chat with us
Looking to demo your Teams integration
May I have your work email?
mike@contoso.com
Contact synced to Dynamics 365
What Is Dynamics 365 Integration?

When visitors interact with your AI chatbot and share contact information, that data is automatically synced to Microsoft Dynamics 365 as a new Lead or Contact record.

This is especially powerful for organizations using Microsoft Teams for live chat—leads flow seamlessly into your Dynamics CRM without any manual entry.

Built for Microsoft Teams

Teams + Dynamics

Agents chat via Teams, leads sync to Dynamics automatically.

Azure AD SSO

Enterprise-grade authentication through Azure Active Directory.

Dataverse Sync

Native integration with Dataverse for complete data unification.

What Gets Synced
Contact Information
Chat Transcript
Custom Fields
Lead Source
How It Works
1

Connect Dynamics

Azure AD authentication keeps your data secure.

2

Configure Mapping

Map chat data to standard and custom Dynamics fields.

3

Auto-Sync Leads

Contacts and leads created in real-time.

How It Works: Power Automate Integration

Dynamics 365 lead created from chatbot conversation

The Dynamics 365 integration uses a Custom API Action in Social Intents that POSTs lead data to a Power Automate HTTP trigger. Power Automate then creates the Lead in Dataverse.

Integration Flow:

AI Chatbot Custom API Action (POST) Power Automate HTTP Trigger Dataverse (Leads Table)

Prerequisites

  • Microsoft Dynamics 365 environment with Dataverse
  • Power Automate license (included with most Dynamics 365 plans)
  • Permission to create Power Automate flows and Dataverse records
  • Social Intents Business plan or higher (AI Actions required)

Step 1: Create the Custom API Action

In Social Intents, go to AI Chatbot Settings → AI Actions, click Add Action, and configure:

Field Value
Action Type Auto Trigger on Chat End
Action Name create_dynamics_lead
Collect data inputs subject, firstname, lastname, company, email, phone, website, transcript, sessionId
HTTP Method POST
API URL https://prod-XX.westus.logic.azure.com:443/workflows/YOUR_FLOW_ID/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=YOUR_SIG
Headers Content-Type: application/json

JSON Request Body

{
  "subject": "{{subject}}",
  "firstname": "{{firstname}}",
  "lastname": "{{lastname}}",
  "company": "{{company}}",
  "email": "{{email}}",
  "phone": "{{phone}}",
  "website": "{{website}}",
  "transcript": "{{transcript}}",
  "sessionId": "{{sessionId}}"
}

Step 2: Create the Power Automate Flow

In Power Automate, create a new Instant cloud flow with an HTTP request trigger.

A) HTTP Request Trigger

Use “When an HTTP request is received” as the trigger. Paste this JSON schema so Power Automate knows the incoming data shape:

{
  "type": "object",
  "properties": {
    "subject":    { "type": "string" },
    "firstname":  { "type": "string" },
    "lastname":   { "type": "string" },
    "company":    { "type": "string" },
    "email":      { "type": "string" },
    "phone":      { "type": "string" },
    "website":    { "type": "string" },
    "transcript": { "type": "string" },
    "sessionId":  { "type": "string" }
  }
}

B) Add a New Row in Dataverse — Leads Table

Add a Dataverse → Add a new row action. Select the Leads table and map the fields:

Dynamics 365 Field Power Automate Dynamic Content
Topic (Subject)triggerBody()?['subject']
First NametriggerBody()?['firstname']
Last NametriggerBody()?['lastname']
Company NametriggerBody()?['company']
EmailtriggerBody()?['email']
Business PhonetriggerBody()?['phone']
WebsitetriggerBody()?['website']
Descriptionconcat('Chat Transcript (Session: ', triggerBody()?['sessionId'], '):\n', triggerBody()?['transcript'])

C) Optional: Attach Transcript as a Note

Add a second Dataverse step — Add a new row in the Notes table — to attach the full transcript as a Note on the Lead:

Field Value
SubjectChat Transcript
Note TexttriggerBody()?['transcript']
Regarding (Lead)outputs('Add_a_new_row')?['body/leadid']

D) Response Action

Add a Response action to return a success status:

Status Code: 200
Body:
{
  "status": "success",
  "leadId": "@{outputs('Add_a_new_row')?['body/leadid']}"
}

Troubleshooting

Flow never triggers

Ensure the Power Automate HTTP POST URL is copied correctly, including the sig query parameter. Test by sending a manual POST from Postman or curl.

Lead created but fields are empty

Check that the JSON schema in your HTTP trigger matches the body your action sends. Mismatched property names will result in null values.

403 Forbidden error

The Power Automate flow URL may have expired. Re-save the flow to generate a new URL and update the API URL in Social Intents.

More CRM Actions

Unify Teams Chat & Dynamics 365

Connect your Microsoft stack and capture every lead automatically.

14-day free trial. No credit card required.