# How to add WhatsApp to Dynamics 365 Finance and Supply Chain

> Source: https://netray.co/integrations/dynamics-365-fscm-whatsapp
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Integrations

## Short answer

Dynamics 365 Finance and Supply Chain has no native WhatsApp channel. The usual pattern is a business event (or a polling job over OData) that calls a small middleware service, which sends a pre-approved template through the WhatsApp Business Platform and writes replies back through a data entity or custom service.

## System

Microsoft Dynamics 365 Finance and Supply Chain

## Capability

whatsapp

## Intro

Teams running Dynamics 365 finance and operations apps tend to have two groups the system reaches badly: suppliers and customers who live on phones, and plant or warehouse staff who never open a browser client. Purchase order confirmations arrive late, shipment questions go to a sales coordinator's inbox, and approvals wait for someone to log in. WhatsApp is the channel those people already answer within minutes.

The platform gives you good building blocks for this but no finished product. Business events publish what happened, data entities and custom services let you read and write, and Entra ID app registrations handle machine identity. What is missing is the messaging layer: template management, opt-in records, delivery status and mapping a free-text reply to a record in the right legal entity.

This page walks through that layer for Finance and Supply Chain specifically, including the points where Microsoft's own tooling (Power Automate, Dataverse) is a better fit than custom code.

## Use Cases

### Purchase order confirmation from suppliers

**Description:** When a PO is confirmed internally, send the vendor a template with the PO number, lines and requested delivery date, and offer quick-reply buttons for Confirm or Propose new date. The reply updates the confirmed delivery date via a custom service or the purchase order line entity.

### Shipment and ASN alerts to customers

**Description:** Trigger on a packing slip posting or a shipment confirmation in warehouse management and notify the customer contact with carrier and tracking details, instead of a coordinator copying values into emails.

### Expense and requisition approvals

**Description:** Notify approvers of a pending purchase requisition or workflow work item with a short summary. The approver replies Approve or Reject, and middleware completes the workflow task only after verifying the sender maps to the approving user.

### Overdue invoice reminders

**Description:** A scheduled read of open customer transactions finds items past due and sends a template reminder per customer contact, logging delivery and any reply against the customer account for the collections team.

### Production and quality escalations

**Description:** Business events on production order status or a quality order failure ping the shift supervisor group so a stoppage is seen in seconds, not at the next screen refresh.

### Supplier onboarding and document chase

**Description:** Message vendors missing a W-8/W-9, certificate or bank detail, with a link to a secure upload page that feeds the vendor change proposal workflow.

## System Surface

Business events: Finance and Supply Chain can publish business events (for example purchase order confirmed, vendor invoice posted, sales order shipped, plus custom ones built by extending BusinessEventsBase) to Azure Service Bus, Event Grid, Event Hubs, an HTTPS endpoint or Power Automate. Available event catalogue depends on version.

OData v4 data entities under the /data endpoint (for example PurchaseOrderHeadersV2, PurchaseOrderLinesV2, CustomersV3, VendorsV2). Only entities flagged public are exposed, and field names vary slightly by release.

Custom services (X++ service classes exposed under /api/services) for actions that are not simple CRUD, such as confirming a PO line with a new date and a reason code.

Authentication is OAuth 2.0 against Microsoft Entra ID with an app registration whitelisted in the environment (Microsoft Entra ID applications form) and mapped to a dedicated service user with a narrow security role.

Throttling: the service applies priority-based throttling to OData and custom service calls, so a bulk reminder run should be batched and tolerate HTTP 429 with retry-after.

On-premises (Local Business Data) deployments cannot use the cloud-only business event destinations in the same way and typically rely on AD FS authentication and your own HTTPS endpoint or polling.

## How It Works

### Choose the WhatsApp access path

**Detail:** Use the WhatsApp Business Platform Cloud API directly or through a business solution provider. Verify the business in Meta Business Manager, register a number that is not used on a personal app, and decide which legal entities share which sender number.

### Register the ERP side

**Detail:** Create an Entra ID app registration, whitelist it in the environment, and map it to a service user whose role only reads the entities and calls the services you need.

### Emit events

**Detail:** Activate the relevant business events for the legal entity and point an endpoint at your middleware (or Azure Service Bus). For anything without an event, schedule a delta read using a modified-date filter on the entity.

### Resolve the recipient

**Detail:** Middleware looks up the contact's mobile number from party contact information (electronic address records) and checks an opt-in table you maintain. No opt-in record means no message, and the exception is routed to a person.

### Send templates

**Detail:** Use Meta-approved utility templates with variables for PO number, date and amount. Free-form text is only allowed inside the customer service window after the recipient replies.

### Handle inbound webhooks

**Detail:** Receive delivery receipts and replies, verify the signature, find the originating record from a stored message-to-document mapping, and call the ERP service. Unrecognised replies go to a shared inbox.

