I tried updating the AWS Step Functions settings because the Teams Workflows webhook URL had been changed to a new format

I tried updating the AWS Step Functions settings because the Teams Workflows webhook URL had been changed to a new format

I tried updating the AWS Step Functions configuration to see if I could send notifications to Teams without changing the existing Adaptive Card format, after the Teams Workflows webhook URL was changed to a new format.
2026.07.28

This page has been translated by machine translation. View original

Introduction

Previously, I introduced how to send notifications to Microsoft Teams Workflows from AWS Step Functions HTTP tasks.

https://dev.classmethod.jp/articles/aws-stepfunctions-teams-workflows-jsonata/

In the previous article, I sent notifications from Step Functions to Teams in Adaptive Card format as shown below.

dyppxonahdlul1nwhns9 (1)
Notification sent from Step Functions to Teams in the previous article

Previously, the Webhook URL issued by Teams Workflows was in a format containing logic.azure.com as follows.

https://<region>.logic.azure.com:443/workflows/<workflow-id>/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=<signature>

On the other hand, the newly created Teams Workflows this time issued a URL containing environment.api.powerplatform.com as follows.

https://<environment>.environment.api.powerplatform.com:443/powerautomate/automations/direct/<path>/workflows/<workflow-id>/triggers/manual/paths/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=<signature>

According to Microsoft's announcement, starting August 2025, flows whose URLs contain logic.azure.com among HTTP trigger or Teams Webhook trigger flows have been migrated to new URLs. The old URLs are announced to become unavailable after November 30, 2025.

https://learn.microsoft.com/ja-jp/troubleshoot/power-platform/power-automate/flow-run-issues/triggers-troubleshoot

This time, I verified whether it is possible to send notifications to Teams without changing the Adaptive Card content by issuing a new format Webhook URL and modifying the settings of the Step Functions state machine created previously.

How to Issue a Webhook URL

Select [Workflows] from Microsoft Teams.

cm-hirai-screenshot 2026-07-23 10.45.42
Opening Workflows from the destination channel

Search for Webhook and select [Send a webhook alert to a channel].

cm-hirai-screenshot 2026-07-23 10.45.59
Selecting the Webhook template for a channel

Select the destination team and channel, then add the workflow.

cm-hirai-screenshot 2026-07-23 10.46.27
Creating a workflow by specifying the destination team and channel

The created workflow can be viewed from [Workflows] in Teams. Open the edit screen of the target workflow and expand the Webhook trigger to display the issued URL.

Click [Copy webhook link] to copy the Webhook URL.

cm-hirai-screenshot 2026-07-28 13.55.13
Copying the Webhook link from the workflow edit screen

The URL issued this time was in the following format.

https://default<environment-id>.d1.environment.api.powerplatform.com:443/powerautomate/automations/direct/cu/08/workflows/<workflow-id>/triggers/manual/paths/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=<signature>

The values for default<environment-id>, <workflow-id>, sig, and others vary by environment. When configuring Step Functions, use the URL obtained from [Copy webhook link].

Differences Between Old and New URLs

The main differences between the old URL and new URL confirmed this time are as follows.

Item Old URL New URL
Domain logic.azure.com environment.api.powerplatform.com
URL path /workflows/... /powerautomate/automations/direct/.../workflows/...
api-version 2016-06-01 1
sp /triggers/manual/run /triggers/manual/run
sv 1.0 1.0
sig Value issued with old URL Value issued with new URL

The old URL is in the following format.

https://prod-xx.japaneast.logic.azure.com:443/workflows/<old-workflow-id>/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=<old-signature>

The new URL is in the following format.

https://default<environment-id>.d1.environment.api.powerplatform.com:443/powerautomate/automations/direct/cu/08/workflows/<new-workflow-id>/triggers/manual/paths/invoke?api-version=1&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=<new-signature>

Changes to Step Functions

Using the state machine created in the previous article as-is, I changed the following settings in the HTTP task.

  • ApiEndpoint
  • QueryParameters

The following settings were not changed.

  • HTTP method
  • EventBridge connection
  • Adaptive Card JSON
  • Adaptive Card version
  • Content-Type

Changing ApiEndpoint

For ApiEndpoint, I set the value obtained by removing the following from the issued Webhook URL.

  • :443
  • Query string from ? onward

The old URL ApiEndpoint was as follows.

https://prod-xx.japaneast.logic.azure.com/workflows/<old-workflow-id>/triggers/manual/paths/invoke

The updated ApiEndpoint is as follows.

https://default<environment-id>.d1.environment.api.powerplatform.com/powerautomate/automations/direct/cu/08/workflows/<new-workflow-id>/triggers/manual/paths/invoke

In this environment, the following path was added to the new URL.

/powerautomate/automations/direct/cu/08

Rather than entering this path as a fixed value, use everything from https:// up to just before ? in the issued URL.

Changing QueryParameters

I set the portion after ? in the issued Webhook URL as the QueryParameters in the HTTP task.

Before the change:

{
  "api-version": "2016-06-01",
  "sp": "/triggers/manual/run",
  "sv": "1.0",
  "sig": "<old-signature>"
}

After the change:

