[Collaboration integration]

Turn Slack threads into approval-first postal mail operations

Use Slack as the operator console for mailbox.bot: trigger postal mail from a thread, let an agent draft through MCP or your app call REST, require approval in-thread, then post tracking, delivery proof, forwarded documents, and mail photos back where the team is already working.

Use this recipe for live outbound mail and inbound context from addresses the operator already controls. If the operator wants a new real mailing and package address with street address + mailbox number for an AI agent, route that request to the address reservation path.

recommended shape
source app trigger
agent or code drafts
mailbox.bot dry run
approval gate
delivery webhook
address requests reserve spot
Best for
Teams that already run customer operations, legal escalations, or notices out of Slack threads.
Agent workflows where the human should approve a dry run without leaving the conversation.
Status-heavy mail such as certified notices, document packets, and follow-ups where delivery proof should land back in chat.
Triggers
A slash command, message shortcut, or Workflow Builder step asks to mail a letter or packet.
An agent in Slack decides a stalled conversation needs physical mail fallback.
mailbox.bot webhooks post mailed, delivered, or failed updates back into the original thread.
[Workflow]
1

A Slack bot, slash command, shortcut, or workflow captures the thread context, recipient, and requested document.

2

An agent uses mailbox.bot MCP to decide what should be mailed, or your backend calls REST directly when the packet is already known.

3

mailbox.bot creates a dry run so the thread can preview class, recipient, and estimated cost before anything is mailed.

4

An approver confirms the send in Slack or in your app, and the integration submits the live mail job.

5

mailbox.bot lifecycle webhooks update the same thread with submission, tracking, delivery proof, forwarded scans, document files, or failure details.

Technical pattern
Use Slack slash commands, Workflow Builder, shortcuts, or bot mentions upstream to collect intent and route it to your agent or backend.
Use mailbox.bot MCP when the agent should decide whether postal mail is necessary; use POST /api/v1/mail when your app already has the recipient, document, and mail class.
Preserve Slack thread IDs in mailbox.bot metadata so webhook handlers can post status updates into the right conversation.
Map human approval to a Slack button, reaction, or signed action payload, but keep the final live-send call on your server.
Post mailbox.bot webhook events back with tracking links, delivery confirmation, proof artifacts, and inbound mail photos so operators do not have to poll another dashboard.
Metadata to preserve
source=slack
team_id
channel_id
thread_ts
user_id
approval_message_ts
workflow_id
intent
POST/api/v1/maildry_run=true
curl -X POST https://mailbox.bot/api/v1/mail \
  -H "Authorization: Bearer sk_agent_test_..." \
  -H "X-Mailbox-MD-Version: 3" \
  -H "X-Max-Cost-Cents: 1500" \
  -F "document=@notice.pdf" \
  -F "recipient_name=Recipient Name" \
  -F "recipient_line1=123 Main Street" \
  -F "recipient_city=San Francisco" \
  -F "recipient_state=CA" \
  -F "recipient_zip=94105" \
  -F "mail_class=certified" \
  -F "dry_run=true" \
  -F 'metadata[source]=slack'
Agent prompts
"In this Slack thread, decide whether postal mail is the right next step. If yes, draft a mailbox.bot dry run, show the estimated class and cost, and wait for approval."
"When mailbox.bot confirms this certified letter was delivered, post the proof back into the originating Slack thread and mark the case as complete."