Introducing Webhooks: send your Kommunity events anywhere

Kommunity at your own endpoint and pipe RSVPs, ticket sales, new members and wall posts straight into Slack, your CRM, or anything you build

Güven Atbakan
By Güven Atbakan
Jul 21, 2026
Introducing Webhooks: send your Kommunity events anywhere
Contents

Until now, the way to connect Kommunity to your other tools was Zapier. It's great — but it means everything has to route through a third party, and it stops where Zapier stops.

Today we're adding a second, more direct option: your own webhooks. Point Kommunity at any URL you control and we'll POST an event to it the moment something happens in your community — a ticket sold, a new RSVP, a member joining, a post on the wall. From there it's yours: drop a message into Slack, update a record in your CRM, kick off a build, log it to a warehouse, whatever you like.

No Zapier task limits, no waiting on an integration to exist. If your service can receive an HTTP request, it can receive Kommunity events.

What you can wire up

A few things people are already doing with it:

  • AI agents & assistants — pipe every RSVP, ticket and new member into your own AI workflow to summarize activity, draft personalized follow-ups, or answer questions about your community the moment things happen.
  • Slack / Discord — a live feed of ticket sales and new members in a team channel.
  • Your CRM — every attendee and new member pushed straight into HubSpot, Salesforce, Notion, an Airtable base, or your own database.
  • Ops & analytics — stream events into a warehouse or dashboard to track RSVPs and revenue in real time.
  • Automations — trigger a welcome email, a fulfilment step, or an internal alert the instant a ticket is bought.

Setting one up

Open your community's Developer panel, go to the Webhooks tab, and add an endpoint:

  1. Paste your Payload URL (e.g. https://your-service.com/webhooks/kommunity).
  2. Tick the events you want that endpoint to receive — mix and match community, event and wall events freely.
  3. Save. That's it — deliveries start immediately.

You can add an endpoint at the community level (all events across the community) or scope it to a single event from that event's Developer panel. Add as many endpoints as you need, each subscribed to a different set of events.

The events we send

Every delivery is a JSON POST. The body always starts with the same envelope so you know where it came from, followed by the fields for that specific event:

{
  "event_type": "event.ticket.created",
  "event_id": "...",
  "event_slug": "annual-conf-2026",
  "community_slug": "acme",
  "community_name": "Acme Community",
  ...event-specific fields...
}

These are the events you can subscribe to:

Community

Event typeFires when
community.joinedA member joins your community
community.leftA member leaves your community

Events

Event typeFires when
event.createdA new event is created
event.rsvp.joinSomeone RSVPs "yes"
event.rsvp.join_the_waiting_listSomeone joins the waiting list
event.leftSomeone leaves an event
event.ticket.createdA ticket is purchased
event.ticket.updatedA ticket is updated
event.ticket.canceledA ticket is canceled or refunded

Wall

Event typeFires when
wall.post.createdA new post is added to the community wall

What's in each payload

Every delivery includes the envelope above. Beyond that, each event type carries its own fields.

Member events

community.joined, community.left, event.rsvp.join, event.rsvp.join_the_waiting_list, event.left

FieldDescription
idMember ID
nameDisplay name
usernameUsername
avatarAvatar URL

Event created — event.created

FieldDescription
idEvent ID
nameEvent name
slugEvent slug
detailDescription (HTML)
detail_without_htmlDescription as plain text
urlPublic event URL
start_dateStart, ISO 8601
end_dateEnd, ISO 8601

Ticket events

event.ticket.created, event.ticket.updated, event.ticket.canceled. On a cancellation or refund, status reflects the cancel/refund state.

FieldDescription
order_ticket_idTicket ID
statusTicket status
attendee_nameAttendee name
emailAttendee email
phone_numberAttendee phone (nullable)
pnrBooking reference / check-in code
ticket_nameTicket type name
paid_priceAmount paid
discount_codeDiscount code used (nullable)
attendee_company_nameCompany (nullable)
attendee_titleJob title (nullable)

Wall post — wall.post.created

The post body itself is not included.

FieldDescription
idPost ID
wallWall identifier
urlPost URL
author_idAuthor ID
author_usernameAuthor username
author_nameAuthor name

A ticket sale, for example, lands on your endpoint like this:

{
  "event_type": "event.ticket.created",
  "event_id": "...",
  "event_slug": "annual-conf-2026",
  "community_slug": "acme",
  "community_name": "Acme Community",
  "order_ticket_id": "...",
  "status": 1,
  "attendee_name": "Jane Doe",
  "email": "[email protected]",
  "phone_number": null,
  "pnr": "ABC123",
  "ticket_name": "General Admission",
  "paid_price": 25,
  "discount_code": null,
  "attendee_company_name": null,
  "attendee_title": null
}

Verifying it's really us

Event deliveries carry a Kommunity-Signature-256 header. It's a fixed token, shown right in your Developer panel — compare the header on each incoming request against that value and reject anything that doesn't match. It's generated when the event (or community) is created and never changes, so verification is a single equality check.

Reliable by default

Every delivery is sent asynchronously and retried automatically on failure with exponential backoff, so a brief blip on your side won't drop the event. And under Recent deliveries in the Webhooks tab you can see every attempt — success or failure, the HTTP status we got back, and the exact JSON payload we sent — so debugging an integration takes seconds.

Try it

Head to your community's Developer → Webhooks tab, add an endpoint, and pick your first event. Zapier isn't going anywhere — this just gives you a direct line when you'd rather own the integration yourself.

Kommunity blog Cta

Build, monetize & growth your community with Kommunity

Manage your community easily in one place