{
  "api-version": "1",
  "sp": "/triggers/manual/run",
  "sv": "1.0",
  "sig": "<new-signature>"
}

The main change is that api-version changed from 2016-06-01 to 1.

Also, in the URL, the value of sp is URL-encoded as follows.

sp=%2Ftriggers%2Fmanual%2Frun

Set the URL-decoded value below in the Step Functions QueryParameters.

"sp": "/triggers/manual/run"

In the Step Functions HTTP task, values specified in QueryParameters are appended to the end of the API URL and automatically URL-encoded.

https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/call-https-apis.html

For query parameters including api-version and sig, do not reuse the previous configuration values; set the values included in the newly issued Webhook URL.

State Machine Configuration Example

The HTTP task configuration sections changed this time are as follows.

{
  "ApiEndpoint": "https://defaultxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.d1.environment.api.powerplatform.com/powerautomate/automations/direct/cu/08/workflows/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/triggers/manual/paths/invoke",
  "Method": "POST",
  "InvocationConfig": {
    "ConnectionArn": "arn:aws:events:ap-northeast-1:111111111111:connection/teams/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  },
  "QueryParameters": {
    "api-version": "1",
    "sp": "/triggers/manual/run",
    "sv": "1.0",
    "sig": "<signature>"
  }
}

RequestBody has not been changed from the Adaptive Card JSON used in the previous article.

The relevant portion of the Adaptive Card is as follows.

{
  "type": "message",
  "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.adaptive",
      "content": {
        "type": "AdaptiveCard",
        "body": [
          {
            "type": "TextBlock",
            "text": "<at>平井 裕二</at>",
            "weight": "bolder",
            "size": "medium"
          },
          {
            "type": "TextBlock",
            "text": "アラート通知です",
            "size": "Large",
            "wrap": true,
            "weight": "Bolder"
          },
          {
            "type": "Table",
            "columns": [
              {
                "width": 1
              },
              {
                "width": 2
              }
            ],
            "rows": [
              {
                "type": "TableRow",
                "cells": [
                  {
                    "type": "TableCell",
                    "items": [
                      {
                        "type": "TextBlock",
                        "text": "項目",
                        "weight": "Bolder"
                      }
                    ]
                  },
                  {
                    "type": "TableCell",
                    "items": [
                      {
                        "type": "TextBlock",
                        "wrap": true,
                        "text": "内容"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "TableRow",
                "cells": [
                  {
                    "type": "TableCell",
                    "items": [
                      {
                        "type": "TextBlock",
                        "text": "test",
                        "weight": "Bolder"
                      }
                    ]
                  },
                  {
                    "type": "TableCell",
                    "items": [
                      {
                        "type": "TextBlock",
                        "wrap": true,
                        "text": "hoge"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ],
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
        "version": "1.5",
        "msteams": {
          "width": "full",
          "entities": [
            {
              "type": "mention",
              "text": "<at>平井 裕二</at>",
              "mentioned": {
                "id": "example@example.com",
                "name": "平井 裕二"
              }
            }
          ]
        }
      }
    }
  ]
}

The Teams Workflows incoming Webhook supports both Adaptive Card and Message Card formats.

https://support.microsoft.com/ja-jp/workflows/send-messages-in-teams-using-incoming-webhooks

Therefore, in this verification, I sent to the new Webhook URL without changing the Adaptive Card JSON or version.

The following header set in the EventBridge connection was also not changed.

Content-Type: application/json

Verification

I executed the Step Functions state machine with the new Webhook URL configured.

Checking the Step Functions execution results, the HTTP task for Teams notification succeeded.

cm-hirai-screenshot 2026-07-28 13.49.10
Step Functions state machine execution results using the new Webhook URL

Next, I checked the Teams destination channel.

cm-hirai-screenshot 2026-07-28 13.48.42
Result of successfully sending a Teams notification using the new Webhook URL

The notification was sent in the same Adaptive Card format as in the previous article. Mentions, tables, and card width were also maintained.

In this verification, the following settings did not need to be changed.

  • Adaptive Card JSON
  • Adaptive Card version
  • Mention settings
  • EventBridge connection Content-Type
  • HTTP method POST

The settings that were changed are as follows.

  • ApiEndpoint
  • api-version in QueryParameters
  • sig in QueryParameters

sp and sv had the same values in both old and new URLs, but I also confirmed and set these from the newly issued URL.

From these results, I confirmed that in this configuration, by updating ApiEndpoint and QueryParameters to match the new Webhook URL, notifications can be sent without changing the existing Adaptive Card content.

Summary

Even when the Teams Workflows Webhook URL changes from a format containing logic.azure.com to one containing environment.api.powerplatform.com, notifications to Teams were possible by updating the Step Functions settings.

The main settings changed this time are as follows.

  • Change ApiEndpoint to the new URL
  • Change api-version and sig in QueryParameters to the newly issued values

The Adaptive Card JSON, card version, and mention settings did not need to be changed in this verification.

Since the path and query parameters in the new Webhook URL may differ by environment, it is necessary to check the URL issued from Teams Workflows and configure it accordingly, rather than reusing fixed values.

Share this article

AWSのお困り事はクラスメソッドへ