Webhooks

Event catalog

Every event type you can subscribe to, grouped by what it is about. The list is generated from the API's source, so it always matches what the API accepts.

Subscribing

Subscribe to single events (lead.won), a group (lead.*) or everything (*). Each event's data.object has the id and object of the record it is about plus the fields listed below; the envelope around it is the same for every event.

field, label, old, new, from and to on change events: field is the field's key, label its name in the workspace's language, old and new the stored values (ids for references), and from and to the same values as shown to people (names instead of ids, where Kweko has them).

Events marked as not sent yet are accepted in subscriptions so you can prepare for them.

Events

lead.*

EventWhendata.object
lead.createdA lead was created: in Kweko, through the API, by an import, from an inbound message or call, or by an integration.From the API and the Kweko app: number, name, amount, currency, pipeline_id, stage_id, owner_id, source, tags. Leads created from messages, calls and integrations carry their own fields.
lead.updatedIn the catalog, but Kweko does not send it yet. You can subscribe to it today.Not documented yet.
lead.stage_changedA lead moved to another stage.from, to (stage ids), pipeline_id, from_type, to_type (incoming, open, won or lost).
lead.pipeline_changedA lead moved to another pipeline.from, to (pipeline ids).
lead.owner_changedA lead got another owner.field, label, old, new, from, to.
lead.field_changedA field of a lead changed (one event per field).field (the field key), label (in the workspace's language), old, new, from, to.
lead.wonA lead reached a won stage.stage_id, amount, loss_reason.
lead.lostA lead reached a lost stage.stage_id, amount, loss_reason.
lead.reopenedListed in the catalog.Not documented yet.
lead.deletedA lead was deleted.name, number.
lead.restoredA deleted lead was restored.name.

contact.*

EventWhendata.object
contact.createdA contact was created.From the API and the Kweko app: name, phones, tags.
contact.updatedA field of a contact changed (one event per field).field, label, old, new, from, to.
contact.deletedA contact was deleted.name.
contact.opted_outA contact asked not to get marketing messages: STOP in a chat, the unsubscribe link of an SMS broadcast, or a member. Broadcasts and follow-up sequences skip them.contact_id, source (keyword, link or manual).
contact.opt_out_removedA member removed a contact's opt-out (the client asked to hear from you again).contact_id.

company.*

EventWhendata.object
company.createdA company was created.name, tags.
company.updatedA field of a company changed (one event per field).field, label, old, new, from, to.
company.deletedA company was deleted.name.

message.*

EventWhendata.object
message.receivedA client wrote in a connected channel.conversation_id, message_id, channel_id, channel, text, lead_id, contact_id; button when the client tapped a reply button (its id; text is its label), start for a Telegram /start link payload, new_conversation on the first message of a conversation.
message.sentAn outgoing message was accepted by the channel, or the owner of a Telegram Business account wrote to a client from their own Telegram app (then external is true).message_id, conversation_id, status; for owner messages also external, channel_id, channel, text, lead_id, contact_id.
message.deliveredThe channel reported an outgoing message as delivered.message_id, conversation_id, status.
message.readThe channel reported an outgoing message as read.message_id, conversation_id, status.
message.failedAn outgoing message could not be sent.message_id, conversation_id, status, error.
message.editedA message was edited in the messenger (Telegram bot and Telegram Business chats).message_id, conversation_id, channel_id, channel, text (the new text).
message.deletedA message was deleted in the messenger (Telegram Business chats). It stays in the Kweko history, marked deleted.message_id, conversation_id, channel_id, channel.

conversation.*

EventWhendata.object
conversation.createdThe first message of a new conversation arrived.The same fields as message.received.
conversation.assignedA conversation got an assignee (for example when a member first replies).conversation_id, assignee_id.
conversation.status_changedA conversation was resolved, reopened or snoozed.conversation_id, from, to, and until for snoozes.
conversation.snoozedA conversation was snoozed.conversation_id, from, to, until.
conversation.opted_outListed in the catalog.Not documented yet.

bot.*

EventWhendata.object
bot.startedA chat bot flow or the AI operator started talking in a conversation (one at a time per conversation).conversation_id, automation_id, automation_name, kind (bot or agent), run_id.
bot.handoffA bot or the AI operator handed the conversation to a person (a handoff step, the client asked for a person, a low-confidence or ungrounded answer, or a turn or credit cap). The assignee (or the admins) are notified.conversation_id, lead_id, reason, automation_name, member_ids.
bot.stoppedA member took a conversation over from the bot with “Take over”.conversation_id.

sequence.*

EventWhendata.object
sequence.enrolledA lead was enrolled in a follow-up sequence (by a member, in bulk, or by an automation).lead_id, sequence_id, sequence_name, run_id.
sequence.exitedA follow-up sequence stopped early for a lead: the client replied, the lead changed stage, or it was won or lost.lead_id, sequence_id, sequence_name, run_id, reason (replied, stage_changed or lead_closed).

broadcast.*

EventWhendata.object
broadcast.scheduledAn owner or admin confirmed a broadcast for a later time, or moved the time of a scheduled one.broadcast_id, name, channel, scheduled_at, recipients (the confirmed count; the audience is checked again when it starts), estimated_cost, rescheduled, and previous_scheduled_at when it was moved.
broadcast.unscheduledA scheduled broadcast was called off before it started and is a draft again (canceled, or its audience or channel changed).broadcast_id, name, scheduled_at, reason (canceled or audience_changed).
broadcast.startedAn owner or admin confirmed a broadcast, or its scheduled time came; sending starts at a paced rate.broadcast_id, name, channel (telegram, whatsapp or sms), recipients, skipped (counts by reason), estimated_cost, and scheduled_at when it was scheduled.
broadcast.completedEvery recipient of a broadcast was handled.broadcast_id, name, channel, sent, failed, skipped.
broadcast.pausedA broadcast was paused.broadcast_id, name.
broadcast.resumedA paused broadcast was resumed.broadcast_id, name.
broadcast.canceledA broadcast was canceled; recipients not reached yet are skipped.broadcast_id, name.
broadcast.failedA scheduled broadcast could not start at its time (plan or daily limit, channel disconnected, nobody left to reach, template no longer approved); nothing was sent and the person who scheduled it is notified.broadcast_id, name, channel, scheduled_at, reason (monthly_limit, daily_limit, channel_unavailable, no_recipients, template, audience, too_many_recipients or no_permission).

task.*

EventWhendata.object
task.createdA task was created.task_id, title, type, due_at, assignee_id, and entity_type, entity_id when it belongs to a record.
task.updatedA task was changed.The task.created fields and changed (the changed field names).
task.completedA task was completed.The task.created fields and result.
task.overdueA task passed its due time without being completed.The task.created fields.
task.snoozedA task was snoozed.The task.created fields and until.
task.deletedListed in the catalog.Not documented yet.

note.*

EventWhendata.object
note.createdA note was added to a lead, contact or company. id and object are those of the record.note_id, mentions (member ids).
note.updatedListed in the catalog.Not documented yet.
note.deletedListed in the catalog.Not documented yet.

product.*

EventWhendata.object
product.createdA product was added to the catalog.name, price.
product.updatedA product was changed.name, price.
product.archivedA product was archived.name, price.
product.deletedListed in the catalog.Not documented yet.

form.*

EventWhendata.object
form.submittedA visitor sent a Kweko website form (embedded with widget.js or on the hosted page). The lead it created or was added to is the event's record; a new lead also sends lead.created.form_id, form_name, submission_id, lead_id, contact_id, outcome (lead_created or note_added), answers (field, label, value), utm, referrer, landing_page.

booking.*

EventWhendata.object
booking.createdA customer booked online (hosted page or widget.js). status is confirmed, or pending when bookings need approval. The contact (and lead, when the service creates one) are new or found by phone.id, status, service_name, member_id, customer_name, starts_at, ends_at, when (workspace time), contact_id, lead_id, task_id.
booking.rescheduledThe customer moved their booking with the manage link.The booking.created fields plus from and from_when.
booking.canceledA booking was canceled by the customer or by staff.The booking.created fields plus canceled_by (customer or staff) and from_status.
booking.status_changedStaff confirmed a request or marked a visit as completed or no_show.The booking.created fields plus from_status.

proposal.*

EventWhendata.object
proposal.viewedThe client opened an online proposal page (a document shared as a link). Counted once per visitor per 30 minutes; link previews and the seller's own previews are not.proposal_id, lead_id, document_id, invoice_id, title, kind, first (the first open), view_count, device.
proposal.acceptedThe client accepted an online proposal (typed name and a checkbox; not a digital signature).The proposal.viewed identifiers, accepted_name, accepted_at.
proposal.declinedThe client declined an online proposal.The proposal.viewed identifiers, reason (may be empty).

bulk_job.*

EventWhendata.object
bulk_job.startedA bulk change started in the background.entity, action, total.
bulk_job.completedA bulk change finished.Not documented yet.
bulk_job.undoneA bulk change was undone.Not documented yet.

limit.*

EventWhendata.object
limit.warningThe workspace is close to a plan limit.key, limit, current, plan.
limit.reachedThe workspace reached a plan limit.key, limit, current, plan.

restriction.*

EventWhendata.object
restriction.appliedKweko paused a feature of the workspace (anti-abuse protection).stage, feature, reason_code.
restriction.liftedA restriction ended.Not documented yet.

pipeline.*

EventWhendata.object
pipeline.updatedA pipeline was renamed or its settings changed.name.

field.*

EventWhendata.object
field.createdA custom field was created.entity, key, type.
field.updatedA custom field was changed.Not documented yet.
field.deletedA custom field was deleted.Not documented yet.

member.*

EventWhendata.object
member.joinedSomeone accepted an invite and joined the workspace.role.
member.deactivatedA member was deactivated.status.

webhook.*

EventWhendata.object
webhook.disabledKweko disabled one of your webhooks after failed deliveries.reason, last_status, last_error.