How to Add Buttons to SharePoint Lists for Instant Flows

C
Collab365 TeamEditorialPublished Mar 30, 2026
13

At a Glance

Target Audience
SharePoint Admins, Power Automate Developers
Problem Solved
SharePoint Integrate menu fails to launch flows from list items in non-default environments, blocking ALM and production automation.
Use Case
Automating actions like approvals or notifications on SharePoint list items (e.g., event submissions) across dev/test/prod environments.

Most teams build their first automated workflows in the Default environment. It is easy. You select a SharePoint list item, click the "Integrate" dropdown, and trigger a flow.

Then your organization grows up.

You realize you need proper Application Lifecycle Management. You start migrating from the default environment to dedicated Test and Production environments.

And suddenly, everything breaks.

The native "For a selected item" trigger is strictly tied to the Default environment. If you move your flow to Production, that handy integration menu vanishes. This is a known limitation of SharePoint.

Known Limitation Of SharePoint
Known Limitation Of SharePoint

(You can read the full documentation here).

Your users are left confused. They want to select a row and instantly fire off an approval or generate a document. They do not care about your environment strategy. They just want their button back.

You do not need to buy expensive third-party tools to fix this. You just need to build your own button.

We use this exact method in our Collab365 Events Solution to handle submissions. It is clean, it is user-friendly, and it completely bypasses the environment restriction.

SharePoint list buttons
SharePoint list buttons

Here is the exact process to build a custom button that triggers any flow from any environment directly inside your SharePoint list.

Step 1: The Calculated Column Strategy

First, you need a place for your button to live.

Create a new column in your SharePoint list. Choose "Calculated Column" as the type. Why calculated? Because calculated columns do not appear in the default Edit form. This means your users cannot accidentally overwrite your button code when they are updating a row.

create new column in sharepoint
create new column in sharepoint

Step 2: The JSON Formatting

This is where people usually panic. Do not let the word JSON scare you. You do not need to be a developer. You just need to copy, paste, and tweak a few values.

Using declarative customization, you can format that blank calculated column into a highly visible action button.

Here is the exact code snippet to generate an "Approve" button:

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "button",
  "customRowAction": {
    "action": "executeFlow",
    "actionParams": "{\"id\":\"v1/ddadabc3-74e7-e647-a887-d54bebea26a6/16946751-28fa-4c6f-8200-c57896d29a9c\"}"
  },
  "attributes": {
    "class": "ms-fontColor-themePrimary ms-fontColor-themeDarker--hover",
    "title": "Approve"
  },
  "style": {
    "border": "1px solid #4CAF50",
    "background-color": "#4CAF50",
    "color": "white",
    "cursor": "pointer",
    "border-radius": "2px",
    "padding": "5px 10px"
  },
  "children": [
    {
      "elmType": "span",
      "attributes": {
        "iconName": "Flow"
      },
      "style": {
        "padding-right": "6px",
        "font-size": "14px"
      }
    },
    {
      "elmType": "span",
      "txtContent": "Approve",
      "style": {
        "vertical-align": "middle"
      }
    }
  ]
}

Paste this directly into the column formatting window.

json placement1
json placement1

json placement 2
json placement 2

Step 3: Connecting the Flow ID

Look closely at the JSON above. There is one line that matters more than anything else:

"actionParams": "{\"id\":\"v1/ddadabc3-73e7-e637-a885-e54bebea26a6/16946751-28fa-4c6f-8200-c57896d29a9c\"}"

That long string of numbers is the Flow Identifier. You need to replace my ID with yours.

To find it, navigate to your specific environment and open the flow details page. Click "Export Flow" and select the "Get Flow Identifier" option. If you are using solutions to export as a package, the process is identical.

Copy your unique ID, paste it into the JSON, and save.

You are done.

You now have a clean, idiot-proof button sitting right inside your list. It triggers the correct flow in the correct environment every single time. It is not flashy. It is just a rock-solid process that works.