Troubleshooting
Recover failed collection without creating another response for the same occurrence.
Reviewed 2026-10-28Markdown
Locate the failure
| Symptom | Inspect | Next action |
|---|---|---|
| No request arrives | Schedule status, cadence due day, identity and cache, then Communication Message for that person | Correct the first failed dependency; a rerun sends to everyone due |
Message is Failed with invalid_arguments |
The person’s Slack account: the real cause is usually user_not_found when opening the DM |
Fix the identity binding or Tool Account; failed rows are not retried |
| Person asked twice for one KPI | Two memberships, a second run that day, or the legacy Operations base | Check Message rows for that day; the legacy base is outside this system |
| Fewer items than expected | More than 25 items due for that person | Items beyond 25 are counted, not sent |
| expired_trigger_id or retry notice | Cache readiness and age before modal opening | Refresh credentials if needed and click again for a new trigger |
| Form opens but context fails | Schedule, target metric and membership | Correct context; close and reopen |
| Numeric validation fails | Whole number, non-negative value, configured decimal policy | Enter a valid value for the supported input |
| Evidence fails | File ID, access, extension, size and existing attachments | Recover the same Observation |
| Processing persists | Observation Date and execution stage | Inspect after the short in-flight guard; do not assume no save occurred |
| Duplicate collection keys | Rows sharing Submission Key | Reconcile values and evidence before retrying; do not delete blindly |
| Value saved but checkbox wrong | Recorded state and Slack update result | Repair message synchronization after checking persisted data |
Diagnostic boundaries
Record workflow, stage, timestamp, count and error code. Do not copy tokens, raw Slack payloads, private response URLs or evidence contents into logs. Execution payload saving is disabled, so an empty execution history is not proof the workflow never ran. Use Airtable state and Communication Message together. A dry-run- External Message Id means nothing was sent. Keep a failed row until its value and attachments have been reconciled.
What remains untested
A simultaneous duplicate submission, an upstream outage, a revoked token and a partial multi-file upload have not been reproduced. The handling above follows the workflow logic; test it in a controlled run before relying on it.