How to add Slack to Infor M3
Short answer
To add Slack to Infor M3, build a Slack app that talks to a small service in front of M3. Alerts come from ION events or scheduled reads of M3 API programs, slash commands run read-only lookups, and interactive buttons turn into audited M3 API calls. Link Slack users to M3 users explicitly and keep the service inside your network if M3 is on-prem.
Slack is less common than Teams in large M3 accounts but is standard in many mid-size manufacturers, distributors and engineering-led companies that run M3. For those teams the pain is the same: M3 holds the truth about orders, stock and purchases, but conversations about problems happen in Slack, with screenshots of M3 panels pasted into threads.
A Slack integration is a good way to turn those conversations into something structured. A channel per plant, per buyer group or per major customer can receive alerts from M3, and a slash command lets a person pull the facts without switching tools. It is also a pragmatic spot for human approval of small actions.
What differs from Teams is mostly identity and distribution. Slack does not come with Entra ID, so user linking is a deliberate step, and your Slack app lives in a workspace rather than a tenant app catalog.
What teams use it for
Purchase order exception alerts
Post to a buyers channel when a PO line is past due or a supplier date moved, with the PO number, line, supplier and a button to open in M3 or draft a chase email.
Slash command for order lookup
Use a command such as /m3 order 1234567 to return status, lines and next shipment from the customer order API, visible only to the requester.
Stockout and shortage warnings
Announce when available balance for a critical item drops below a safety level in a facility, with open demand and expected receipts.
Incident rooms for line-down events
Create a temporary channel when a work center is down and auto-post the affected manufacturing orders and customer orders from M3.
Quick approvals for small spend
Send requisition approvals under a threshold to the cost center owner with Approve and Reject buttons tied to the M3 approval step.
Daily operations digest
Post a morning summary of orders due today, deliveries to ship and orders on hold, produced from scheduled read-only queries.
Infor M3 integration surface
- M3 API programs (MI programs) accessed via the ION API gateway with an OAuth 2.0 service account, or via an on-prem M3 API endpoint if you are not on Infor OS.
- ION Connect and BODs for event-driven alerts, and ION Workflow for approvals that need to be advanced by an external action.
- M3 Data Lake and Compass SQL via the Infor OS data fabric: useful for digests and trend summaries, but data is delayed relative to the business engine, so do not use it for approvals.
- M3 business engine database tables (for example OOHEAD, OOLINE, MITBAL) on SQL Server, Oracle or IBM i for read-only reporting queries in on-prem environments. Treat table layout as version-specific.
- M3 Enterprise Collaborator (MEC) for legacy on-prem flows that can call an HTTP endpoint when a document or trigger fires.
How it works
- 1
Create the Slack app
Define bot scopes narrowly (chat:write, commands, users:read.email if linking by email). Enable Interactivity and Slash Commands, and choose Socket Mode if you cannot expose a public URL.
- 2
Stand up the service
A small web service verifies Slack request signatures, holds Slack tokens and M3 credentials in a secrets store, and exposes only the routes Slack needs.
- 3
Link users
Resolve the Slack user's email and map to an M3 user, then store the link. For writes, require a one-time authentication step and record which Slack user acted.
- 4
Define alerts by role
Choose few, meaningful alerts and routes: late PO lines to buyers, shortages to planners, holds to customer service. Include thresholds so channels do not flood.
- 5
Build interactive messages with Block Kit
Show facts and buttons. When a button is pressed, re-read the M3 record, apply the change through the API if allowed, and update the original message.
- 6
Audit and monitor
Write every command and action to a log with Slack user, M3 user, request and result. Alert on repeated failures from the M3 API.
Example flows
Late PO line chase
Trigger: A nightly job finds PO lines more than two days past the confirmed date.
- The service reads the lines and groups them by buyer.
- Each buyer gets a message listing supplier, item, quantity and age.
- A button opens a pre-filled email draft to the supplier contact.
- A second button marks the line as chased and stores a note in the middleware log.
Result: Buyers act on a short list instead of scanning reports, and chasing is visible.
Order lookup with /m3
Trigger: A salesperson types /m3 order 1234567.
- The service verifies the signature and maps the user.
- It checks the user may see that customer's orders.
- It calls the order API and returns an ephemeral message with status and next dates.
Result: Fast answers without the M3 client, and no information leaks to the channel.
Line-down incident channel
Trigger: A supervisor triggers a command when a work center stops.
- The service creates a channel and invites planners and maintenance.
- It posts the manufacturing orders scheduled on the work center in the next shift.
- Updates are summarised on closure and saved with the incident record.
Result: Faster coordination and a clean record for root cause review.
Keeping data on-prem
With on-prem M3, keep the Slack service inside the network and use Socket Mode so Slack connects out to you; no inbound firewall hole is required. The service calls M3 on the local network, and only Slack-bound HTTPS leaves. Slack stores message content in its cloud, so keep payloads minimal and avoid confidential costing or customer pricing. If you add an AI assistant for free-text questions, run an open-weight model locally and pass it only the rows needed to answer.
Security checklist
- Verify the Slack signing secret on every request and reject old timestamps to prevent replay.
- Use ephemeral responses for lookups and avoid posting prices or margins to shared channels.
- Restrict the M3 service account to read-only MI programs, and use separate, scoped credentials for write actions.
- Require linked and verified users for approvals, and log the Slack and M3 identities together.
- Review workspace guest and shared-channel settings; do not connect M3 alerts to externally shared channels.
Ways to get it done
No-code automation tool with an M3 HTTP step
Effort: Days.
Basic alerts from a single data source.
Custom Slack app and service on ION API
Effort: One to two months.
Commands, approvals and logging with proper identity linking.
Partner build such as Netray
Effort: A few weeks for a scoped pilot.
On-prem M3 with local models, read-only AI lookups and approval-gated writes.
Pitfalls
- !Alert floods that train people to ignore the channel; start with two or three alerts and tune.
- !Mapping users by display name instead of verified email, enabling spoofed access.
- !Posting full order contents to public channels, exposing customer or pricing data.
- !Using Data Lake data for approval decisions when it can lag the business engine.
- !Hard-coding company and division, which breaks in multi-entity M3 environments.
Frequently asked questions
Is there a ready-made Slack connector for Infor M3?
I am not aware of a standard one included in M3, though third-party tools and partners may offer connectors for specific versions. Most teams build a small service using M3 APIs and ION, or use an integration platform with an HTTP step against ION API.
Can we avoid exposing M3 to the internet?
Yes. Use Slack Socket Mode so your service initiates the connection, and keep M3 on the internal network. The service is the only component that talks to both sides, and it should live inside your network or DMZ.
What triggers Slack messages from M3?
ION BODs or event subscriptions where available, ION Workflow notifications, or a scheduled read of MI programs with a watermark. Avoid database triggers on the business engine because they bypass M3 logic and complicate upgrades.
Can people approve M3 items from Slack?
Yes, with linked users, a re-check of the item's pending status, and an API call under proper authority. For larger amounts, consider sending a link to M3 rather than approving in chat.
How does this compare with Teams?
The M3 side is identical: APIs, ION events and workflows. The differences are identity (Entra ID in Teams, explicit linking in Slack) and hosting. Use whichever chat tool your operations teams already live in, rather than adding a second one.
Want Slack working on your Infor M3?
A free 30 minute assessment: we map the integration path for your version and setup, and where it should run.
Get a free assessment