How to add WhatsApp to Microsoft Dynamics NAV
Short answer
Add WhatsApp to Dynamics NAV by publishing a small set of codeunits or pages as web services, running a middleware that talks to the WhatsApp Business Platform Cloud API, and writing replies back through the same web services. Outbound messages are triggered from job queue entries or posting events, and inbound replies are matched to documents by a reference you embed in each template message.
Many NAV shops run a version that predates any native messaging story. Customers phone or email to ask where an order is, buyers chase suppliers for confirmations, and approvers sit at a desk to release a purchase order. WhatsApp is already on every phone, in the plant and at the supplier, so teams ask whether NAV can talk to it without a rebuild.
NAV has no built-in WhatsApp feature, but it has the right hooks: web services, codeunits you can call from a Job Queue or the NAV Application Server, and a SQL database you can read when you must. The work is mostly in the middleware and in respecting the WhatsApp rules on opt-in and template messages, not in NAV itself.
This page assumes NAV 2013 R2 through NAV 2018. Exact setup screens and OData versions differ by release, so verify against your build before committing to a design.
What teams use it for
Shipment notifications to customers
When a Sales Shipment is posted, send a template message with the order number, carrier and tracking link to the customer contact's mobile number held on the Contact or Ship-to Address record.
Order status on demand
A customer sends 'status SO1234' and gets lines, promised dates and quantities shipped, read from Sales Header and Sales Line through a published page.
Purchase order approval by phone
A manager receives a summary of a pending Purchase Header with Approve and Reject quick-reply buttons, and the answer is routed to the NAV approval workflow.
Supplier delivery confirmation
Open Purchase Lines with a Promised Receipt Date get a template message asking the supplier to confirm or reschedule; the reply updates the date after buyer review.
Overdue invoice reminders
Customer Ledger Entries past Due Date trigger a polite reminder with a payment link, restricted to customers who opted in.
Service and RMA updates
Service Order status changes push a short update to the customer, which cuts the inbound 'any news' calls.
Microsoft Dynamics NAV integration surface
- Web services: publish pages, queries and codeunits from the Web Services page (table 2000000076 / page 810 in classic builds). SOAP is available on all supported versions; OData is available from NAV 2013 and OData v4 from NAV 2016 onwards.
- Codeunits as web services let you expose a single action such as 'ReleasePurchaseOrder' or 'GetOrderStatus' with controlled parameters, which is safer than exposing raw tables.
- Job Queue Entries (NAV 2013 R2 and later, served by the NAV Application Server) can run a codeunit every few minutes to scan for events like new Sales Shipment Headers and drop them into an outbox table.
- Approval Entry (table 454) and the workflow engine in NAV 2016+ carry pending approvals; older builds use the legacy approval codeunits, so check which you have.
- Direct SQL reads are possible because NAV stores each company's data in tables prefixed with the company name and a dollar sign. Treat SQL as read-only; writes bypass business logic.
- Authentication to web services is Windows (NTLM or Kerberos), a NAV user with a web service access key, or Azure AD on newer builds. The service tier configuration decides which are allowed.
How it works
- 1
Choose the channel
Use the WhatsApp Business Platform Cloud API directly, or a business solution provider (BSP) if you want a managed number and inbox. Register the sender number, verify the business and plan for message templates.
- 2
Build the outbox in NAV
Add a custom table (WhatsApp Outbox) with document type, document number, recipient, template name, payload and status. A codeunit run by a job queue fills it from events such as posted shipments.
- 3
Publish web services
Publish a codeunit with narrow functions: list pending outbox rows, mark sent or failed, get order status, register an inbound reply. Use a dedicated NAV service account with minimal permissions.
- 4
Run a middleware
A small service polls the outbox over SOAP or OData, calls the Cloud API with the right template and parameters, and receives webhooks for delivery status and inbound messages.
- 5
Match replies to documents
Embed a short reference in the template body or use quick-reply payloads that carry the document number, so an inbound 'Yes' is tied to the right Purchase Header without guessing.
- 6
Write back with review
Status queries are read-only. Anything that changes data, such as a new promised date, lands as a proposed change a buyer approves before the codeunit applies it.
- 7
Monitor and log
Keep sent, delivered, read and failed states on the outbox row so support can answer 'did the customer get it'.
Example flows
Shipment alert
Trigger: A warehouse user posts a Sales Shipment.
- Job queue codeunit finds new shipment headers since the last run.
- It checks the customer has an opt-in flag and a valid mobile number.
- An outbox row is created with the shipment template and tracking number.
- Middleware sends the template through the Cloud API and stores the message ID.
- The delivery webhook updates the outbox status.
Result: The customer sees the shipment in WhatsApp within minutes, with a full audit trail in NAV.
PO approval
Trigger: A purchase order above a value threshold is sent for approval.
- The approval workflow creates an Approval Entry for the approver.
- A codeunit adds an outbox row with vendor, total and a document reference.
- The approver taps Approve in WhatsApp.
- Middleware calls a published codeunit that records the decision for that entry under the approver's identity.
Result: The PO is released without the approver opening the NAV client.
Supplier reschedule
Trigger: A supplier replies to a delivery check with a new date.
- Webhook delivers the text to middleware.
- The reply is parsed and matched to the Purchase Line by reference.
- A proposed date change is queued for the buyer.
- The buyer accepts it and the codeunit updates the Promised Receipt Date.
Result: Dates stay current without buyers retyping emails.
Keeping data on-prem
WhatsApp traffic itself always goes through Meta's cloud, so the question is how much NAV data you place in messages. Keep NAV on-prem and put the middleware in your DMZ or a small VM that can reach the service tier over the internal network and make outbound HTTPS calls to the Cloud API. Receive webhooks through a reverse proxy that only exposes the single callback path. Send minimal payloads: document number, status and a link to an authenticated portal, rather than full line detail or pricing. If a message would contain controlled technical data, do not send it over WhatsApp at all, and let the recipient follow a link to a system behind your own login.
Security checklist
- Use a dedicated NAV service account with permission sets limited to the published objects, never SUPER.
- Honor opt-in and opt-out; store consent status per contact and block sends without it.
- Verify webhook signatures from Meta and reject unsigned callbacks.
- Keep message content to references and status; avoid prices, drawings or export-controlled data.
- Log every inbound and outbound message against the NAV document for audit.
Ways to get it done
Third-party WhatsApp add-on for NAV from a partner or marketplace
Effort: Days to weeks, plus per-message fees.
Standard notifications and no appetite for custom code; check it supports your exact NAV version.
Build in-house with web services and a Cloud API middleware
Effort: Roughly 3 to 6 weeks for a first notification flow.
You have a NAV developer and someone who can run a small service.
Work with a partner such as Netray
Effort: Scoped per flow; a pilot is typically a few weeks.
You want two-way flows with approvals and an AI layer that interprets free-text replies, with human review on writes.
Pitfalls
- !Free-form messages are only allowed inside the 24-hour window after the customer writes; everything else needs an approved template.
- !Phone numbers stored in NAV are rarely in international format; normalize them before sending.
- !Exposing whole tables as web services leaks fields and slows the service tier; publish purpose-built codeunits.
- !Job queue entries stop silently after errors; monitor them or notifications will quietly vanish.
- !Treating a reply as a legal approval without tying it to the approver's identity creates audit gaps.
Frequently asked questions
Does Dynamics NAV support WhatsApp natively?
No. NAV has no built-in WhatsApp connector. You add it with web services published from NAV, a middleware that talks to the WhatsApp Business Platform, and optionally a partner add-on. The pattern works on most NAV versions that support web services.
Which NAV versions can do this?
Any version with web services and a way to run scheduled logic. NAV 2013 R2 and later have the Job Queue, which makes polling simple. Older versions need a Windows service or NAS-based scheduling. Check your version's web service options first.
Can customers place orders through WhatsApp?
Technically yes, but we suggest starting with status and alerts. Order creation needs validation of items, prices and credit, so route requests into a draft Sales Order that a person reviews before release.
Is WhatsApp allowed for B2B notifications?
Yes, businesses use it for transactional messages, but you need opt-in, approved templates and a verified business account. Rules and pricing change, so read the current Meta terms before launch.
Can this run without sending data to the cloud?
The WhatsApp channel itself is hosted by Meta, so messages leave your network. You can keep NAV, the middleware and any AI interpretation on-prem and limit messages to references and statuses.
More for Microsoft Dynamics NAV
Want WhatsApp working on your Microsoft Dynamics NAV?
A free 30 minute assessment: we map the integration path for your version and setup, and where it should run.
Get a free assessment