- Project webhooks — broadcast and validation events for the project as a whole, configured once in the project dashboard.
- Space digest webhooks — a separate per-space delivery system that sends a daily activity digest to a URL you configure on each space individually.
Configuration
Webhooks are configured per project in the dashboard. You need to set:- Webhook URL — the endpoint on your server that Replyke will call
- Webhook secret — a shared secret used to sign outgoing requests and verify incoming responses
- Subscribed events — the specific event types you want to receive (you only get called for events you opt into)
Event Types
Broadcast Events (Non-blocking)
These fire after an operation completes. Your server is notified but the original operation is not affected by your response.| Event | Fires when |
|---|---|
user.created.complete | A new user has been created |
user.updated.complete | A user’s profile has been updated |
entity.created.complete | A new entity has been created |
entity.updated.complete | An entity has been updated |
comment.created.complete | A new comment has been created |
comment.updated.complete | A comment has been updated |
space.created.complete | A new space has been created |
space.updated.complete | A space has been updated |
message.created.complete | A new chat message has been sent |
notification.created | An app notification was created for a user |
notification.created event is the primary mechanism for bridging Replyke’s in-app notification system to push notifications, email, or any other delivery channel your app uses.
Validation Events (Blocking)
These fire before an operation is committed. Replyke waits for your response. If you respond with{ "valid": true }, the operation proceeds. Any other response (or no response) causes the operation to be rejected.
| Event | Fires when |
|---|---|
user.created | A new user is about to be created |
user.updated | A user profile is about to be updated |
entity.created | A new entity is about to be created |
entity.updated | An entity is about to be updated |
comment.created | A new comment is about to be created |
comment.updated | A comment is about to be updated |
space.created | A new space is about to be created |
space.updated | A space is about to be updated |
message.created | A chat message is about to be sent |
If no webhook is configured for your project, or if an event type is not in your subscribed list, all validation webhooks pass automatically — your server does not need to be present for your project to function.
Payload Format
All webhook deliveries use the same envelope:| Field | Description |
|---|---|
type | The event type string (see tables above) |
projectId | Your Replyke project ID |
stage | Lifecycle stage of the event |
data | The event payload — the created/updated object or notification data |
Signature Verification
Every webhook request includes two headers that allow you to verify the request came from Replyke and has not been tampered with.| Header | Value |
|---|---|
X-Signature | HMAC-SHA256 hex digest of {timestamp}.{JSON.stringify(payload)} |
X-Timestamp | Unix timestamp in milliseconds |
Recompute the expected signature
Compute:
HMAC-SHA256(webhookSecret, "{timestamp}.{JSON.stringify(body)}") as a hex string, where timestamp is the value from X-Timestamp and body is the raw JSON body.Compare using a constant-time comparison
Compare the expected signature to the received
X-Signature. Use a constant-time comparison function to prevent timing attacks.Responding to Validation Events
For validation webhooks, your server must respond with a signed JSON body indicating whether the operation should proceed. To allow the operation:X-Response-Signature header:
Common Use Cases
Push Notification Bridge
Subscribe tonotification.created. When your webhook receives it, forward the notification to your push provider (FCM, APNs, Expo, OneSignal, etc.) for the target user.
The data field contains the notification parameters including the recipient user ID, notification type, and any associated entity or comment.
Content Moderation Gate
Subscribe tocomment.created or entity.created (validation events). In your handler, check the content against a blocklist or moderation API. Return { "valid": false } to reject content that fails your rules before it is ever stored.
Audit Logging
Subscribe to broadcast complete events (user.created.complete, entity.created.complete, etc.) to maintain an external audit log or pipe activity into an analytics system or data warehouse.
Space Digest Webhooks
The space digest system is separate from project webhooks. Each space can be configured with its own digest webhook URL and secret, independent of the project-level webhook settings. When the digest is enabled for a space, Replyke sends a daily summary of the past 24 hours of activity to that space’s digest webhook URL. The cron runs hourly and delivers the digest at the configured schedule hour in the space’s timezone. The digest payload uses thespace.digest event type:
data object contains the assembled digest — new entities, new members, and summary counts for the period.
Configuration is per space (not per project). Each space has:
digestEnabled— whether the digest is activedigestWebhookUrl— where to POST the digestdigestWebhookSecret— used for HMAC-SHA256 signing (same mechanism as project webhooks)digestScheduleHour— the hour of day to send (0–23)digestTimezone— the timezone for the schedule
Space digests are available on Pro and Growth plans only. If there is no new activity in the 24-hour window, the digest is skipped for that day.

