Sherman Web Design Docs: switch app
Open the studio

The record store and conditional updates

Every site can keep its own structured data: sign-ups, stock, sermons, jobs. Records are JSON, grouped in collections, and are read and written by your flows, your pages and the studio.

Records

A record has a collection (e.g. people), an id unique in that collection (up to 256 characters), JSON data, and created/updated times. The store is created by the first record you save.

StepWhat it does
store_recordCreates or replaces a record (merge: true merges into it instead). POST flows only.
query_recordsFinds records with up to 10 filters (eq, ne, gt, gte, lt, lte, starts_with, exists, in), up to 3 sort keys, 1–100 per page. Works in GET flows too, so a page can list records.
delete_recordDeletes one record. POST flows only.
update_recordA conditional change (below).
{ "type": "store_record", "collection": "signups", "record_id": "{{input.email}}",
  "data": { "name": "{{input.name}}", "event": "{{input.event}}" } }

Owners can add up to 10 indexes (add_record_index) for fields you filter or sort on often. In the studio and from your AI client: get_record_store, query_records, get_record, export_records, and an NDJSON download of everything.

Conditional updates

update_record changes a record only if its conditions hold, in one atomic step, so two visitors can never both take the last seat.

{ "id": "take", "type": "update_record", "collection": "stock", "record_id": "{{input.sku}}",
  "if": [{ "path": "left", "op": "gte", "value": "{{input.qty}}" }],
  "dec": { "left": "{{input.qty}}" } }
  • Changes: set, inc, dec, push (append to a list), unset.
  • Modes: update (the record must exist), upsert (create it if missing), create (only if missing).
  • batch: up to 25 writes (including deletes) that happen all or nothing, e.g. reserve every item of an order and create the order.
  • Every write bumps the record's version; conditions can check _version for safe edits (“someone else saved first”).
  • A failed condition is not an error: nothing is written and {{steps.take.status}} is conflict, with the current record in {{steps.take.record.*}}, so the flow can answer “sold out”.

Good uses: stock and seats, unique sign-ups, counters and rate limits, claiming queue items, optimistic edits.

Limits

64 KB per record, 9.5 GB per site (the site's billing owner is emailed once at 80%), 10 indexes, 100 records per query page. Records are kept until you delete them; delete_record_store (owner, always confirmed) erases the whole store.

Price

WhatCredits
Record operations (each step or tool call)0.94 per 1,000
Rows written2 per 1,000
Rows read0.002 per 1,000
Storage400 per GB-month (0.4 per MB-month)

No monthly minimum. Charged daily with your site's other usage.

Updated October 23, 2026