Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.cativa.digital/llms.txt

Use this file to discover all available pages before exploring further.

This event fires every time a post is successfully published, whether on the community feed or inside a specific group. Use it to index content in external systems, feed search engines, or trigger additional moderation.
The internal event name (used when subscribing webhooks in the Console) is post_created.

When it fires

  • User publishes a post on the community’s main feed
  • User publishes a post inside a group
  • You create a post via API

When it does NOT fire

  • Edit of an existing post
  • Comment on a post (that’s a separate event)
  • Reaction (like) on a post
  • Post rejected by automated moderation before being published
  • User not found while enriching the payload (delivery is skipped)
  • Creation fails (validation, locked group, banned user, etc.)

Payload

The payload is serialized in PascalCase and delivered in the body of the POST with Content-Type: application/json:
{
  "CustomerId": "01HQ0ABCDEF1234567890XYZ",
  "PostId": "01HQ8POST1234567890ABCDEFG",
  "GroupId": "01HQ2GROUP1234567890XYZAB",
  "User": {
    "Id": "01HQ7Z3X4Y5Z6A7B8C9D0E1F2G",
    "Email": "mary@example.com",
    "FirstName": "Mary",
    "LastName": "Smith",
    "DisplayName": "Mary Smith",
    "Username": "mary.smith",
    "PhoneNumber": "+15551234567",
    "CreatedAt": "2026-04-12T14:32:01Z",
    "BadgeId": "01HQ4ABCDEF1234567890XYZ",
    "Badges": [
      "01HQ4ABCDEF1234567890XYZ"
    ]
  },
  "Content": "Just finished module 3 of the course — highly recommend!",
  "ImageUrl": "https://cdn.cativalab.digital/posts/01HQ8POST.../original.jpg",
  "CreatedAt": "2026-05-08T14:32:01Z"
}

Payload fields

FieldTypeDescription
CustomerIdGUIDID of the tenant that emitted the event. Use it to route when your endpoint receives webhooks from multiple tenants.
PostIdGUIDID of the newly created post.
GroupIdGUID | nullID of the group where the post was published. When null, the post was published on the community’s main feed (outside of any group).
User.IdGUIDID of the post author.
User.EmailstringAuthor email.
User.FirstNamestringFirst name.
User.LastNamestringLast name.
User.DisplayNamestringDisplay name.
User.UsernamestringUsername.
User.PhoneNumberstringPhone, when provided.
User.CreatedAtISO 8601When the author was created in the tenant.
User.BadgeIdGUID | nullAuthor’s primary badge at the time of the post.
User.BadgesGUID[]Full list of badges held by the author at the time of the post.
Contentstring | nullPost text. May be null for posts that contain only media (image or video).
ImageUrlstring | nullURL of the first image attached to the post (original resolution). null when the post has no images. Posts with video or other media types do not populate this field.
CreatedAtISO 8601Moment when the post was created.

Request headers

HeaderDescription
X-Cativa-SignatureHMAC-SHA256 signature of the delivery, in the format t=<unixTs>,v1=<hex>. Verify it before processing the event.
X-Cativa-Execution-IdUnique ID of this event. Stable across retries — use it as your idempotency key.
X-Cativa-Automation-IdID of the listener configured in the Console (same value across all deliveries from the same subscription).
The full explanation of how to verify X-Cativa-Signature, handle retries and ensure idempotency (with examples in Node, Python, Go and C#) lives in Subscribing and verifying webhooks.

Use cases

  • Index in external search — push PostId + Content into an index (Algolia, Elasticsearch, Meilisearch) for cross-group search inside your own app.
  • Notify a moderation channel — forward posts in sensitive groups to an internal channel (Slack, Discord) where the moderation team reviews them in parallel.
  • Sync to newsletter / social media — take Content + ImageUrl and automatically republish on LinkedIn, Twitter, or in a newsletter, attributing authorship via User.DisplayName.

user_joined_group

Fired when a user joins a group — useful complement to understand the context of who is posting.

user_received_badge

Fired when the user earns a badge — useful to correlate engagement (post) with permission.

Subscribing to webhooks

How to register listeners, verify HMAC and handle retries.

Webhooks (overview)

Why webhooks, delivery guarantees and payload format.