All posts

Emacs Approval Workflows via Slack/Teams

Emacs is a long-standing powerhouse for developers, celebrated for its flexibility and extensibility. But even power tools like Emacs need to fit seamlessly within modern workflows. Managing approval pipelines directly from Slack or Teams speeds up decision-making while reducing friction. Pairing Emacs with messaging platforms unlocks this capability, allowing organizations to handle approvals faster without leaving familiar tools. This post walks through setting up Emacs-based approval workflo

Free White Paper

Slack / Teams Security Notifications + Access Request Workflows: The Complete Guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free. No spam. Unsubscribe anytime.

Emacs is a long-standing powerhouse for developers, celebrated for its flexibility and extensibility. But even power tools like Emacs need to fit seamlessly within modern workflows. Managing approval pipelines directly from Slack or Teams speeds up decision-making while reducing friction. Pairing Emacs with messaging platforms unlocks this capability, allowing organizations to handle approvals faster without leaving familiar tools.

This post walks through setting up Emacs-based approval workflows integrated with Slack and Teams. By the end, you’ll have a clear path to streamline decisions using enhanced automation.


Why Connect Emacs to Slack or Teams for Approvals?

Approval workflows often stall when critical decisions require team collaboration. Switching between tools like Emacs and messaging apps disrupts focus and slows productivity. By bridging Emacs with Slack or Teams, approvals become quick, frictionless, and easy to track.

Here’s what happens when these tools work together:

  • Quicker Decisions: Instead of waiting for email responses, approve directly from Slack or Teams.
  • Better Context: Conversations stay tied to approvals, keeping teams aligned.
  • Reduced Overhead: Fewer manual steps save time and effort across teams.

Setting Up Emacs Approval Workflows

Integrating Emacs workflows with Slack or Teams doesn’t need a complex setup. Let’s break it down into simple steps:

1. Configure Your Emacs Environment

First, ensure Emacs is equipped for interactions with external systems. To do this, you can use packages like org-mode or REST Client Mode, which provide a foundation for seamless outbound or inbound communication.

  • Install relevant extensions (e.g., org-mode).
  • Set up hooks or commands that trigger approval messages.
  • Use JSON templates or webhook-friendly formats for sharing structured approvals.

2. Create Messaging API Access

Slack and Teams both offer APIs for bots and messages. Generate credentials for the respective API to allow Emacs to communicate:

  • In Slack, create a bot in Slack’s Developer Portal and add permissions for sending and receiving messages.
  • For Microsoft Teams, register an Azure app with Graph API permissions to send Teams messages.

Store credentials securely, preferably through environment variables accessed within Emacs.

Continue reading? Get the full guide.

Slack / Teams Security Notifications + Access Request Workflows: Architecture Patterns & Best Practices

Free. No spam. Unsubscribe anytime.

3. Automate Approval Events

Map key approval checkpoints in Emacs (e.g., when merging code or deploying). Use hooks to define triggers.

Example in Emacs Lisp:

(defun send-slack-approval (payload) 
 "Send an approval request to Slack." 
 (let* ((url "https://slack.com/api/chat.postMessage") 
 (headers `(("Content-Type" . "application/json") 
 ("Authorization" . ,(concat "Bearer " (getenv "SLACK_TOKEN"))))) 
 (response (request url 
 :type "POST" 
 :headers headers 
 :data (json-encode payload)))) 
 (log-response response)))

This example shows how approval events can be shared as structured payloads. Adapting it for Teams follows the same principles.

4. Notify Teams for Feedback

When approvals require input, connect Emacs workflows to messaging channels for real-time collaboration. Use message attachments in Slack or Adaptive Cards in Teams to collect responses:

  • Slack interactive buttons can confirm or deny approvals.
  • In Teams, users can interact directly with Adaptive Cards’ approval forms.

5. Parse Responses in Emacs

Ensure Emacs can process incoming responses through webhook listeners or polling endpoints. Parse these inputs to update approval states automatically. Libraries like request.el simplify this.

With this loop complete, approvals move bi-directionally across Emacs and your messaging platform.


Making Workflows Flexible

What makes this powerful is adaptability. Both Slack and Teams APIs offer extensive possibilities for:

  • Dynamic routing based on teams, users, or approval type.
  • Logging approvals or denials for auditing purposes.
  • Extending workflows to handle escalations or retries.

Proper integration ensures the workflow adapts to your team's needs without being inflexible or hard to maintain.


See It in Action

Manual approvals make no sense when processes can run themselves. Whether it’s automating deploy authorizations or request sign-offs, combining Emacs with Slack or Teams delivers fast, transparent, and efficient workflows. Tools like Hoop.dev simplify integration so you can set up and test it live in minutes. Unlock the potential of workflows built for seamless collaboration.


Replace approval delays with automation you can trust. Integrate Emacs into your Slack or Teams environment today and see how much smoother approvals can be. With the right setup, decision-making no longer slows your team down—allowing your projects to move at the pace of your code.

Get started

See hoop.dev in action

One gateway for every database, container, and AI agent. Deploy in minutes.

Get a demoMore posts