See llms.txt for all machine-readable content.

Coda and Slack integration

Save yourself the work of writing custom integrations for Coda and Slack and use n8n instead. Build adaptable and scalable Productivity, workflows that work with your technology stack. All within a building experience you will love.

How to connect Coda and Slack

Create a new workflow and add the first step

In n8n, click the "Add workflow" button in the Workflows tab to create a new workflow. Add the starting point – a trigger on when your workflow should run: an app event, a schedule, a webhook call, another workflow, an AI chat, or a manual trigger. Sometimes, the HTTP Request node might already serve as your starting point.

Coda and Slack integration: Create a new workflow and add the first step

Sync your HRIS employee directory with Microsoft Teams, Coda, and Slack

Employee Directory Sync – Microsoft Teams & Coda ⚠️ COMMUNITY TEMPLATE DISCLAIMER: This is a community-contributed template that uses ScrapeGraphAI (a community node). Please ensure you have the ScrapeGraphAI community node installed in your n8n instance before using this template. This workflow keeps your employee directory perfectly synchronized across your HRIS (or any REST-compatible HR database), Microsoft Teams, Coda docs, and Slack channels. It automatically polls the HR system on a schedule, detects additions or updates, and propagates those changes to downstream tools so everyone always has the latest employee information. Pre-conditions/Requirements Prerequisites An active n8n instance (self-hosted or n8n cloud) ScrapeGraphAI community node installed A reachable HRIS API (BambooHR, Workday, Personio, or any custom REST endpoint) Existing Microsoft Teams workspace and a team/channel for announcements A Coda account with an employee directory table A Slack workspace and channel where directory updates will be posted Required Credentials Microsoft Teams OAuth2 – To post adaptive cards or messages Coda API Token – To insert/update rows in your Coda doc Slack OAuth2 – To push notifications into a Slack channel HTTP Basic / Bearer Token – For your HRIS REST endpoint ScrapeGraphAI API Key – (Only required if you scrape public profile data) HRIS Field Mapping | HRIS Field | Coda Column | Teams/Slack Field | |------------|-------------|-------------------| | firstName| First Name| First Name | | lastName | Last Name | Last Name | | email | Email | Email | | title | Job Title | Job Title | | department| Department| Department | (Adjust the mapping in the Set and Code nodes as needed.) How it works This workflow keeps your employee directory perfectly synchronized across your HRIS (or any REST-compatible HR database), Microsoft Teams, Coda docs, and Slack channels. It automatically polls the HR system on a schedule, detects additions or updates, and propagates those changes to downstream tools so everyone always has the latest employee information. Key Steps: Schedule Trigger: Fires daily (or at your chosen interval) to start the sync routine. HTTP Request: Fetches the full list of employees from your HRIS API. Code (Delta Detector): Compares fetched data with a cached snapshot to identify new hires, departures, or updates. IF Node: Branches based on whether changes were detected. Split In Batches: Processes employees in manageable sets to respect API rate limits. Set Node: Maps HRIS fields to Coda columns and Teams/Slack message fields. Coda Node: Upserts rows in the employee directory table. Microsoft Teams Node: Posts an adaptive card summarizing changes to a selected channel. Slack Node: Sends a formatted message with the same update. Sticky Note: Provides inline documentation within the workflow for maintainers. Set up steps Setup Time: 10-15 minutes Import the workflow into your n8n instance. Open Credentials tab and create: Microsoft Teams OAuth2 credential. Coda API credential. Slack OAuth2 credential. HRIS HTTP credential (Basic or Bearer). Configure the HRIS HTTP Request node Replace the placeholder URL with your HRIS endpoint (e.g., https://api.yourhr.com/v1/employees). Add query parameters or headers as required by your HRIS. Map Coda Doc & Table IDs in the Coda node. Select Teams & Slack channels in their respective nodes. Adjust the Schedule Trigger to your desired frequency. Optional: Edit the Code node to tweak field mapping or add custom delta-comparison logic. Execute the workflow manually once to verify proper end-to-end operation. Activate the workflow. Node Descriptions Core Workflow Nodes: Schedule Trigger – Initiates the sync routine at set intervals. HTTP Request (Get Employees) – Pulls the latest employee list from the HRIS. Code (Delta Detector) – Stores the previous run’s data in workflow static data and identifies changes. IF (Has Changes?) – Skips downstream steps when no changes were detected, saving resources. Split In Batches – Iterates through employees in chunks (default 50) to avoid API throttling. Set (Field Mapper) – Renames and restructures data for Coda, Teams, and Slack. Coda (Upsert Rows) – Inserts new rows or updates existing ones based on email match. Microsoft Teams (Post Message) – Sends a rich adaptive card with the update summary. Slack (Post Message) – Delivers a concise change log to a Slack channel. Sticky Note – Embedded documentation for quick reference. Data Flow: Schedule Trigger → HTTP Request → Code (Delta Detector) Code → IF (Has Changes?) If No → End If Yes → Split In Batches → Set → Coda → Teams → Slack Customization Examples Change Sync Frequency // Inside Schedule Trigger { "mode": "everyDay", "hour": 6, "minute": 0 } Extend Field Mapping // Inside Set node items[0].json.phone = item.phoneNumber ?? ''; items[0].json.location = item.officeLocation ?? ''; return items; Data Output Format The workflow outputs structured JSON data: { "employee": { "id": "123", "firstName": "Jane", "lastName": "Doe", "email": "[email protected]", "title": "Senior Engineer", "department": "R&D", "status": "New Hire", "syncedAt": "2024-05-08T10:15:23.000Z" }, "destination": { "codaRowId": "row_abc123", "teamsMessageId": "msg_987654", "slackTs": "1715158523.000200" } } Troubleshooting Common Issues HTTP 401 from HRIS API – Verify token validity and that the credential is attached to the HTTP Request node. Coda duplicates rows – Ensure the key column in Coda is set to “Email” and the Upsert option is enabled. Performance Tips Cache HRIS responses in static data to minimize API calls. Increase the Split In Batches size only if your API rate limits allow. Pro Tips: Use n8n’s built-in Version Control to track mapping changes over time. Add a second IF node to differentiate between “new hires” and “updates” for tailored announcements. Enable Slack’s “threaded replies” to keep your #hr-updates channel tidy.

Popular ways to use the Coda and Slack integration

Build your own Coda and Slack integration

Create custom Coda and Slack workflows by choosing triggers and actions. Nodes come with global operations and settings, as well as app-specific parameters that can be configured. You can also use the HTTP Request node to query data from any app or service with a REST API.

Coda supported actions

Slack supported actions

Coda and Slack integration details

Coda

Coda

Coda is a tool that facilitates project management and meetings for organizations of different sizes by bringing all of their content, data, and teamwork into one powerful online document. It is used by more than 25,000 teams from all backgrounds.

Slack

Slack

Slack is a powerful collaboration tool for businesses of all sizes. It brings team communication and collaboration into one place so you can get more work done, whether you belong to a large enterprise or a small business.

FAQ about Coda integrations

Need help setting up your Coda and Slack integration?

Discover our latest community's recommendations and join the discussions about Coda and Slack integration.

  • Michelle

    Slack node: Channel list not loading with "Issues: There was a problem loading the parameter options from server: "[object Object]""

    Michelle

    I’m trying to use a Slack node for searching messages in a specific channel. Yet, when I add the option for channel selection, I get an error: *Issues: There was a problem loading the parameter options from server: “[ob…

    Open topic
  • Ageng Putra

    Slack Trigger Node stopped working between two different channels

    Ageng Putra

    Describe the problem/error/question I have two separate workflows, each using a different Slack app integration: Staging channel → uses trigger-app 1 Production channel → uses trigger-app 2 The issue: The Slack…

    Open topic
  • Kyrylo

    Slack's channel history timestamp parameters

    Kyrylo

    Describe the problem I’m trying to get certain messages from a channel. The way I had it configured with HTTP node was by making a request to this URL: https://slack.com/api/conversations.history?channel={{ $(‘get_all_m…

    Open topic
  • Ignas

    Scalable Slack triggers set up

    Ignas

    Describe the problem/error/question Hey Community, we recently rolled out N8N company wide and we are missing is scalable solution to Slack trigger set up. The problem is that for every workflow that we create in N8N we …

    Open topic
  • Sergiy B.

    Slack node token rotation issue

    Sergiy B.

    Describe the problem/error/question I have a Opt in option switched on in the Slack app, so tokens are rotating every 12 hours, but there is no way I found in n8n to make dynamik access tocken to be applied, so every 12…

    Open topic

Looking to integrate Slack and VirusTotal in your company?

Trusted by teams building smarter workflows.

Why

Why use n8n to integrate Coda with Slack

Handle branching, merging and iteration easily. Pause your workflow to wait for external events.

Re-run single steps to test changes in no time. And pin your data to avoid generating trigger events every time you execute.

Your data is displayed alongside your settings, making edge cases easy to track down.

Use 1000+ workflow templates available from our core team and our community.

Copy and paste, easily import and export workflows.

Simple enough to 
understand + sophisticated 
enough to ship