Register your interest: Tag @Cody, get an agent
BlogResources

How to connect Salesforce to Slack for approvals and deal moments

Approvals waiting on somebody are the deals that stall. How to move the approval into the channel, which deal events are worth announcing, and the field history question nobody asks until later.

Isha MagguIsha Maggu11 min read

Summarize with AI

How to connect Salesforce to Slack for approvals and deal moments
On this page

There is a specific, expensive failure in most sales organisations: a deal sitting in an approval queue because the person who has to approve it has not logged into Salesforce today. Discounts, contract terms, and non-standard pricing all route through somebody who is in meetings, and the deal waits.

That is the problem worth pointing a Slack integration at. Deal announcements are pleasant and largely decorative; approvals are where hours of delay turn into a quarter that closes late.

What we'll cover

Approvals, which are where deals wait

Approval requests are addressed to one person and are invisible to them unless they open Salesforce or read the email.

The delay is usually hours to days, and it is entirely avoidable, which makes it the highest-return message on this list.

Send it with everything needed to decide. The account, the amount, the discount, what is non-standard about it, 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 sitting past a threshold should nudge once, to the approver, and then to their manager if the threshold is serious.

Report the queue weekly. How many approvals are waiting and for how long is a number 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 nothing in the request itself says which.

Deal moments worth announcing

A smaller set than most teams send, and each addressed to somebody.

Deal won, to the team channel. Genuinely useful for morale and for the teams downstream who need to know 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, which is usually product and marketing rather than sales.

An account at risk, joined with usage or support data from outside Salesforce, which is the message Salesforce cannot generate on its own.

A deal stalled past a threshold, to the owner rather than to a channel, since it is a nudge and not an announcement.

Building it with CodeWords

CodeWords connects to more than 3,000 integrations, and the connection is made once and reused.

  1. Open CodeWords and start a new automation.
  2. Describe what should happen in plain language to Cody, the automation builder: which records, which events, who is told, and what they should be able to do.
  3. Authorize the connection to Salesforce with its own integration user, and to your Slack workspace.
  4. Describe the exceptions: an approval already actioned, a record the approver cannot see, a user who cannot be mapped between systems.
  5. Test against a sandbox and a test channel before anything reaches the sales team.

You describe the outcome; Cody builds it, connects it, and deploys it. The free plan covers light use, with Pro at $39 per month and Business at $100 per month as usage grows; details are on the pricing page.

Approving from a message, safely

Approvals are the one place where acting from Slack is clearly worth it, and also where care matters most.

Act as the approver, not as the integration. Salesforce's approval history needs to record the person, and an integration approving on somebody's behalf makes the audit trail meaningless.

Check permission before offering the button. Somebody who cannot approve should not be shown an approve button that fails.

Require a comment on rejection. A rejected approval with no reason sends the deal back with nothing to act on, and the reason is the useful part.

Update the message after the action, showing who approved and when, so anybody else looking at it knows it is handled.

Handle the already-approved case. Two people seeing the same message and both pressing approve is normal, and the second should be told it is done rather than getting an error.

Keep amounts out of public channels. Approval requests contain commercial detail, and the channel's membership is worth checking before the first one arrives.

What not to send to the sales channel

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. Calls and emails logged are a record, not an event.

Forecast changes as they happen. The forecast is a weekly conversation, not a stream.

The distinction worth holding: announce outcomes and requests, not process. A channel of process events is a worse version of a report.

Field history, which you will want later

Worth a note because it is invisible until it matters.

Salesforce tracks field history selectively, on fields configured for it, with retention that depends on your configuration.

If you want to answer "when did this deal's amount change and who changed it", enable tracking on those fields now. It is not retroactive.

A Slack integration can record it as it happens, which is a reasonable backup and makes the history searchable where people already look.

Keep the record somewhere durable rather than relying on message history, since a channel is not an archive and retention is a workspace setting.

Log who acted through the integration, separately from what Salesforce recorded, because reconciling the two is otherwise guesswork.

Account context for whoever is on the call

The thing Slack is good for and Salesforce is not: somebody asking a quick question about an account.

A command that returns the account's state — open opportunities, recent activity, open support tickets, payment status — in one message, without switching tools.

Join across systems. The useful version includes support and billing data Salesforce does not hold, which is exactly what the person asking wants to know.

Keep it read-only. A lookup that also edits is a lookup people are nervous about running.

Respect visibility. Salesforce sharing rules exist, and a lookup that returns data the asker could not see in Salesforce has quietly bypassed them.

Post it privately by default, visible only to the person who asked, since account detail in a shared channel is a disclosure decision rather than a convenience.

Salesforce's own Slack capabilities

Worth checking before building, since Salesforce and Slack are the same company and the built-in options have grown.

Native Slack actions exist in Salesforce's own automation, covering message posting without any custom development.

Channel creation per deal or per account is available in some editions, and for large deals a dedicated channel is genuinely useful.

Record visibility inside Slack is supported to varying degrees depending on edition and configuration.

Availability differs by edition, which is the thing to confirm first — a capability in the documentation may not be in your org.

Build custom when the message needs outside data. An at-risk account alert combining usage, support tickets, and payment status is the clear case, because Salesforce cannot generate it alone.

The honest split: use the native features for anything purely Salesforce-shaped, and build when the value comes from joining Salesforce with something else.

Making it survive

Make it idempotent, keyed on the record and the change, since platform events and webhook deliveries repeat.

Map users between Salesforce and Slack from your directory, and report failures rather than dropping messages.

Respect sharing rules. Act as the user where possible so record visibility is enforced rather than assumed.

Handle the approval that was 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

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 an approval may be one of several and the message should say which.

Sharing rules are complex, and 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 acknowledging immediately.

Field history tracking is limited in how many fields it covers and how long it retains, which is worth checking before relying on it.

What to set up first

Approval requests delivered to the approver with everything needed to decide — account, amount, what is non-standard, and who is asking — plus the ability to approve or reject with a comment. It 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 rather than linking to it, since an approver who has to open Salesforce has gained nothing. And require a comment on rejection, because a deal sent back with no reason simply comes back again 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 somebody who has not logged in today are a common and entirely avoidable source of delay in closing.

Should the integration approve on the user's behalf?

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 anything commercial.

Should deal stage changes go to a channel?

No. Deals move constantly and the board already shows it. Announce outcomes — won, lost with a reason, large deals moving — and send nudges about stalled deals to the owner rather than 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, and 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 rather than as a broadly privileged integration user.

Why do I need to enable field history tracking now?

Because it is not retroactive. If you will ever need to know when an amount or a close date changed and who changed it, the tracking has to be 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 where you can, and check your current consumption before adding anything chatty.

Should I use Salesforce's native Slack features?

For anything purely Salesforce-shaped, yes — they need no building and no maintenance. Confirm what your edition includes first, since availability varies. Build custom when the message needs data from outside Salesforce, which is where most of the value is.

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 any of those, and that combination is what makes the alert worth acting on.

Get started today

Your first workflow is free to build.

Describe what you need. Cody handles the build, the connections, and the deployment.