How to connect Salesforce to Slack for approvals and deal moments
Connect Salesforce to Slack to move approvals into the channel so deals stop waiting, and pick which deal events are worth announcing.
On this page
- Key takeaways
- What we'll cover
- Approvals, which are where deals wait
- Deal moments worth announcing
- Building it with CodeWords
- Approving from a message, safely
- What not to send to the sales channel
- Field history, which you will want later
- Account context for whoever is on the call
- Salesforce's own Slack capabilities
- Making it survive
- Limits worth knowing about
- What to set up first
- Frequently asked questions
- Related reading
To connect Salesforce to Slack, start with approval requests: send each one to the approver in Slack with everything needed to decide, and let them approve or reject from the message. Approvals are where deals wait, because the approver often has not opened Salesforce that day. Deal announcements are useful, but approvals have the biggest effect on how quickly deals close.
Key takeaways
- Send approval requests to the approver in Slack with the account, amount, discount and what is non-standard, so they can decide without opening Salesforce.
- Act as the approver, not as the integration, so Salesforce's approval history records the person.
- Announce outcomes and requests (won, lost with a reason, large deals moving), not process events such as every stage change.
- Check the native Salesforce and Slack features first, and build custom when a message needs data from outside Salesforce.
- Enable field history tracking before you need it, because it is not retroactive.
What we'll cover
- Approvals, which are where deals wait
- Deal moments worth announcing
- Building it with CodeWords
- Approving from a message, safely
- What not to send to the sales channel
- Field history, which you will want later
- Account context for whoever is on the call
- Salesforce's own Slack capabilities
- Making it survive
- Limits worth knowing about
- What to set up first
- Frequently asked questions
Approvals, which are where deals wait
Approval requests are where deals wait, because each request is addressed to one person who may not open Salesforce or read the email. Sending the request to Slack with full detail removes a delay that is entirely avoidable.
- Send everything needed to decide: the account, the amount, the discount, what is non-standard and who is asking. An approver who has to open Salesforce to understand the request has gained nothing from the message.
- Escalate on age, not on a schedule. A request past a threshold should nudge the approver once, then their manager if the threshold is serious.
- Report the queue weekly. The number of waiting approvals and how long they wait is a figure sales leadership rarely has and would act on.
- Include the deadline where one exists. A quarter-end approval and a routine one are different, and the request itself does not say which.
Deal moments worth announcing
Announce a small set of deal moments, each addressed to a specific audience. Send fewer messages than most teams do.
- Deal won, to the team channel. It helps morale and tells downstream teams that work is coming.
- Deal above a threshold moving stage, to leadership, because large deals warrant attention that routine ones do not.
- Deal lost with a reason, to whoever should learn from it, usually product and marketing.
- An account at risk, joined with usage or support data from outside Salesforce. Salesforce cannot generate this message on its own.
- A deal stalled past a threshold, to the owner, not a channel, because it is a nudge, not an announcement.
Building it with CodeWords
CodeWords connects to 3,000+ integrations (CodeWords integrations directory, 2026), and you make each connection once and reuse it. You describe the outcome and Cody, the automation builder, builds, connects and deploys it.
- Open CodeWords and start a new automation.
- Describe to Cody what should happen in plain language: which records, which events, who is told, and what they should be able to do.
- Authorize the connection to Salesforce with its own integration user, and to your Slack workspace.
- Describe the exceptions: an approval already actioned, a record the approver cannot see, a user who cannot be mapped between systems.
- Test against a sandbox and a test channel before anything reaches the sales team.
The free plan covers light use. Pro costs $39 per month ($33 per month billed yearly) and Business costs $100 per month (CodeWords pricing page, 2026). Details are on the pricing page.
Approving from a message, safely
Approving from a Slack message is worth doing, and the integration must act as the approver, not as itself. Approvals are the one place where acting from Slack is clearly worth it, and also where care matters most.
- Act as the approver. Salesforce's approval history must record the person. An integration approving on someone's behalf makes the audit trail meaningless.
- Check permission before offering the button. Someone who cannot approve should not see an approve button that fails.
- Require a comment on rejection. A rejection with no reason sends the deal back with nothing to act on.
- Update the message after the action, showing who approved and when, so anyone else looking knows it is handled.
- Handle the already-approved case. Two people pressing approve on the same message is normal. Tell the second person it is done instead of showing an error.
- Keep amounts out of public channels. Approval requests contain commercial detail, so check the channel's membership before the first request arrives.
What not to send to the sales channel
Do not send process events to the sales channel. Announce outcomes and requests, because a channel of process events is a worse version of a report.
- Every stage change. Deals move constantly and the board already shows it.
- Every new lead. Volume is high and the owner is notified anyway.
- Every field edit. Nobody reads these, and they are the largest source of noise.
- Activity logging. Logged calls and emails are a record, not an event.
- Forecast changes as they happen. The forecast is a weekly conversation, not a stream.
Field history, which you will want later
Salesforce field history tracking is not retroactive, so enable it now on the fields you may need to audit. It is invisible until it matters.
- Salesforce tracks field history selectively, on fields configured for it, with retention that depends on your configuration.
- To answer "when did this deal's amount change and who changed it", enable tracking on those fields now.
- A Slack integration can record changes as they happen. This is a reasonable backup and makes the history searchable where people already look.
- Keep the record somewhere durable. A channel is not an archive, and retention is a workspace setting.
- Log who acted through the integration, separately from what Salesforce recorded. Reconciling the two is otherwise guesswork.
Account context for whoever is on the call
A Slack command that returns an account's state gives the person on a call a quick answer without switching tools. This is what Slack does well and Salesforce does not.
- Return the account's state in one message: open opportunities, recent activity, open support tickets and payment status.
- Join across systems. The useful version includes support and billing data that Salesforce does not hold.
- Keep it read-only. A lookup that also edits makes people nervous about running it.
- Respect visibility. Salesforce sharing rules exist, and a lookup that returns data the asker could not see in Salesforce bypasses them.
- Post privately by default, visible only to the person who asked. Account detail in a shared channel is a disclosure decision, not a convenience.
Salesforce's own Slack capabilities
Salesforce has built-in Slack capabilities that you should check before building anything. Salesforce and Slack belong to the same company, and the native options have grown.
- Native Slack actions exist in Salesforce's own automation and post messages without custom development.
- Channel creation per deal or per account is available in some editions. For large deals, a dedicated channel is useful.
- Record visibility inside Slack is supported to varying degrees, depending on edition and configuration.
- Availability differs by edition. Confirm this first, because a capability in the documentation may not exist in your org.
- Build custom when the message needs outside data. An at-risk account alert that combines usage, support tickets and payment status is the clear case.
Use native features for anything purely Salesforce-shaped, and build when the value comes from joining Salesforce with something else.
Making it survive
Make the integration survive by keying events, mapping users and respecting sharing rules.
- Make it idempotent, keyed on the record and the change, because platform events and webhook deliveries repeat.
- Map users between Salesforce and Slack from your directory, and report failures instead of dropping messages.
- Respect sharing rules. Act as the user where possible so record visibility is enforced, not assumed.
- Treat an approval actioned elsewhere as a normal case, not an error.
- Report the outcome: messages sent, approvals actioned through the integration, and anything that failed.
Limits worth knowing about
Five limits shape a Salesforce to Slack integration.
- API limits are daily and shared across everything integrating with the org, so a chatty integration competes with your other tools.
- Approval processes are configured per object and can be multi-step, so the message should say which step the approval is.
- Sharing rules are complex. An integration user with broad visibility can surface records the recipient should not see.
- Slack interactive messages have a response deadline, so a slow Salesforce call needs an immediate acknowledgment.
- Field history tracking is limited in how many fields it covers and how long it retains. Check this before relying on it.
What to set up first
Set up approval requests first. Deliver each to the approver with the account, amount, what is non-standard and who is asking, and let them approve or reject with a comment. This is the one message on this list with a measurable effect on how quickly deals close.
Two habits make the difference. Include the non-standard detail in the message instead of linking to it. And require a comment on rejection, because a deal sent back with no reason comes back unchanged.
Frequently asked questions
What is the highest-value Salesforce message to send to Slack?
Approval requests, with enough detail to decide and the ability to act. Approvals waiting on someone who has not logged in that day are a common and avoidable source of delay in closing deals.
Should the integration approve on the user's behalf?
No, it should act as the user, so Salesforce's approval history records the person. An integration approving as itself makes the audit trail useless, which matters for any commercial decision.
Should deal stage changes go to a channel?
No. Deals move constantly and the board already shows the changes. Announce outcomes such as won deals, lost deals with a reason, and large deals moving. Send nudges about stalled deals to the owner, not the channel.
Is there a disclosure risk?
Yes. Approval requests and account lookups contain commercial detail, and Salesforce sharing rules do not apply to a Slack channel. Check channel membership, and post lookups privately to the person who asked.
Can I look up account information from Slack?
Yes. The useful version joins Salesforce with support and billing data so the answer is complete. Keep it read-only, and respect sharing rules by acting as the person asking, not as a broadly privileged integration user.
Why do I need to enable field history tracking now?
Field history tracking is not retroactive. If you may need to know when an amount or a close date changed and who changed it, turn tracking on before the change happens.
Will this count against our API limits?
Yes. Salesforce API limits are daily and shared across every integration on the org. Keep the message set small, batch requests where you can, and check your current consumption before adding anything that sends frequent calls.
Should I use Salesforce's native Slack features?
Yes, for anything purely Salesforce-shaped, because they need no building and no maintenance. Confirm what your edition includes first, since availability varies. Build custom when a message needs data from outside Salesforce.
What message can only be built custom?
An account-at-risk alert that combines Salesforce data with product usage, support history and payment status. Salesforce cannot see those sources, and the combination is what makes the alert worth acting on.