Announcements
Your file is currently under scan for potential threats. Please wait while we review it for any viruses or malicious content.
Hi,
I’ve run into this before with older SharePoint REST-based templates. The issue isn’t actually the Compose action itself it’s that the SP_HTTP_Create_list step is returning a string, not a JSON object, so the expression can’t access ['d']['id'].
Here’s how you can fix it.
Step 1: Check the HTTP action headers
Open your flow → edit → expand SP_HTTP_Create_list and make sure these headers exist:
Accept: application/json;odata=verbose Content-Type: application/json;odata=verbose
Save and test again. This alone fixes it in many cases because it forces SharePoint to return the expected structure.
Step 2: If it still fails, adjust the Compose expression
Sometimes Power Automate treats the HTTP response as text. In that case, update your ListGUID (Compose) action from:
@body('SP_HTTP_Create_list')?['d']?['id']
to:
@json(body('SP_HTTP_Create_list'))?['d']?['Id']
Note: SharePoint often returns Id (capital I), not id.
Step 3: Confirm what SharePoint actually returned
If you're unsure, check a failed run:
Go to Run history
Open the failed run
Expand SP_HTTP_Create_list
Look at Body
You should see something like:
{ "d": { "Id": "..." } }
Use whatever field name appears there (Id vs id) in your Compose expression.
This usually happens because the template was built against a specific SharePoint REST response format, and newer environments sometimes return slightly different metadata unless the verbose headers are explicitly set.
Once the Compose step can read the ID correctly, the rest of the template install flow should continue normally.
Thank you for your thorough response! Here's how it went-
I confirmed the headers were as described as above and ran the test again with no change.
@body('SP_HTTP_Create_list')?['d']?['id'] to:
@json(body('SP_HTTP_Create_list'))?['d']?['Id'] Note: SharePoint often returns Id (capital I), not id.
It may be a limitation based on my organization, environment, or my own inexperience but it does not seem I am able to edit the code in the ListGUID action. I can peek the code, but cannot swap @body('SP_HTTP_Create_list')?['d']?['Id'] to @json(body('SP_HTTP_Create_list'))?['d']?['Id'] within it. When I expand the ListGUID action, I see this icon-
I attempted to copy @json(body('SP_HTTP_Create_list'))?['d']?['Id'] into the field in place of this icon and this icon appeared-
However the test failed again.
I checked a failed run and did not find what was described when I expanded SP_HTTP_Create_list and looked at Body. This is what I see in the Body field under SP_HTTP_Create_list:
{ "__metadata": { "type": "SP.List" }, "BaseTemplate": 100, "Description": "SP list for a project log, RACI assignments, kanbans, and GANTT charts", "Title": "ProjectTracker" } Thank you again for helping me work through this! I am new to Power Automate and trying to learn as I go.
Under review
Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.
Jump in, show your community spirit, and win prizes!
Expanding mentorship, skilling, and AI innovation
These are the community rock stars!
Stay up to date on forum activity by subscribing.
Valantis 377
11manish 279
David_MA 234 Super User 2026 Season 1