Skip to main content
The Store action node reads from and writes to a managed store: an append-only, timestamped series of values indexed by a key. Use it to carry state across pipeline runs, compare current values against historical ones, or accumulate a running series without building a dedicated external database.

When to use Store

  • You want to track how a value changes over time across runs: prices, quantities, scores.
  • You need to compare the current run’s data against the most recent previous value without calling an external API.
  • You want to accumulate a running total or average across multiple runs (e.g., daily volume, average invoice amount).
  • A downstream HTTP action or Validation node needs historical context that does not live in the current document.
For purely within-run named values, use Variable instead. Store is for values that must outlive a single run.

Prerequisites

Before using a Store node, create at least one store under Settings > Stores. The node references a store by name; if no store exists, the node cannot be configured.

Modes

The Store node operates in one of two modes, selected in the node editor.

Set

Appends the resolved value under the given key. The write is idempotent per run and node: if the same pipeline run triggers the same Store node twice, only one entry is written.
FieldTypeRequiredDescription
StoreselectYesThe managed store to write to
KeytextYesThe key to write under. Supports template expressions, e.g. {{extract.payload.sku}}
ValuetextYesThe value to store. Supports template expressions, e.g. {{extract.payload.price}}
Fail on null valuetoggleNoWhen on, the run fails if the value resolves to null or empty (a missing or unresolved reference, a JSON-null field, or a blank value). Default off
The value is stored as-is. If the expression resolves to a JSON object or array, the full object is stored and can later be queried with a Value Path in Get mode. By default, when the value expression resolves to nothing (for example, an upstream field is missing or null), an empty string is stored and the run succeeds. Enable Fail on null value to turn that into a hard failure instead, so a missing upstream value surfaces as a failed run rather than a silently-empty entry.

Get

Reads the series for a key and returns the result as the node’s payload. Three operations are available.
FieldTypeRequiredDescription
StoreselectYesThe managed store to read from
KeytextYesThe key to read. Supports template expressions
OperationselectYesWhat to return: Latest, Last N, or Aggregate
WindowselectNoOptional time filter: Relative or Range (see below)

Latest

Returns the single most recent entry for the key. The result lands at payload.value.

Last N

Returns the most recent N entries as a list. The result lands at payload.values.
FieldTypeRequiredDescription
NnumberYesHow many recent entries to return (minimum 1)

Aggregate

Computes a number over the series. The result lands at payload.aggregate.
FieldTypeRequiredDescription
FunctionselectYesAverage, Sum, Minimum, Maximum, or Count
Value pathtextNoDot-path into each stored JSON value to extract the numeric field before aggregating (e.g. price or data.amount). Not used for Count
When Value path is set, the node extracts that field from each stored entry before computing the aggregate. Entries where the path does not resolve to a number are skipped. Leave Value path blank to aggregate the top-level value directly (works for scalar numbers).

Window

All three operations accept an optional Window to restrict which entries are included.
Window typeFieldsDescription
RelativeAmount, UnitEntries from the last N hours, days, weeks, or months
RangeFrom, ToEntries between two dates. Both fields support template expressions, e.g. {{vars.payload.startDate}}
When no window is set, all entries for the key are included.

Output

Read downstream as {{storeName.payload.<field>}} where storeName is the node name in your pipeline.
FieldPresent whenDescription
storeIdAlwaysThe ID of the store that was accessed
keyAlwaysThe resolved key that was read or written
appendedSet modetrue when the write succeeded; false when it was skipped (idempotent duplicate)
foundGet modetrue when at least one entry matched the key (and window, if set)
valueGet, Latest operationThe most recent stored value. null when found is false
valuesGet, Last N operationArray of recent stored values, newest first. Empty array when found is false
aggregateGet, Aggregate operationThe computed number. null when found is false or no entries had a resolvable value
countGet, Aggregate operationThe number of entries included in the aggregate (after window filtering)

Example: price change detection

A purchase-order pipeline captures each line item’s unit price on every run and surfaces a warning when the price has changed. Set node (runs when the order arrives):
Store: prices
Key: {{extract.payload.sku}}
Value: {{extract.payload.unitPrice}}
Get node (runs in the next pipeline run for the same SKU):
Store: prices
Key: {{extract.payload.sku}}
Operation: Latest
Downstream Variable node computes the delta:
priceChanged: {{getPrice.payload.found && getPrice.payload.value != extract.payload.unitPrice}}
previousPrice: {{getPrice.payload.value}}
A downstream Validation or Route node can then branch on {{vars.payload.priceChanged}}.

Inputs and outputs

Allowed inputs: All trigger nodes and all action nodes. Output: A payload object with the fields listed in the Output section above.

Credits

Store nodes are free. They consume 0 credits per execution.

Stores settings

Create and manage store resources

Variable

Define named values that live only within a single run

HTTP action

Call external APIs to read or write data mid-pipeline

Expressions and filters

Template syntax for key and value fields