Slack document intake & table delivery
IN + OUT: /api/integrations/slack/*
Content reviewed .
Slack already holds the documents that teams pass around during reviews. The DynamiteDocs Slack connection turns one invited channel into a controlled intake point and gives reviewed extractions a direct route back to the conversation. Each customer authorizes their own workspace. Tokens stay encrypted, channels must explicitly invite the app, and the person connecting Slack decides where intake and delivery happen.
Open this integration in the app or read the public API and webhook guide.
Keep Slack handoffs attached to the document workflow
- Downloading a file from Slack, finding the upload screen, and returning with a spreadsheet creates avoidable handoffs.
- A bot should not read every channel in a workspace. Teams need to invite it only where the workflow belongs.
- A posted table should come from a reviewed extraction, not an unchecked first pass.
- Workspace administrators need to see the exact permissions before approving the connection.
Connect Slack in five steps
01. Open Slack from Apps
Sign in to DynamiteDocs, open Apps, and choose Slack. The integration is available on Hobby, Pro, and Ultra plans. You can connect without selecting an extraction first.
02. Authorize your workspace
Choose Connect Slack, select the workspace you want, and review the permissions. Slack may send the request to a workspace administrator. After approval, you return to the same DynamiteDocs dialog with the workspace name shown as connected.
03. Invite the app to a channel
Open the destination channel in Slack and send /invite @DynamiteDocs. Do this for private channels too. The channel picker only lists channels where the app is already a member, so this invitation keeps access narrow and deliberate.
04. Choose intake or delivery
Reopen the Slack dialog. Pick an intake channel to extract supported files shared by the Slack user who made the connection. To deliver data, select a saved extraction and choose the channel that should receive its CSV attachment.
05. Run a small test
Share one supported document in the intake channel and confirm that it reaches the Library. Then post one reviewed extraction and open the CSV in Slack. A small test catches missing invitations and workspace approval rules before the channel carries real work.
What the Slack connection can do
The connection uses Slack OAuth and stores a separate encrypted installation for each DynamiteDocs account:
- Workspace OAuth: each customer connects and approves their own workspace
- Channel discovery: public and private channels joined by the app
- Reviewed delivery: one extraction table posted as a CSV attachment
- Channel intake: supported documents imported into the Library
- Event verification: Slack signing secret checked against the raw request
- Token storage: workspace tokens encrypted with AES-GCM
Use a channel for controlled intake, table delivery, or both.
A realistic example
A practical accounts-payable channel can use both directions:
| Action | Where it happens | Result |
| A controller shares vendor-invoice.pdf | #invoice-review in Slack | The file is imported and queued for extraction |
| An analyst corrects a low-confidence total | DynamiteDocs review workspace | The saved extraction becomes the approved version |
| The analyst posts the table | Slack integration dialog | The channel receives a CSV attachment with the reviewed rows |
What to validate before relying on it
Confirm that DynamiteDocs appears as a member of the chosen channel, then test with one supported document and one CSV export before relying on the channel for live work.
One Slack app, separate customer workspaces
The development workspace used to create the Slack app does not become the customer destination. Public distribution lets each customer start the OAuth flow from DynamiteDocs, choose a Slack workspace, and approve the same narrow set of bot permissions. Slack returns a workspace-specific token and team ID. DynamiteDocs encrypts that token and attaches it to the signed-in account, so one customer never uses another customer's Slack credentials.
The channel list is intentionally smaller than the whole workspace directory. DynamiteDocs requests channel metadata, but the dialog shows channels where the app is already a member. For a public channel, invite @DynamiteDocs before reopening the picker. For a private channel, a channel member must invite it. If the channel is missing, the usual cause is the invitation, not a stale browser cache.
Outbound delivery starts with a saved extraction. Choose Slack after reviewing the rows, select a joined channel, and preview the export. DynamiteDocs creates the CSV bytes, asks Slack for a temporary upload URL, uploads without sending the Slack authorization header to that temporary host, and completes the upload into the selected channel. The confirmation identifies the Slack file rather than claiming success before Slack accepts it.
Inbound files follow a stricter rule. You enable exactly one intake channel in the dialog. Slack signs each file event, and the server rejects requests with an invalid signature or an old timestamp. The event must match the connected workspace, enabled channel, and Slack user who authorized the connection. That last check prevents another person in a shared channel from silently feeding documents into the account.
After verification, DynamiteDocs checks the file type and size, applies the account's storage and document limits, stores the file, and queues the normal extraction pipeline. The source does not get a weaker review path because it arrived through Slack. Page limits, provider policy, confidence review, and correction reuse work the same way as a file selected from the device.
Disconnecting removes the encrypted workspace connection from DynamiteDocs. It does not delete messages or files already posted in Slack. A Slack administrator can also remove the app from the workspace. If permissions change later, Slack may require the workspace to approve the connection again before new permissions take effect.
What the Slack connection does and does not do
Does
- Lists channels that have invited the app and lets the user choose the destination.
- Posts a reviewed extraction as a CSV attachment after an explicit preview and send action.
- Imports supported files from one enabled channel when the connected Slack user shares them.
- Verifies signed Slack events before accepting file intake work.
Does not
- Does not read message history or scan every channel in the workspace.
- Does not import files shared by every channel member. Intake is tied to the Slack user who connected the account.
- Does not post an unreviewed extraction automatically.
- Does not keep Slack tokens in browser storage or plaintext database fields.
Why the channel boundary matters
Slack works best as a handoff point, not a hidden document store. Requiring a channel invitation makes the boundary visible to the people already working there.
The same connection handles intake and delivery, but neither happens by accident. A user enables intake for one channel and explicitly selects a destination before posting a table.
Signed events, encrypted workspace tokens, and per-account routing keep a convenient workflow from turning into broad workspace access.
Questions, answered
Can customers connect their own Slack workspace?
Yes. Each customer starts OAuth from DynamiteDocs, chooses their workspace, and approves the requested permissions. Workspace administrators can require approval before installation.
Why is my channel missing?
Invite @DynamiteDocs to the channel, then reopen the integration dialog. Private channels also require an invitation from a channel member.
Whose files can the intake channel import?
Only supported files shared in the enabled channel by the Slack user who connected the DynamiteDocs account. Other channel members' files are ignored.
What gets posted to Slack?
A CSV attachment containing the reviewed extraction columns and rows. DynamiteDocs does not post the source document or an unchecked first-pass result.
Can I connect more than one workspace?
One DynamiteDocs account can hold one Slack workspace connection at a time. Reconnecting replaces that account's previous Slack connection.
Document workflows it feeds
Related integration articles
Open the integrations workspace, no payment details.