Skip to main content
The Aggregate values block (Calculations) reduces a list of numeric or currency values to a single sum, average, minimum, or maximum. Use it to roll up many records into one figure inside a run, such as totaling every open deal for a company. A run is one execution of a workflow. The result lives only in that run unless a later block writes it to a record or list entry.

Inputs

Outputs

Reference the aggregated result downstream as {{ steps.aggregate_values.result }}.

Behavior

The block reads the entire input list at once and returns one value. Run it after a block that has already gathered the records, not once per item inside a Loop. Each aggregation type does one thing. Sum adds every value. Average divides the sum by the count. Minimum and Maximum return the smallest and largest values in the list. The input must resolve to numeric or currency values. Currency amounts aggregate on their numeric part. So a list of currency values returns a plain number, which you format when you write it back. The output is computed fresh on each run and is not stored anywhere on its own. To keep the figure, pass it into an Update record or Update list entry block in the same run. The block itself consumes no credits because it is a calculation. In a roll-up flow, the only credit cost comes from the lookup and the write.

Gotchas

  • The result vanishes after the run. The aggregated value is a run variable, not a stored field. Nothing persists once the run finishes. Write it to a record or list entry with Update record or Update list entry if the figure needs to stick.
  • Text and other types are not aggregated. The block expects numbers or currency. Feeding it a text attribute or a record reference produces no usable sum. Map the input to a numeric or currency attribute, or convert it upstream with a Formula block first.
  • An empty input list has no values to roll up. When the upstream Find records block returns nothing, there is no list to aggregate. Branch on the count with an If block before the aggregation. That way an empty result does not overwrite a stored total with a blank.

Examples

Totaling open pipeline for a company

This flow rolls up the value of every open deal on a company and stores the total on the company record. A Find records block gathers the deals first. Then Aggregate values sums their amounts. With three open deals worth 20,000,20,000, 18,000, and $10,000, the block returns 48000. An Update record block then writes that figure to the company’s total_pipeline_value attribute.

Finding the largest deal in a territory

This flow reports the biggest single deal in a region, so a manager can see the top opportunity at a glance. A Find records block returns every deal tagged EMEA. Then Aggregate values takes the maximum.
Across deal values of 12,000,12,000, 44,000, and $9,500, the block returns 44000. A Broadcast message block then posts that figure to the revenue team.

Averaging deal size for a daily digest

This flow computes the average open-deal size for a Recurring schedule digest. A Find records block collects the open deals. Then Aggregate values averages their amounts. Given deal values of 20,000,20,000, 18,000, and $10,000, the block returns 16000. The digest reports that as the team’s current average deal size.

Source

Attio Workflows block library. Last reviewed against the Attio Help Center, June 2026.

See also