Skip to content

Memory Blocks

Memory blocks provide persistent key-value storage for maintaining flow-level persistence. They act as a lightweight database for storing temporary data, counters, flags, or information your automation needs to remember across multiple events.

Persistent storage system built into Flows that allows you to:

  • Store and retrieve key-value pairs
  • Set optional time-to-live (TTL) values for automatic cleanup
  • Organize data using collections (namespaces)
  • Share data between different blocks

Stores a value in the memory under a specified key.

Configuration:

  • Collection: Static text value acting as namespace for your data
  • Key: JavaScript expression evaluating to key name
  • Value: JavaScript expression evaluating to value to store
  • TTL: Optional JavaScript expression evaluating to seconds before automatic deletion

Special Features: The Value field can reference the old stored value via stored variable. If key doesn’t exist, stored is undefined.

Example Usage:

// Simple Value Storage
{
"triage": outputs.triage?.object,
"triage_ts": outputs.startASlackThread.ts,
"ticket": outputs.prepareTicket,
}
// Simple counter increment
stored ? stored + 1 : 1
// Conditional update - only set if key doesn't exist
!stored ? "initial_value" : stored
// Update with timestamp
{
value: outputs.someBlock.data,
lastUpdated: new Date().toISOString(),
count: stored ? stored.count + 1 : 1
}

Retrieves a value from the memory.

Configuration:

  • Collection: Static text value matching collection used in Set operations
  • Key: JavaScript expression evaluating to key name

Output:

  • Returns stored value if key exists
  • Returns undefined if key doesn’t exist

Returns keys present in a specified collection.

Configuration:

  • Collection: Collection to query from
  • Starting Key: Key to start query from
  • Limit: Maximum number of items to return

Output:

  • Returns paginated array of key names in collection
  • Returns empty array if no keys exist in collection