- 20
- opportunities per digest, ranked by score
- 2
- ways out: by hand, or on a schedule
- 3
- log states per record: complete, pending, failed
- 1
- install for the org, then a channel per person
How it started
GovSpend's Opportunities module scores buying signals: an agency meeting where a purchase came up, a contract about to expire, a bid that matches what you sell. Ranking them is the easy half. The hard half is that the ranking lives in a tab nobody has open. In September 2026 the release notes added Opportunities in Slack, the integration that carries those signals out to where the team is. I was the lead developer on it.
The problem
A signal is only worth something before everyone else sees it, and the window is short. The pattern it has to beat is a person who remembers to open GovSpend, sorts the feed, copies the two records that matter and pastes them into the channel where the deal is actually being discussed. That happens on the good days. On the ordinary ones nobody opens the tab, the opportunity ages, and by the time it turns into a formal bid the advantage is gone.
The approach
Two ways to move a record, one channel. A Slack admin installs the app once for the organization; after that each person goes to Manage Integrations, picks their own channel and authorizes it. From then on any GovSpend or Web opportunity can go out by hand, with Send to Slack inside View Details, and the message carries most of what the detail view shows plus a link back into the record. Or the Buying Signals settings turn on the scheduled version: pick daily or weekly and the top 20 opportunities by score arrive in that channel without anyone asking.
By hand and on a schedule
The two ways out cover two different moments. Send to Slack is for the record you are looking at right now and want three people to see before the call. The digest is for the opportunity nobody went looking for: twenty of them, ranked by score, arriving on a rhythm the person chose once. Shipping only the manual push would leave the whole feed unread; shipping only the digest would make the interesting record wait until tomorrow.
One install, one channel per person
Installing and using are deliberately separate. A Slack admin approves the app once for the organization, and someone who is not an admin gets a request flow instead of a dead end. After that every person picks their own channel from Manage Integrations, which is what keeps a territory's signals out of a channel that does not care about them. The page then shows a connected status and the channel it points at, so nobody has to remember what they wired up.
A push you can audit
Anything that pushes on a schedule eventually fails quietly, and in a channel nobody notices the message that never arrived. So every record that goes out lands in the Integration Logs as its own row, with a status of Complete, Pending or Failed, and a failed one opens to the error text you can copy and hand to support. It is the difference between a user saying the integration is broken and a user saying which record broke and why.
On screen · tap to enlarge
What's next
It shipped in the September 2026 release notes, in the same batch as the Pavilion third-party signals that now feed the Opportunities module, so there is more arriving in the feed that the integration carries out. It sits in The Lab, GovSpend's beta program, which is where the platform puts what customers are trying before it is general.
Stack
- Slack App
- OAuth
Public sources
- Help Center: Slack Opportunities integration, setup, Send to Slack, digests and logs
- Release notes, September 2026: Opportunities into a Slack channel, by hand or as a digest
- Help Center: The Lab, where the Slack work is listed as a beta program
- Help Center: the Opportunities module and how its signals are scored
- Tech stack integrations: alerts in a channel when new opportunities match
