Alert Slack on large Salesforce opportunities using Flow Builder

low complexityCost: $0 (included)

Prerequisites

Prerequisites
  • Salesforce org with Flow Builder access (Enterprise edition or higher)
  • Slack app installed from AppExchange, or a Slack Incoming Webhook URL
  • System Administrator or Flow-enabled profile

Why Flow Builder?

Flow Builder is the simplest approach because everything stays inside Salesforce — no external tools, no API credentials, no hosting. Record-Triggered Flows fire instantly when an Opportunity is created, and entry conditions handle the amount threshold natively. The Salesforce for Slack app or an HTTP Callout delivers the alert within seconds. There's zero ongoing cost beyond your existing Salesforce license.

The trade-off is formatting flexibility. The native Send Slack Message action only supports plain text — no Block Kit, no buttons, no sections. For rich formatting, you need an HTTP Callout to a Slack webhook, which requires Named Credentials setup. If rich Slack formatting matters more than real-time delivery, consider n8n instead.

How it works

  • Record-Triggered Flow fires automatically when a new Opportunity is created with Amount >= your threshold
  • Get Records element fetches the related Account name for additional context in the message
  • Send Slack Message action (native) or HTTP Callout (custom formatting) delivers the alert to your leadership channel
  • Entry conditions handle the amount filtering — no separate Decision element needed for a single threshold

Step 1: Create a Record-Triggered Flow

In Salesforce Setup, navigate to Flows and click New Flow. Select Record-Triggered Flow.

  • Object: Opportunity
  • Trigger: A record is created
  • Entry conditions: Amount greater than or equal to 50000

Entry conditions handle the filtering natively — no separate Decision element is needed for a simple threshold check.

Entry conditions vs. Decision elements

For a single threshold, entry conditions are simpler and more performant. Use a Decision element only when you need multiple branches (e.g., different channels for different deal sizes).

Step 2: Get the Account name

Add a Get Records element to fetch the related Account:

  • Object: Account
  • Filter: Id equals {'{'}$Record.AccountId{'}'}
  • Store: Automatically store all fields

This gives you Account.Name to include in the Slack message.

Step 3: Send the Slack message

Option A: Native Slack action (AppExchange app)

If you have the Salesforce for Slack app installed, add a Send Slack Message action:

  • Channel: #executive-deals
  • Message: Use merge fields for Opportunity.Name, Amount, Owner.Name, and the Account name from Step 2

Option B: HTTP Callout to Slack Webhook

For richer formatting, use an HTTP Callout action (or Apex Invocable) to send Block Kit JSON to a Slack Incoming Webhook:

  • URL: Your Slack Incoming Webhook URL
  • Method: POST
  • Body:
{
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": ":dart: *New Large Opportunity Created*\n*{!Opportunity.Name}*\nAmount: *${!Opportunity.Amount}*\nStage: {!Opportunity.StageName}\nOwner: {!Opportunity.Owner.Name}\nAccount: {!Account.Name}"
      }
    },
    {
      "type": "context",
      "elements": [
        {
          "type": "mrkdwn",
          "text": "<https://your-org.lightning.force.com/lightning/r/Opportunity/{!Opportunity.Id}/view|View in Salesforce>"
        }
      ]
    }
  ]
}

Replace your-org with your Salesforce domain.

Step 4: Activate the Flow

  1. Click Save, then Activate
  2. Create a test Opportunity with Amount set to $60,000
  3. Verify the Slack message appears in your channel
  4. Create a second test Opportunity under $50K and confirm no alert fires
Multi-currency orgs need ConvertedAmount

If your org has multi-currency enabled, the Amount field stores the value in the record's currency. For consistent USD threshold comparisons, use the ConvertedAmount field in your entry conditions instead.

Troubleshooting

Common questions

Can I send Block Kit messages from Flow Builder?

Not with the native Send Slack Message action — it only supports plain text. For Block Kit formatting, use an HTTP Callout action to a Slack Incoming Webhook. This requires Named Credentials in Salesforce and building the JSON payload manually with merge fields.

Will bulk-imported Opportunities trigger hundreds of Slack alerts?

Yes. Record-Triggered Flows fire per record in bulk operations (Data Loader, API batch updates). Salesforce enforces governor limits — up to 2,000 records per transaction. If you regularly bulk-import Opportunities, add a custom field like Imported__c and exclude it in the entry conditions to prevent alert floods.

How do I handle multi-currency orgs?

If your org has multi-currency enabled, the Amount field stores the value in the record's currency. A $50K USD threshold won't match a deal entered in EUR. Use the ConvertedAmount field in your entry conditions instead — it normalizes all amounts to your corporate currency.

Cost

Record-Triggered Flows are included in all Salesforce Enterprise, Unlimited, and Developer editions at no additional cost.

Looking to scale your AI operations?

We build and optimize automation systems for mid-market businesses. Let's discuss the right approach for your team.