What this audit checks
Authentication & access
- Database token still valid and not revoked (cheap list-rows ?size=1 probe)
- Token has at least read permission on the configured table
- Configured table_id resolves (table not deleted / not in another workspace)
- Rate-limit headroom > 30% on Baserow Cloud (429 / Retry-After watch)
Table freshness
- Hours since most-recent row change > 24h on a table expected to update continuously (silent feed failure)
- Row count flat for >48h when rows_added_24h baseline is non-zero (write path broken)
- Created-on / Last-modified field present - freshness cards are gated without them; warn if absent
- Sudden row-count drop vs 7-day baseline (accidental bulk delete / sync truncation)
Backlog health
- Open-status row count vs 7-day baseline (queue drowning signal)
- Oldest open row age via created_on (>30 days = backlog rot)
- Open-status rows with no assignee (work nobody owns)
- Status field configured and maps cleanly to open / in_progress / done groups
Schema drift
- Field added / removed / renamed vs last-seen schema snapshot (breaks downstream automations)
- Primary field changed type (high-impact drift)
- Link-row field pointing at a deleted table (broken relation)
- Field the merchant’s status mapping depends on was renamed (status cards silently empty)
Cross-channel: revenue stuck in a manual queue (the killer area)
- Open order-exception rows whose order-id field maps to a live, paid ecom order (sibling = shopify / bigcommerce / adobe_commerce) - revenue sitting unresolved
- VortexIQ-filed finding rows with no edit >7d (abandoned findings - silent money loss)
- Returns-log rows open >14d that correspond to refunded ecom orders (reconciliation gap)
Data sources
GET https://api.baserow.io/api/database/rows/table/{table_id}/- Row count + freshness + backlog reads (auth probe with ?size=1)GET https://api.baserow.io/api/database/fields/table/{table_id}/- Schema snapshot for drift detection + status/created/updated field presenceGET https://api.baserow.io/api/database/tables/database/{database_id}/- Sibling-table inventory (gated on database_id)GET https://api.baserow.io/api/database/views/table/{table_id}/- Saved-view inventoryPOST https://api.baserow.io/api/database/rows/table/{table_id}/- File a finding row (BASEROW-ROW-001)PATCH https://api.baserow.io/api/database/rows/table/{table_id}/{row_id}/- Status transition on a linked row (BASEROW-ROW-002)