100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
Programming

Dynamic Content

Learn how to pass outputs from triggers and earlier actions into later steps using Power Automate's dynamic content picker and underlying expressions.

Triggers & ActionsBeginner8 min readJul 10, 2026
Analogies

What Dynamic Content Represents

Dynamic content is the set of output values produced by the trigger and every action that ran before the current step, exposed in the flow designer as a searchable, clickable list whenever you place your cursor in an input field. Selecting an item, such as 'Subject' from an Outlook trigger or 'Id' from a Create item action, inserts an underlying expression like triggerOutputs()?['body/subject'] or outputs('Create_item')?['body/ID'] into the field, which the designer then renders as a friendly blue token chip rather than the raw expression text.

🏏

Cricket analogy: It's like a scorecard app that lets a commentator click a player's name and instantly pull in their live strike rate into the broadcast graphic, rather than typing the number manually each over.

Scope and Availability of Dynamic Content

Dynamic content is only available downstream of where it was produced, and its scope is affected by control-flow actions: values created inside an Apply to each loop are only directly clickable within that same loop (Power Automate wraps a reference to them from outside using an expression like first(body('Apply_to_each')) if you truly need one value out), and array-producing actions like 'Get items' expose their entire collection as a single dynamic content token, while individual item properties are only exposed once you're inside a loop iterating that collection.

🏏

Cricket analogy: It's like a player's individual innings-in-progress stats only being 'live' and referenceable while they're still batting; once the innings ends, you need a specific scorecard lookup to pull an old figure back out.

Referencing Trigger and Action Outputs

text
// Trigger output (Outlook 'When a new email arrives')
triggerOutputs()?['body/subject']

// Action output (a prior 'Create item' action named 'Create_item')
outputs('Create_item')?['body/ID']

// Item inside an Apply to each loop over 'Get_items'
items('Apply_to_each')?['Title']

// Pulling one value out of a loop from outside it
first(body('Apply_to_each'))?['Title']

Use the 'See more' link at the bottom of the dynamic content list to reveal outputs from actions that Power Automate initially hides because they're inside a different scope or loop — the values still exist, they're just collapsed until you expand that section.

When Dynamic Content Isn't Enough

The dynamic content picker only inserts a raw value as-is; the moment you need to transform, combine, or conditionally adjust that value — concatenating a first and last name, formatting a date, or converting text to uppercase — you switch to the Expression tab in the same picker, which gives access to the full function library (concat, formatDateTime, toUpper, and hundreds more) while still letting you reference dynamic content by clicking it, since expressions and dynamic content share the exact same underlying reference syntax.

🏏

Cricket analogy: It's like a scoreboard operator who can display a raw run count directly, but switches to a manual calculator the moment they need to compute a required run rate from overs remaining and target score.

Dynamic content tokens are bound to the action name at the time of insertion. If you later rename that action, Power Automate usually updates references automatically, but copy-pasting actions between flows or importing a solution can silently break token references, showing 'Invalid template' errors that require manually reselecting the dynamic content.

  • Dynamic content exposes outputs from the trigger and every prior action as clickable tokens in the designer.
  • Selecting a dynamic content item inserts an underlying expression, shown as a friendly token chip.
  • Dynamic content scope is limited by loops: values inside Apply to each are only directly clickable within that loop.
  • Use first(body('Apply_to_each')) or similar expressions to pull a single value out of a loop from outside it.
  • The Expression tab shares the same reference syntax as dynamic content but adds the full function library for transformations.
  • Renaming actions usually updates token references automatically, but copy-paste or solution import can break them.
  • 'See more' reveals dynamic content from actions hidden inside different scopes.

Practice what you learned

Was this page helpful?

Topics covered

#Programming#PowerAutomateStudyNotes#DynamicContent#Dynamic#Content#Represents#Scope#StudyNotes#SkillVeris#ExamPrep