# How to add Slack to Acumatica

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

## Short answer

Create a Slack app with a bot user and slash commands, fire Acumatica Business Events at a small service that posts Block Kit messages, and send button clicks back through the REST API to a named integration user. Keep Slack as the notification and quick-action layer and leave the system of record in Acumatica.

## System

Acumatica

## Capability

slack

## Intro

Slack tends to be the choice of software-adjacent and distribution businesses on Acumatica, often alongside a sales team that hates logging into an ERP. Orders, backorders, customer holds and item questions come up in channels, and someone copies numbers across by hand.

The goal here is narrow: let people see the right Acumatica event in the right channel and run a few safe commands. A full ERP front end in Slack is a trap. A slash command that fetches an order and a message that approves a document are both reasonable.

Acumatica's outbound Business Events and its inbound REST API are enough to build this without touching the core application.

## Use Cases

### Big order alerts

**Description:** A sales channel receives a message when a sales order above a threshold is created, with customer, value and requested date.

### Slash command order lookup

**Description:** Typing an order number returns status, ship-by date, balance and a link, using a read-only Generic Inquiry.

### Backorder and short shipment pings

**Description:** When a shipment cannot be completed in full, customer service gets the lines and the expected receipt date.

### Quick approvals

**Description:** Approvers get an interactive message for small expense claims and purchase requests with Approve and Reject buttons.

### Daily exceptions digest

**Description:** A morning post lists overdue invoices, items below reorder point and orders on hold.

### Inventory check by item

**Description:** A command shows on hand and available by warehouse for an inventory ID, with the last receipt date.

## System Surface

- Business Events: outbound web hooks tied to record changes or Generic Inquiry results.
- Generic Inquiries exposed over OData: read-only datasets for slash commands, scoped by the inquiry's own filters and the calling role.
- Contract-based REST API for SalesOrder, Shipment, InventoryItem and StockItem lookups, plus actions on documents where available.
- Notification templates and email: a fallback route into a Slack channel email address if you want the simplest possible alert.
- Connected Applications with OAuth 2.0 for the service account.

## How It Works

### Create the Slack app

**Detail:** Add a bot, slash commands, interactivity and event subscriptions. Install it to the workspace with only the scopes it needs.

### Stand up the service

**Detail:** A small web service verifies Slack signatures, calls Acumatica and returns formatted blocks within Slack's short response window, using a deferred response for slower lookups.

### Map Slack users to Acumatica users

**Detail:** Match on email. Decide whether commands run under the person's rights or a shared read-only account, and prefer the former for anything sensitive.

### Create Business Events

**Detail:** Define the conditions and send a compact payload to the service. Add a channel routing table, for example by customer class or branch.

### Add interactive actions

**Detail:** Buttons carry the document key and a signed token. The service re-checks the state before acting so a stale message cannot repeat an action.

### Log back

**Detail:** Write a note or activity on the document recording who acted in Slack and when.

## Example Flows

### Slash command: /order

**Trigger:** A user types /order SO004512 in a channel.

**Steps:**

- Slack posts the command to the service with a signature.
- The service verifies it and finds the user's mapped Acumatica account.
- It queries the sales order through the API.
- A short ephemeral message returns status, dates and balance.

**Result:** The salesperson sees the answer privately without logging into Acumatica.

### Credit hold alert

**Trigger:** A sales order goes on credit hold.

**Steps:**

- A Business Event sends the order key.
- The service posts to the finance channel with customer balance and age buckets.
- A controller clicks Release or Keep on hold.
- The action is performed and the message updates.

**Result:** Holds are resolved the same day with an owner and a record of the decision.

## On Prem

Slack is hosted outside your network, so on-premises Acumatica needs the middleware to be reachable by Slack and able to call the ERP. A small service in a DMZ with an allow-listed path to IIS works. Keep messages free of margin, cost and credit details if channels are broad. For regulated or defense work where even order numbers are sensitive, consider an on-premises chat tool and the same pattern, and run any language model that interprets questions on your own GPU server.

## Security

- Verify Slack request signatures and timestamps on every call.
- Use per-user mapping so command output respects Acumatica roles.
- Keep the bot out of public channels for finance and HR content.
- Rotate the Slack signing secret and the Acumatica OAuth client secret on a schedule.

## Options

### No-code automation tool

**Fit:** Basic alerts using an HTTP call to the REST API and a Slack action.

**Effort:** Hours to a few days; watch task-based pricing.

### Custom Slack app

**Fit:** Slash commands and approvals with proper identity handling.

**Effort:** Two to five weeks.

### Partner build with Netray

**Fit:** When you want natural-language questions answered from Acumatica data with a model you host.

**Effort:** Scoped per use case.

## Pitfalls

- Slack expects a reply within about three seconds, so slow Acumatica queries need a deferred response.
- Posting full customer lists into a channel can disclose more than the workspace membership should see.
- Running every command as one super-user account hides who did what.
- Buttons that act on stale messages can double-approve if the state is not re-read.

## Faq

### Is there an official Acumatica Slack app?

**Answer:** We are not aware of a core Acumatica product feature for Slack. Look at the Acumatica Marketplace and automation platforms for your version, and otherwise build against Business Events and the REST API as described here.

### Can we use the Acumatica REST API with Slack directly?

**Answer:** Not safely. Slack cannot hold OAuth secrets or enforce your roles. Put a service between them that verifies the Slack signature, maps the user, and calls Acumatica.

### Can Slack trigger an Acumatica workflow?

**Answer:** Yes through an action on a document, such as approve or release, called from your service. Test each action in a sandbox tenant first, since available actions depend on the endpoint and version.

### Should we use Slack or Teams?

**Answer:** Use the one your people already work in. If you have both, the same bridge design serves either with a different message format. Do not run two parallel approval paths for one document type.

### Does this need a custom Acumatica customization package?

**Answer:** Often not. Business Events, Generic Inquiries and the REST API cover most needs. Customization is useful for new fields such as a Slack handle or opt-in flag, or to expose extra actions.

## Search terms

acumatica slack integration, slack for acumatica, acumatica slack notifications, acumatica slash command, acumatica business events slack, acumatica slack approvals, send acumatica alerts to slack, acumatica rest api slack bot

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