Troubleshoot Events
Start with the HTTP status, the site address, the exact event name, and
APP_SLUG on app routes.
Subscription and API errors#
| Symptom | Likely cause | What to do |
|---|---|---|
403 on subscribe, unsubscribe, or app subscribers | The caller doesn't have cloud access | Use an API key generated by an organization owner or admin |
400 Invalid event type | Typo or unsupported name | Copy a name from GET /api/cloud/events/ |
400 on subscribe | Unknown function_id, or the function is already subscribed | Check the function id; unsubscribe before subscribing again |
404 NOT_FOUND on unsubscribe | The function wasn't subscribed | Check the app's subscribers with GET /api/apps/APP_SLUG/events/EVENT_NAME/ |
404 on the app subscribers route | Wrong app slug | Check the slug and site address |
| Function missing from an app's subscribers | The function belongs to another app | Check the subscribers of the function's own app |
Delivery#
| Symptom | Likely cause | What to do |
|---|---|---|
| No function run after a record change | The function is in a different app from the table, its filter conditions didn't match, or the change was an upsert or a bulk or filtered delete, which fire no events | Subscribe a function in the table's app; test the condition against the payload, since a skipped run leaves no record |
PRE_USER_CREATE changes are ignored | The function returned the wrong shape, or took longer than 30 seconds | Return an object of user fields, such as {"first_name": "Ada"}, and keep the function fast |
| Creating a user fails | A PRE_USER_CREATE function failed, timed out, or is inactive | Fix or reactivate the function, or unsubscribe it |
Other errors#
| Symptom | Check |
|---|---|
401 | The credential is missing, expired, or from another site |
404 on /events/ | Use /api/cloud/events/, not an app path |
5xx | Note the time and request, then contact support without including tokens or payloads |