### Log and monitor

**Detail:** Store message ID, template, document reference and status so a buyer can see in the ERP (a simple custom table or a note on the document) what was sent and answered.

## Example Flows

### Supplier confirms or reschedules a PO

**Trigger:** A purchase order is confirmed and the vendor has a WhatsApp opt-in.

**Steps:**

- Business event posts to the middleware HTTPS endpoint with the PO number and legal entity.
- Middleware reads the PO header and lines through the OData entities and the vendor contact number.
- It sends a template with Confirm and Change date buttons.
- On Change date, a follow-up message asks for the new date and validates the format.
- A custom service updates the confirmed ship date and writes a change reason.

**Result:** The buyer sees an updated confirmed date with a message trail, without chasing by phone.

### Approval by reply

**Trigger:** A workflow work item is assigned to a manager for a purchase requisition above a threshold.

**Steps:**

- Polling or an event picks up the new work item.
- Middleware sends a summary with Approve and Reject buttons to the manager's registered number.
- The button payload carries a signed token tied to the work item.
- Middleware validates the token and sender, then completes the workflow task with the ERP service.
- A confirmation message is sent back.

**Result:** Requisitions clear the same day for approvers who travel, with the workflow history intact.

## On Prem

If the environment is Local Business Data or the data policy forbids sending order details through a hosted automation service, keep the middleware inside your network and make it the only component that talks to the WhatsApp Cloud API over outbound HTTPS. Send minimal template variables (a document reference and a date, not pricing or part drawings) and keep the full record in the ERP behind a login. If you want free-text replies interpreted, run the classification on a model hosted on your own GPUs so supplier messages never reach a third-party LLM. Inbound webhooks need a public endpoint, which is usually a hardened reverse proxy in a DMZ that forwards only signed Meta calls.

## Security

- Use a dedicated service user and Entra ID app with the smallest security role, never an administrator account.
- Verify the X-Hub-Signature-256 header on every webhook and reject unsigned calls.
- Bind a reply to a document with a signed, expiring token, and verify the sender number matches the registered contact before any write.
- Keep opt-in records with timestamp and source, and honour STOP replies immediately.
- Restrict message content so bank details, prices and personal data are not sent in templates unless the business has signed off.

## Options

### Power Automate plus a WhatsApp connector from a BSP or marketplace

**Fit:** Low-volume notifications where the business events or Dataverse triggers are already in use and writes back are simple.

**Effort:** Days to a couple of weeks, plus connector licensing.

### Build in-house middleware (Azure Functions or a container service)

**Fit:** Teams with .NET and X++ skills who need two-way flows, multi-entity routing and audit.

**Effort:** Roughly 4 to 8 weeks for notifications and a few reply flows.

### Partner build with Netray

**Fit:** When replies must be understood, approvals need guardrails, or the stack must stay on-prem.

**Effort:** Scoped per flow after reviewing your entities, security roles and volumes.

## Pitfalls

- Sending free text outside the 24-hour window fails; every proactive message needs an approved template.
- Vendor contact records often hold landlines or no mobile, so a data-cleanup pass on electronic addresses is the real first task.
- Replying to the wrong legal entity is easy if the message-to-document mapping is not stored; always carry the company code.
- Bulk reminder runs can hit OData throttling; batch and back off on 429.
- Workflow approvals completed outside the client can bypass delegation rules unless you honour the assigned approver and delegation chain.

## Faq

### Does Dynamics 365 Finance and Supply Chain have a built-in WhatsApp integration?

**Answer:** No. Microsoft ships email, Teams and Power Platform integration for these apps, but WhatsApp is added through the WhatsApp Business Platform plus middleware or a Power Automate connector. Check your release notes in case a connector has been added since this was written.

### Can suppliers reply to change a delivery date?

**Answer:** Yes, with buttons or a short guided exchange. Middleware validates the reply and calls a custom service or the PO line entity. Keep a human review step for large date shifts or price-related replies.

### Do I need Meta approval for each message?

**Answer:** You need Meta-approved templates for business-initiated messages, and a documented opt-in from each recipient. Replies within the customer service window can be free text.

### Can it work with an on-premises deployment?

**Answer:** Yes, but the cloud-only business event destinations are limited, so you usually poll entities or use your own endpoint. The middleware can run in your network and only make outbound calls to Meta.

### Where should message history live?

**Answer:** Keep full logs in your middleware store and write a short reference (message ID, status, document) onto the ERP record, so users see the trail without the ERP storing chat content.

## Search terms

dynamics 365 whatsapp integration, whatsapp for dynamics 365 finance and operations, dynamics 365 supply chain whatsapp, d365 fo whatsapp api, send whatsapp from dynamics 365, dynamics 365 purchase order whatsapp, whatsapp business api dynamics 365 f&o, add whatsapp to dynamics 365 erp

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
