Nudge reps about stalled Odoo deals every Monday in Slack
Every Monday, find the opportunities going cold in your Odoo pipeline and send each rep a Slack message with a specific next step for their own deals.
Every Monday at 8am, review my Odoo CRM pipeline for deals that have gone stale, and nudge the salesperson who owns each one with a Slack direct message.
Start with Odoo Search & Read Records (search_read) on crm.lead to pull open opportunities. Filter to type = "opportunity" with active = true, exclude anything already won or lost, and only include deals whose expected_revenue is above a value threshold I can set (default 5000). Treat a deal as stalled when its last activity date or write_date is older than 14 days. Read at least name, expected_revenue, stage_id, user_id, partner_id, write_date, date_last_stage_update, activity_date_deadline and probability. Remember that many2one fields such as user_id, stage_id and partner_id read back as [id, "Display Name"].
Skip any opportunity that already has a future activity scheduled. If activity_date_deadline is today or later, or a mail.activity record exists for that lead with a date_deadline in the future, leave the deal out entirely. That rep has already planned their next move and does not need a reminder.
For each remaining deal, gather enough context to say something specific. Read the linked contact from res.partner using partner_id (name, email, phone, company), and pull the recent chatter and any scheduled activities for the deal with search_read on mail.message and mail.activity, filtered by res_model = "crm.lead" and res_id = the deal id.
Then work out a specific suggested next step per deal rather than a generic reminder. A contact who went quiet after a proposal was sent needs a different nudge than one who never got a demo booked, or one sitting in qualification with no contact logged at all. Base the suggestion on what the chatter, stage and contact history actually show.
Group the stalled deals by owner. Resolve each Odoo salesperson to a Slack account by email: read the salesperson's email from res.users using user_id, then use Slack List Users to find the matching workspace member. Open a direct message with Open a Conversation, then use Send a Message to send exactly one message per rep containing only that rep's own stalled deals. For each deal include the deal name, its value, the current stage, how many days it has been stalled, and the suggested next step. One message per rep, never one message per deal.
Finally, log the nudge back into Odoo so the CRM stays the source of truth rather than the reminder only living in Slack. For every deal included in a message, create a follow-up activity on the lead using Create Record on mail.activity, or Call Model Method (execute_kw) to schedule the activity, assigned to the deal owner, dated a few days out, with the suggested next step as the summary and note.
Handle the edges sensibly. If a salesperson has no matching Slack account, skip the message for them, note it in the run summary, and still log the Odoo activity. If a deal has no owner set, group it into a single unassigned list and report it rather than dropping it silently. If nothing is stalled for a given rep, send them nothing at all instead of an empty message.
What does this prompt do?
- Scans your Odoo pipeline every Monday for open opportunities above a value you choose that have not moved in two weeks.
- Reads each deal's contact, recent notes and planned activities so the suggestion fits where the deal actually stands.
- Sends every salesperson one Slack direct message listing only their own stalled deals, with the value, stage, days stalled and a suggested next step.
- Logs a follow-up activity back onto the deal in Odoo, so the nudge is tracked in your CRM and not only in chat.
What do I need to use this?
- An Odoo account using the CRM app, with permission to connect it to other tools. On Odoo Online this requires a Custom plan; self-hosted and Odoo.sh instances work without it.
- A Slack workspace where the assistant can send direct messages.
- A salesperson set as the owner on your opportunities in Odoo, using the same email address in Odoo and Slack so each message reaches the right person.
- A minimum deal value and a staleness window you are comfortable with. The starting point is deals untouched for 14 days.
How can I customize it?
- Change the day and time it runs, for example Friday afternoon instead of Monday morning.
- Raise or lower the minimum deal value, and the number of days a deal can sit still before it counts as stalled.
- Also post a roll-up to a shared pipeline channel for sales managers, alongside the individual direct messages.
FAQs
Will this work with Odoo Online?
What if a rep has already planned their next step?
Will reps get spammed with one message per deal?
How does it know which Slack person matches which salesperson?
Does it change anything on my deals in Odoo?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.
Every Tuesday we pull your best new reviews, draft social captions, email testimonials and product page quotes, then stage them in Notion for approval.
Every weekday morning, unfulfilled orders get an address check: harmless typos fixed automatically, risky addresses held with a note to the customer.
Stop letting good deals go quiet.
Put your Odoo pipeline on a weekly review that reaches the right rep with the right next step.