Send readable database change alerts from any app.
NotifyDB gives each project a bearer token and a single JSON endpoint. Post a change event when your app creates, updates, or deletes a record; NotifyDB handles notification timing, quotas, and optional summaries.
POST /api/events
Bearer ndb_...
created | updated | deleted
Quickstart
Get one event into NotifyDB first. Once that works, put the same call wherever your app already knows a record changed.
Create a project
Open the dashboard, create a project, and choose where notifications should go. Each project has its own token and notification settings.
Save the token
The full token is shown once. Store it in your server environment, not in browser JavaScript or a public repo.
Post a test event
Send the sample payload below. The new event should appear in the project's recent events list right away.
Examples
Use cURL to prove the token works. Use the JavaScript example from a server route, worker, webhook handler, or API backend.
curl -X POST https://notifydb.io/api/events \
-H "Authorization: Bearer YOUR_PROJECT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tableName":"users","recordId":"42","eventType":"updated","oldValues":{"email":"old@example.com"},"newValues":{"email":"new@example.com"}}'
await fetch('https://notifydb.io/api/events', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + process.env.NOTIFYDB_TOKEN,
'Content-Type': 'application/json'
},
body: JSON.stringify({
tableName: 'users',
recordId: '42',
eventType: 'updated',
oldValues: { email: 'old@example.com' },
newValues: { email: 'new@example.com' }
})
});
Payload
The request body is intentionally small. Send the record identity, the change type, and the before/after values you want people to see.
| Field | Type | Notes |
|---|---|---|
tableName |
string | The table, collection, model, or resource that changed. |
recordId |
string or integer | The ID your team would use to find the record again. |
eventType |
string | One of created, updated, or deleted. |
oldValues |
object | Values before the change. Use an empty object for creates. |
newValues |
object | Values after the change. Use an empty object for deletes. |
Responses
A successful request means NotifyDB accepted the event. Notification delivery may still happen asynchronously depending on the project's frequency.
{
"id": 123,
"createdAt": "2026-05-17T14:08:21+00:00",
"humanSummary": "User ID 42 was updated: email changed."
}
Authentication errors
401 means the bearer token is missing or invalid. Regenerate the project token if the original token was lost.
Validation and quotas
422 means a payload field is missing or malformed. 429 means the weekly event limit has been reached.
Production notes
Keep the integration boring. NotifyDB should sit beside your existing write path without becoming a hard dependency for saving user data.
Call NotifyDB from trusted code
Use your backend, API route, worker, or webhook processor. Do not expose project tokens in client-side JavaScript.
Send useful fields, not everything
Include the values a teammate would need to understand the change. Skip secrets, large blobs, and noisy internal metadata.
Do not block critical writes
If your app can queue background jobs, enqueue the NotifyDB call after the database write succeeds. If the call fails, retry it like any other outbound webhook.