Skip to content

"Form Submitted — Slack Notified Instantly" — Real-Time Push Notifications

The situation

A manager approves a purchase request, but the purchasing team doesn't know — they find out at the end of the day when they check email. Or an urgent contract needs legal sign-off, but Legal doesn't get a real-time alert.

By connecting an API node to a Slack Incoming Webhook, the moment the workflow reaches a specified step (or is approved), the Slack channel or DM gets an instant notification.

Workflow design (purchase example)

Employee submits purchase request

Manager review

[Approved] → API Node: notify Slack #purchasing channel
             "✅ Purchase approved: {item} x {quantity} — please arrange procurement"
             → Complete
[Rejected] → API Node: notify submitter via DM
             "❌ Your purchase request was rejected: {rejection reason}"
             → Complete

What to tell SuperAdmin Agent

"After the purchase request is approved, add an API node that calls a Slack Webhook to send a notification to #purchasing. After rejection, add an API node to DM the submitter with the rejection reason."

Setting up Slack Incoming Webhook

  1. In Slack, go to "Apps" → "Incoming Webhooks" → "Add New Webhook to Workspace"
  2. Select the channel to post to
  3. Copy the Webhook URL

kikuflow API node configuration

In the API node settings:

  • URL: paste the Slack Webhook URL
  • Method: POST
  • Body:
json
{
  "text": "✅ Purchase approved: {{fields.itemName}} x {{fields.quantity}} — please arrange procurement.\nSubmitted by: {{submittedBy}}"
}

The {{fields.xxx}} placeholders are form field variables — kikuflow replaces them with actual values when calling the API.

Advanced: formatted Slack Blocks

json
{
  "blocks": [
    {
      "type": "header",
      "text": { "type": "plain_text", "text": "✅ Purchase Request Approved" }
    },
    {
      "type": "section",
      "fields": [
        { "type": "mrkdwn", "text": "*Item:*\n{{fields.itemName}}" },
        { "type": "mrkdwn", "text": "*Quantity:*\n{{fields.quantity}}" },
        { "type": "mrkdwn", "text": "*Submitted by:*\n{{submittedBy}}" },
        { "type": "mrkdwn", "text": "*Approved at:*\n{{completedAt}}" }
      ]
    }
  ]
}

Further applications

The same approach works for:

  • Notifying a group's Slack channel when a new request is submitted
  • Sending a reminder if a request hasn't been processed in X days
  • Integrating with other Webhook-compatible tools (Teams, Discord, etc.)

kikuflow User Manual