# Flow Builder elements, resources and the triggering record

*Platform App Builder Study Guide · Business Logic and Process Automation · Last updated October 25, 2026 · https://www.certifyforce.com/study-guide/platform-app-builder/business-logic-and-process-automation/flow-builder-elements-resources-and-the-triggering-record*

The building blocks of Flow Builder (elements, connectors, variables, constants, formulas, text templates, global constants), how $Record and $Record__Prior behave, when a before-save or after-save flow needs an Update Records element, bulk-safe loop patterns, and referencing screen component values.

- Certification: Salesforce Platform App Builder
- Exam section: Business Logic and Process Automation
- Study guide: https://www.certifyforce.com/study-guide/platform-app-builder

**Official exam objective:**

> Create and configure flows using Flow Builder.

## What the exam expects

- Name the building blocks of a flow (elements, connectors, resources) and pick the right resource: variable, constant, formula, text template or global constant.
- Read and change the triggering record with `$Record`, and detect changes with `$Record__Prior`, including its null and same-transaction cases.
- Decide between before-save (Fast Field Updates) and after-save (Actions and Related Records) and when an Update Records element is needed.
- Keep flows within per-transaction limits: no data elements in loops, collection updates, filters on Update Records.
- Reference a screen component's value in a formula.

Key terms: **element**, a step on the canvas; **connector**, the line that tells the flow which element runs next; **resource**, a container elements reference that isn't on the canvas; **`$Record`**, the triggering record's values; **`$Record__Prior`**, its values before the change.

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Building blocks | Elements, connectors, resources (resources aren't on the canvas) | [Meet Flow Builder](https://trailhead.salesforce.com/content/learn/modules/flow-basics/meet-flow-builder) |
| Boolean variables | Hold only the True, False or Empty String global constants | [Flow Variables](https://trailhead.salesforce.com/content/learn/modules/flow-basics/learn-about-flow-variables) |
| Variables per run | Start at default values; never carried between interviews | [Flow Variables](https://trailhead.salesforce.com/content/learn/modules/flow-basics/learn-about-flow-variables) |
| `$Record__Prior` on create | All values null | [Global Variables](https://help.salesforce.com/s/articleView?id=platform.flow_ref_resources_global_variables.htm&type=5) |
| Create and update in one transaction | `$Record__Prior` equals `$Record` | [Global Variables](https://help.salesforce.com/s/articleView?id=platform.flow_ref_resources_global_variables.htm&type=5) |
| Derived fields | `$Record` lacks fields such as Contact.Name | [Global Variables](https://help.salesforce.com/s/articleView?id=platform.flow_ref_resources_global_variables.htm&type=5) |
| Before-save elements | Assignment, Decision, Get Records, Loop, plus Custom Error | [Before-Save Flows](https://help.salesforce.com/s/articleView?id=platform.flow_concepts_trigger_record.htm&type=5), [Custom Error Element](https://help.salesforce.com/s/articleView?id=platform.flow_ref_elements_custom_error.htm&type=5) |
| After-save field change | Needs an Update Records element | [Triggering Record](https://help.salesforce.com/s/articleView?id=platform.automate_flow_build_triggering_record.htm&language=en_US&type=5) |
| Per-transaction limits | 100 SOQL, 150 DML, 10,000 DML records, 10 s CPU | [Avoid Flow Limits](https://trailhead.salesforce.com/content/learn/modules/flow-implementation-1/avoid-flow-limits) |
| Activating a triggered flow | Requires View All Data | [Record-Triggered Considerations](https://help.salesforce.com/s/articleView?id=platform.flow_considerations_trigger_record.htm&language=en_US&type=5) |

## Check yourself

- Why does an after-save flow need an Update Records element to change the triggering record?
- When does a "status changed" Decision fire for every new record?
- Why can a formula resource used twice in one flow return different results?
- Why should Create, Update and Delete Records sit after a loop, not inside it?

## Sources

- [Global Variables Resource](https://help.salesforce.com/s/articleView?id=platform.flow_ref_resources_global_variables.htm&type=5)
- [Working with the Triggering Record in Record-Triggered Flows](https://help.salesforce.com/s/articleView?id=platform.automate_flow_build_triggering_record.htm&language=en_US&type=5)
- [Before-Save Record-Triggered Flows](https://help.salesforce.com/s/articleView?id=platform.flow_concepts_trigger_record.htm&type=5)
- [Record-Triggered Flow Considerations](https://help.salesforce.com/s/articleView?id=platform.flow_considerations_trigger_record.htm&language=en_US&type=5)
- [Custom Error Element](https://help.salesforce.com/s/articleView?id=platform.flow_ref_elements_custom_error.htm&type=5)
- [Meet Flow Builder (Trailhead)](https://trailhead.salesforce.com/content/learn/modules/flow-basics/meet-flow-builder)
- [Learn About Flow Variables (Trailhead)](https://trailhead.salesforce.com/content/learn/modules/flow-basics/learn-about-flow-variables)
- [Avoid Flow Limits (Trailhead)](https://trailhead.salesforce.com/content/learn/modules/flow-implementation-1/avoid-flow-limits)
- [Build a Screen Flow (Trailhead)](https://trailhead.salesforce.com/content/learn/modules/screen-flows/build-a-screen-flow)
- [Record-Triggered Automation Decision Guide](https://architect.salesforce.com/docs/architect/decision-guides/guide/record-triggered)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 14 linked practice questions, and unlimited timed mock exams are included with the Platform App Builder pack (USD $19): https://www.certifyforce.com/practice-exams
