Alert Slack on large Salesforce opportunities using Flow Builder
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.
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
- Click Save, then Activate
- Create a test Opportunity with Amount set to $60,000
- Verify the Slack message appears in your channel
- Create a second test Opportunity under $50K and confirm no alert fires
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.