Portal Community
Each example includes a channel tag indicating which integration is used. Ensure the relevant channel integration is active in your BizFirstAI environment before deploying these configurations.

01 Slack Production Deployment Gate

Sends a structured Slack message to the on-call engineer before deploying to production. Includes release notes URL and estimated downtime. A 60-minute timeout ensures deployments don't stall indefinitely.

{
  "actors": ["{{ $var.on_call_engineer_id }}"],
  "message": "*Production Deployment Gate* :rocket:\n\nService: *{{ $var.service_name }}*\nVersion: *{{ $var.version }}*\nEstimated downtime: {{ $var.downtime_estimate }}\nRelease notes: {{ $var.release_notes_url }}\n\nReply *YES* to deploy now or *NO* to cancel.",
  "channel": "slack",
  "timeout_minutes": 60
}
Outcome: "YES" or any affirmative reply (approved port) triggers the deployment pipeline. "NO" or any refusal (rejected port) logs the cancellation and notifies the release manager. Ambiguous replies (success/unknown port) send a follow-up message asking for a YES/NO clarification. Timeout (error port) notifies the DevOps manager.

02 WhatsApp Customer Delivery Confirmation

Confirms delivery slot with the customer over WhatsApp before dispatching a courier. Embeds the order number, delivery date, and address. A 4-hour window allows the customer to respond at their convenience.

{
  "actors": ["{{ $var.customer_user_id }}"],
  "message": "Hi {{ $var.customer_name }}! Your order #{{ $var.order_number }} is ready to ship.\n\nDelivery: {{ $var.delivery_date }} between {{ $var.time_slot }}\nAddress: {{ $var.delivery_address }}\n\nPlease reply CONFIRM to proceed or RESCHEDULE if you need a different slot.",
  "channel": "whatsapp",
  "timeout_minutes": 240
}
Outcome: "CONFIRM" classifies as approved — the dispatch order is created and the courier is notified. "RESCHEDULE" classifies as rejected — a new scheduling workflow is triggered sending available slots to the customer. Timeout escalates to the customer service team for manual follow-up.

03 Email Manager Budget Exception Approval

Requests a quick budget exception approval via email reply. Useful for managers who prefer inbox-based interactions. A 24-hour window gives adequate review time.

{
  "actors": ["{{ $var.budget_owner_id }}"],
  "message": "Budget Exception Request — {{ $var.project_name }}\n\n{{ $var.requester_name }} has requested a budget exception of ${{ $var.exception_amount }} for {{ $var.expense_description }}.\n\nCurrent budget utilisation: {{ $var.budget_utilisation }}%\nJustification: {{ $var.justification }}\n\nPlease reply APPROVE or REJECT with any comments.",
  "channel": "email",
  "timeout_minutes": 1440
}
Outcome: Approved replies unlock the budget exception and notify Finance. Rejected replies send the requester the manager's comments and suggest resubmitting with a revised amount. Unknown replies (e.g., the manager forwards the email) trigger a Slack follow-up to the manager asking for a direct response.

04 SMS Field Technician Job Acceptance

Assigns a field service job to the nearest available technician via SMS. The concise message fits within standard SMS limits. Rejection triggers automatic reassignment to the next available technician.

{
  "actors": ["{{ $var.technician_id }}"],
  "message": "New job #{{ $var.ticket_id }}: {{ $var.job_type }} at {{ $var.site_address }}. Est. {{ $var.duration }}h. Reply ACCEPT or UNAVAILABLE.",
  "channel": "sms",
  "timeout_minutes": 15
}
Outcome: ACCEPT (approved port) locks the job for this technician and updates the dispatch system with ETA. UNAVAILABLE (rejected port) immediately reruns the assignment algorithm with this technician excluded. 15-minute timeout (error port) marks technician as unresponsive and triggers reassignment automatically.

05 Slack Daily Report Sign-Off

Before publishing a daily financial report to the board portal, gets a quick sign-off from the Finance Director via Slack. Includes a preview link. Operates on a 2-hour business window.

{
  "actors": ["{{ $var.finance_director_id }}"],
  "message": ":bar_chart: *Daily Finance Report — {{ $var.report_date }}*\n\nThe report is ready for publication.\nPreview: {{ $var.report_preview_url }}\n\nKey metrics: Revenue {{ $var.revenue }}, Expenses {{ $var.expenses }}, Net {{ $var.net_income }}\n\nReply *PUBLISH* to release to the board portal, or *HOLD* to defer.",
  "channel": "slack",
  "timeout_minutes": 120
}
Outcome: PUBLISH (approved port) triggers the CMS publishing workflow and notifies the board members. HOLD (rejected port) marks the report as deferred and sends the Finance Director a reminder in 30 minutes. Timeout publishes automatically with an audit log entry indicating no manual sign-off was received.