Webhooks

Event types

The payload spec for the four webhook events Lenit sends today. Each one is identified by the value of the event field.

Event IDeventLabelTriggeraudience
idea.createdNew ideaWhen an end user submits an idea❌
comment.createdNew commentWhen a comment is posted❌
idea.status_changedIdea status changedWhen an admin changes the status✅
announcement.publishedAnnouncement publishedWhen an announcement is published and a linkedIdea is set✅(based on linkedIdea)

idea.created — new idea

Sent when an end user submits a new idea from the public board or the widget.

json
1
2
3
4
5
6
7
8
9
10
{
  "event": "idea.created",
  "eventLabel": "New idea",
  "data": {
    "ideaId": "7b3e-...-ef698f791a20",
    "title": "Mobile app support",
    "authorId": "a12c-...-00df",
    "createdAt": "2026-04-25T10:12:33"
  }
}

comment.created — new comment

Sent when a comment is posted on an idea. Private admin notes are excluded.

json
1
2
3
4
5
6
7
8
9
10
11
{
  "event": "comment.created",
  "eventLabel": "New comment",
  "data": {
    "commentId": "...",
    "ideaId": "...",
    "authorId": "...",
    "body": "I need this too!",
    "createdAt": "2026-04-25T10:15:01"
  }
}

idea.status_changed — status change

Sent when an admin changes an idea's status. It carries an audience, so your server knows straight away who is connected to that idea.

json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "event": "idea.status_changed",
  "eventLabel": "Idea status changed",
  "data": {
    "ideaId": "...",
    "title": "Mobile app support",
    "oldStatus": "Voting",
    "newStatus": "Done",
    "updatedAt": "2026-04-25T10:20:44",
    "audience": {
      "author":     { "externalId": "user_123", "traits": { "plan": "pro" } },
      "commenters": [ { "externalId": "user_456", "traits": { "plan": "free" } } ],
      "voters":     [ { "externalId": "user_789", "traits": {} } ],
      "reactors":   [ { "externalId": "user_321", "traits": {} } ]
    }
  }
}
NoteThe audience depends on your webhook settings
Only the groups you ticked as audience targets when registering the webhook are filled in. See Audience for details.

announcement.published — announcement published

Sent when an announcement is published and it has a linked idea.

json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "event": "announcement.published",
  "eventLabel": "Announcement published",
  "data": {
    "announcementId": "...",
    "title": "The mobile app is live!",
    "category": "NEW",
    "linkedIdeaId": "7b3e-...-ef698f791a20",
    "publishedAt": "2026-04-25T11:00:00",
    "audience": {
      "author":     { "externalId": "user_123", "traits": { "plan": "pro" } },
      "commenters": [ { "externalId": "user_456", "traits": {} } ],
      "voters":     [ { "externalId": "user_789", "traits": {} } ],
      "reactors":   [ { "externalId": "user_321", "traits": {} } ]
    }
  }
}
CautionNo linkedIdeaId means an empty audience
If you don't pick a linked idea when writing the announcement, linkedIdeaId comes through as an empty string and audience is empty too — there's nothing to work out who should be notified from.

category values — announcement.published

ValueMeaning
NEWNew feature
IMPROVEMENTImprovement
FIXBug fix
NOTICEGeneral notice

Next steps

←OverviewAudience structure→