Salesforce Tables in Slack from Centro
Salesforce Tables in Slack from Centro lets you send rich, HTML-based tables directly into Slack channels using Salesforce Flow. You can use it to post open cases, pipeline summaries, or any tabular data your teams need to see in Slack.
This article walks through two ways to send tables to Slack:
Attaching a Salesforce report as an HTML table.
Building a fully custom HTML table inside a Flow.
Use cases: Daily open case lists, owner-based reminders, pipeline snapshots, customer health views, and more — all delivered to the Slack channels where people collaborate.
Prerequisites
Centro managed package installed and configured in your Salesforce org.
Centro connection to Slack set up (workspace authorized).
Permission to build or edit Salesforce Flows.
Access to the Salesforce reports and objects you want to use.
How It Works
Slack supports basic HTML tables in rich text messages. Centro’s Send Notification Flow element can post those HTML tables to any Slack channel. You can either:
Let a report drive the table (fastest setup), or
Construct the table yourself in Flow for more control over layout and fields.
In Slack, the first row of the table is automatically rendered in bold. You can treat that row as your header, or simply use it as an emphasized line of data.
Option 1: Send a Salesforce Report as an HTML Table
Use this approach when you already have a standard or custom report that includes the columns, subtotals, and totals you want to show in Slack.
Step 1: Create or Identify Your Report
In Salesforce, open or create the report you want to send (e.g., “Open Opportunities”).
Include all necessary columns, groupings, subtotals, and grand totals.
Save and make sure you have access to run the report.
Step 2: Build a Scheduled or Autolaunched Flow
Go to Setup > Flow and create a new Flow.
Choose a Scheduled Flow or Autolaunched Flow depending on how you want to trigger the notification (for example, daily at 8am).
Configure the start and save the Flow.
Step 3: Add the Centro Send Notification Element
In the Flow canvas, drag in the Centro Send Notification element.
In the element properties, configure:
Slack Channel – You can hard-code a channel (e.g.,
#case-reminders) or use a variable.Header / Message – Add context such as “Daily Open Opportunities” or “Open Cases for Hannah”.
Step 4: Attach the Report as a Table
Within the same Send Notification element, find the Attached Report section.
Select the Report you created in Step 1.
Set File Format to
Text. This tells Centro to send the report as an HTML-compatible table directly into Slack.Save your changes and activate the Flow.
When the Flow runs, the report will be posted into your target Slack channel as a formatted HTML table with all of the columns, subtotals, and totals from the report.
Option 2: Build a Custom HTML Table in Flow
Use this approach when you want full control over the fields, ordering, and formatting of each row. In this example, we’ll send a list of open Cases to a Slack channel.
Step 1: Create a Scheduled Flow
Create a new Scheduled Flow (e.g., scheduled on the User object).
Configure the schedule and criteria for which users (or records) should receive the reminder.
Step 2: Get the Records for Your Table
Add a Get Records element for the object you want (e.g., Case).
Set your filter criteria (e.g., Status = Open, Owner = the current User).
Ensure the element is configured to Get all records.
Step 3: Create Variables for the Table
Create a Text variable (e.g.,
varListRows) that will store the HTML for your table.Optionally, create a second variable (e.g.,
varOwnerName) if you want to mention or reference the Case Owner in the message header.
Step 4: Assignment – Start the Table
Add an Assignment element (e.g., “Set Table Start”) with the following:
Set
varListRowsusing the Add operator to the table header HTML, for example:
<table>
<tr>
<td>Case Number</td>
<td>Subject</td>
<td>Account</td>
<td>Status</td>
</tr>
This creates the opening <table> tag and your header row. Slack will render this first row in bold.
Step 5: Loop Through the Records
Add a Loop element over your Case collection from the Get Records step.
Inside the loop, you’ll combine:
an Assignment element to add a row to
varListRows, anda Text Template resource that defines how each row should look.
Step 6: Configure the Text Template for Each Row
Create a new Text Template resource (e.g., “Row Template”) with HTML like:
<tr>
<td>{!Loop_Case.CaseNumber}</td>
<td>{!Loop_Case.Subject}</td>
<td>
<a href="{!Loop_Case.Account.Link}">{!Loop_Case.Account.Name}</a>
</td>
<td>{!Loop_Case.Status}</td>
</tr>
Replace the field API names in the merge fields with your own Flow variables. The link example shows how you can make the Account name clickable in Slack.
Step 7: Assignment – Add Each Row
Inside the loop, add an Assignment element (e.g., “Set Open Cases Rows”).
Use the Add operator to append the Text Template to
varListRows:Variable:
varListRowsOperator: Add
Value: your row Text Template (e.g.,
{!Row_Template})
Optionally, set
varOwnerNameto the Case Owner in the same Assignment so you can mention them later in the Slack message.
Step 8: Assignment – End the Table
After the loop, add one more Assignment element (e.g., “Set End Table”) to close the table:
varListRows (Add) = "</table>"At this point, varListRows contains the full table: the header row, all of the data rows, and the closing tag.
Step 9: Send the Table to Slack Using Centro
Add the Centro Send Notification element at the end of your Flow.
Configure:
Slack Channel: Hard-code a channel like
#case-remindersor use a variable.Header / Message: For example:
@{!varOwnerName} – Open CasesRich Text Body: Insert the
{!varListRows}text variable.
Save and activate the Flow.
When the Flow runs, Centro posts your HTML table into Slack as part of the rich text message. Each row you built in the loop appears as a row in the table, just as demonstrated in the video.
Troubleshooting Tips
Table not rendering? Make sure you’re using valid HTML tags:
<table>,<tr>, and<td>.Everything looks bold? Remember that Slack bolds the first row. Ensure your header row is the first
<tr>element.Links not clickable? Confirm the anchor tag syntax:
<a href="https://example.com">Label</a>.No data in the table? Check your Get Records filters to verify that records are being returned to the Flow.
Next Steps
Once you have your first table working, you can reuse the pattern for:
Daily or weekly pipeline reviews in sales channels.
Case queues for service teams.
Account health and renewal reports for account teams.
If you’d like help modeling a specific use case or adapting these patterns to your org, please contact the Centro team.