Connect
1
Create the token
A workspace admin opens Settings › Sources › Custom source and connects it. The token (
os_push_…) is shown once. Store it as a secret, for example OPENSCAFFOLD_PUSH_TOKEN, never in code or logs.2
Hand the setup prompt to your coding agent
The same screen shows a prompt with the full contract and your token. Paste it into Claude Code, Cursor or Codex on the repository that holds your customer data. The agent maps your data to the fields below, shows you the mapping, writes the sync job and runs the checks in Verify before backfilling.
3
Backfill and schedule
Push your history once, then run the job on a schedule (every 15 minutes works) or on your own change events.
Push records
records.json
Record fields
Your stable id for the record (1–200 characters). The same id is the same record; never reuse an id for a different record.
The collection the record belongs to, as
{ "id", "name" }. Use one container per customer account. Each container appears under Sources and can be switched off there.Your record’s last-modified time. Always send it. A newer
updatedAt makes a new version; an older one is ignored as stale. Without it, the newest message time decides.The customer’s email domains (up to 20), when you know them. They decide which customer the record belongs to.
true, with a newer updatedAt, when the record was deleted on your side. A record with no text is treated the same way.Message fields
Your stable message id. It lets OpenScaffold re-read only what changed when a record is edited.
{ "name", "email" }, with email when you know it. Your own team should use your company email so OpenScaffold knows they are on your side.true for notes your team wrote that the customer never saw. They are never read as the customer’s words.null also works). Unknown fields are refused. No timestamp may be more than 5 minutes in the future.
Responses
Resending is always safe. The same record twice counts as
unchanged; a changed record with a newer updatedAt becomes a new version, and what OpenScaffold knows about the customer is updated from it.
Limits
Push batches one request at a time.
Verify
Before you backfill, check the job with three real records:- Push them. The response says
"stored": 3. - Push the same three again. It says
"unchanged": 3. - Change one message’s text and send that record with a newer
updatedAt. It says"stored": 1. - Open Settings › Sources › Custom source and check the records are there.
Who sees it, and what you answer for
- Everyone in the workspace sees it. Every container your server sends is switched on when it first arrives and shared with the whole workspace.
- Switching a container off drops what is sent to it from then on. To stop the source completely, disconnect it.
- Disconnecting refuses the token at once. To use a new token, disconnect and connect again.
- The token acts for the admin who created it. It stops working if they are no longer a workspace admin.
- Every quote from a custom source cites its record, so you can always see where it came from.
- Keep the token out of logs. Log counts and record ids, never record text.