Power BI Button Trigger in Power Automate Returns Empty Body

Ash 25 Reputation points
2025-07-30T14:12:00.2966667+00:00

Hi everyone,

I'm using the built-in Power Automate integration in Power BI to trigger a flow. I’ve configured the button and selected the data fields I want to pass into the flow. However, when I run the flow and inspect the trigger output, the body is completely empty.

Here’s what I’ve done so far:

  • Added the Power Automate visual in Power BI and selected the fields I want to send.
  • Created and edited the flow using the “On Power BI button clicked” trigger.
  • Inside the flow, I reference the expected data using @triggerOutputs()?['body']?['PPower Values'] in an Apply to each loop.

But the flow fails with this error:

The execution of template action 'Apply_to_each_2' failed: The result of the evaluation of 'foreach' expression '@triggerOutputs()?['body']?['PPower Values']' is of type 'Null'. The result must be a valid array.

I’ve confirmed that the trigger output body is empty, which seems to be the root cause.

Has anyone experienced this before? How can I ensure the data from Power BI is actually passed into the flow?

Thanks in advance!

Microsoft 365 and Office | Other
0 comments No comments

Answer accepted by question author
AceRobertT 14,455 Reputation points
2025-07-30T14:47:35.83+00:00

Hello Ash. This issue arises most often due to the fact that the flow was created outside of the Power BI report context, or that the Power Automate visual is not correctly configured to pass in the data. The “On Power BI button clicked” trigger is only able to pass the data, if the flow was created through the Power BI visual, and the exact fields are added to the field well of the visual. If the flow was made in Power Automate independently and than linked, the flow does not know how to access report context data, and will result in an empty body.

To correct this, simply remake the flow by clicking the Power Automate button inside Power BI and selecting "Create new flow". This way, your flow is now bound to the report's data model. Also, double check that the fields you want to pass are assigned to the Power Automate visual's field well, and they are not blank in the current filter context. Do not use calculated columns or measures that could produce blank. If you are using @triggerOutputs()?['body']?['PPower Values'] , check that "PPower Values" is the exact name of the field as it appears in the visual.

Here's the reference: Power BI Data is empty in Power automate

If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".

Best regards,

Was this answer helpful?

1 person found this answer helpful.

1 additional answer

Sort by: Oldest
  1. AceRobertT 14,455 Reputation points
    2025-07-31T01:31:53.6566667+00:00

    Hello Ash. Thanks for getting back. As you have already confirmed the flows were generated directly in Power BI and the fields are appropriately set within the visual, the best course of action is to very carefully verify the flow's trigger bindings and data context. At times, the Power BI visual only passes data when it is being rendered and not filtered out by slicers or page level filters. So, first make sure the data fields being passed are indeed populated in the current view where the button click occurs. Then within Power Automate, add a Compose action directly after the trigger and use the expression @triggerOutputs()?['body'] as this will give you a direct view of what is being received. If the output is still null try reducing the visual's fields down to just a single basic column, from your dataset, that you know has values. Sometimes more complex types, or calculated columns, fail to serialize with no warning. Also double check the field name you are referencing (when calling the value inside expression statements like ['PPower Values']); even a subtle naming or structure difference can result in null evaluation of the field identified. Once you are satisfied with the payload structure, you can then recreate your "Apply to each" logic. The approach described here provides a clean isolation to your problem and ensures any subsequent flow logic you build, is based around actual runtime data, not assumptions made from compile time configuration.

    Was this answer helpful?

    1 person found this answer helpful.
    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.