Skip to main content

Webhooks API Reference

Webhooks deliver real-time HTTP POST notifications to your endpoint when events occur in your BIK account. Subscribe to message status updates, customer interactions, agent assignments, and store activity across all supported channels.


Getting Started

How Webhooks Work

When an event occurs in your account, we send an HTTP POST request to your configured webhook URL with a JSON payload containing event details.

You can configure your webhook in the Webhooks.

Supported Channels

ChannelDescription
whatsappWhatsApp Business API
emailEmail communications
smsSMS messages
instagramInstagram Direct
messengerFacebook Messenger
rcsRich Communication Services
webpushWeb push notifications

Message Sources

The owner field indicates where the message originated:

OwnerSourceDescription
AGENTCRMSent by an agent from inbox
MERCHANTCRMSent by merchant from inbox
BOTJourneySent by automated journey
CAMPAIGNCampaignSent via broadcast campaign
TEST_CAMPAIGNCampaignSent via test campaign
DEV_APIDev APISent via Developer API

Payload Structure

All webhook payloads are JSON arrays:

[{
"eventName": "message-status-update",
"eventInfo": { ... },
"storeId": "your_store_id",
"customerDetails": {
"customerId": 12345678,
"firstName": "John",
"lastName": "Doe"
},
"id": "unique_event_id"
}]

Top-Level Fields

FieldTypeDescription
eventNamestringEvent type identifier
eventInfoobjectEvent-specific data
storeIdstringYour store/account identifier
customerDetailsobjectCustomer information
idstringUnique webhook event ID

Event Categories

Online Store Events

Events triggered by customer activity on your online store.

Event NameDescription
productViewedCustomer viewed a product
addToCartItem added to cart
removeFromCartItem removed from cart
addedToWishlistItem added to wishlist
keywordSearchedCustomer searched for a keyword
usedAPromoCodePromo code applied
orderCancelledOrder was cancelled

Operational Events

Events related to CRM operations and agent activities.

Event NameDescription
assignedAgentAgent assigned to conversation
reassignedAgentConversation reassigned to another agent
customerCreatedNew customer profile created

Channel Events

Events related to messaging across channels.

Event NameDescription
message-status-updateMessage status changed (sent/delivered/read/failed)
incomingMessageCustomer sent a message
linkClickedCustomer clicked a link in message
qrbClickedCustomer clicked a quick reply button
optedOutCustomer opted out of messages

Event Reference

message-status-update

Triggered when a message status changes.

Status Values: sent, delivered, read, failed

FieldTypeDescription
messageIdstringUnique message identifier
createdAtstringISO 8601 timestamp
channelIdstringChannel: whatsapp, email, sms, instagram, messenger
statusstringMessage status
messagestringMessage content
failureReasonstringFailure reason (null if successful)
ownerstringMessage source (see table above)
ownerIdstringSender identifier
assetValuestringChannel asset (e.g., phone number)
ticketIdstringTicket/conversation ID
templateIdstringTemplate ID (if applicable)
templateCategorystringTemplate category: MARKETING, UTILITY

incoming-message

Triggered when a customer sends a message.

FieldTypeDescription
messageIdstringUnique message identifier
createdAtstringISO 8601 timestamp
channelIdstringChannel identifier
messagestringMessage text
mediaTypestringMedia type (if applicable)
mediaobjectMedia details (if applicable)
locationobjectLocation data (if applicable)
orderobjectOrder data (if applicable)
referralobjectAd referral data (if applicable)
ownerstringAlways CUSTOMER
ownerIdstringCustomer ID
assetValuestringCustomer phone/email
ticketIdstringTicket ID (null if new conversation)

assignedAgent

Triggered when an agent is assigned to a conversation.

FieldTypeDescription
assignedAgentIdstringAgent ID
agentNamestringAgent name
ticketIdstringTicket ID
chatSessionIdstringChat session ID
ticketCreatedAtstringTicket creation timestamp
triggeredDatestringAssignment timestamp
timeToAssignnumberSeconds to assignment
nonWorkingHoursSinceCreatednumberNon-working hours elapsed
isWhatsappCallTicketbooleanWhatsApp call ticket flag
merchantLabelNamesarrayApplied labels
aiIntentsarrayDetected customer intents

reassignedAgent

Triggered when a conversation is reassigned.

FieldTypeDescription
previousAgentIdstringPrevious agent ID
previousAgentNamestringPrevious agent name
newAgentIdstringNew agent ID
newAgentNamestringNew agent name
ticketIdstringTicket ID
triggeredDatestringReassignment timestamp
reasonstringReassignment reason

customerCreated

Triggered when a new customer is created.

FieldTypeDescription
customerIdstringCustomer ID
createdAtstringCreation timestamp
sourcestringCreation source

optedOut

Triggered when a recipient opts out of receiving messages.

FieldTypeDescription
templateIdstringTemplate ID that triggered opt-out
userChannelIdstringUser's channel identifier
channelstringMessaging channel
messageIdstringMessage ID
broadcastIdnumberBroadcast campaign ID (if applicable)
eventSourcestringSource of the event

linkClicked

Triggered when a customer clicks a tracked link in a message.

FieldTypeDescription
messageIdstringOriginal message ID
linkUrlstringURL that was clicked
channelstringMessaging channel
clickedAtstringClick timestamp

qrbClicked

Triggered when a customer clicks a quick reply button.

FieldTypeDescription
messageIdstringOriginal message ID
buttonIdstringButton identifier
buttonTextstringButton text/label
channelstringMessaging channel

Online Store Events

These events are triggered by customer activity on your online store.

pageViewed

FieldTypeDescription
pageUrlstringURL of the viewed page
pageTitlestringTitle of the page
referrerstringReferrer URL

productViewed

FieldTypeDescription
productIdstringProduct identifier
productNamestringProduct name
productPricenumberProduct price
currencystringPrice currency

addToCart / removeFromCart

FieldTypeDescription
productIdstringProduct identifier
productNamestringProduct name
quantitynumberQuantity added/removed
pricenumberProduct price

addedToWishlist

FieldTypeDescription
productIdstringProduct identifier
productNamestringProduct name

keywordSearched

FieldTypeDescription
keywordstringSearch term
resultsCountnumberNumber of results shown

usedAPromoCode

FieldTypeDescription
promoCodestringPromo code used
discountAmountnumberDiscount applied

orderCancelled

FieldTypeDescription
orderIdstringOrder identifier
reasonstringCancellation reason
cancelledAtstringCancellation timestamp

Example Payloads

Message Sent

[{
"eventName": "message-status-update",
"eventInfo": {
"messageId": "wamid.HBgMOTE5NjI5NzA4NzgzFQIAERgSMEUxMURBMUY4N0Q1NEZDRDg0AA==",
"createdAt": "2025-12-19T13:00:51.657Z",
"channelId": "whatsapp",
"status": "sent",
"message": "Your order has been confirmed.",
"failureReason": null,
"owner": "BOT",
"ownerId": "journey_123",
"assetValue": "+91XXXXXXXXXX",
"ticketId": "33678570",
"templateId": "order_confirmation",
"templateCategory": "UTILITY"
},
"storeId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"customerDetails": {
"firstName": "John",
"lastName": "Doe",
"customerId": 12345678
},
"id": "7dab423c-46e4-406a-8f50-45221189731b"
}]

Message Delivered

[{
"eventName": "message-status-update",
"eventInfo": {
"messageId": "wamid.HBgMOTE5NjI5NzA4NzgzFQIAERgSMkUyOUQ5RDhCQUE5NTY0NzYxAA==",
"createdAt": "2025-12-19T13:00:19.020Z",
"channelId": "whatsapp",
"status": "delivered",
"message": "Your order has been confirmed.",
"failureReason": null,
"owner": "BOT",
"ownerId": "journey_123",
"assetValue": "+91XXXXXXXXXX",
"ticketId": "33678570"
},
"storeId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"customerDetails": {
"firstName": "John",
"lastName": "Doe",
"customerId": 12345678
},
"id": "dd7e9f2e-6479-46fd-91ce-1f80f49c6ee9"
}]

Message Read

[{
"eventName": "message-status-update",
"eventInfo": {
"messageId": "wamid.HBgMOTE5NjI5NzA4NzgzFQIAERgSMkUyOUQ5RDhCQUE5NTY0NzYxAA==",
"createdAt": "2025-12-19T13:00:25.000Z",
"channelId": "whatsapp",
"status": "read",
"message": "Your order has been confirmed.",
"failureReason": null,
"owner": "BOT",
"ownerId": "journey_123",
"assetValue": "+91XXXXXXXXXX",
"ticketId": "33678570"
},
"storeId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"customerDetails": {
"firstName": "John",
"lastName": "Doe",
"customerId": 12345678
},
"id": "7103d05a-c230-499d-a9c6-6aea7b579dbb"
}]

Message Failed

[{
"eventName": "message-status-update",
"eventInfo": {
"messageId": "wamid.HBgMOTE5NjI5NzA4NzgzFQIAERgSMkUyOUQ5RDhCQUE5NTY0NzYxAA==",
"createdAt": "2025-12-19T13:00:30.000Z",
"channelId": "whatsapp",
"status": "failed",
"message": "Your order has been confirmed.",
"failureReason": "Message failed to send. Recipient phone number not on WhatsApp.",
"owner": "BOT",
"ownerId": "journey_123",
"assetValue": "+91XXXXXXXXXX",
"ticketId": "33678570",
"templateId": "order_confirmation",
"templateCategory": "UTILITY"
},
"storeId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"customerDetails": {
"firstName": "John",
"lastName": "Doe",
"customerId": 12345678
},
"id": "a8f3e2c1-5b4d-4a9e-8c76-2d1f0e9b8c7a"
}]

Incoming Message

[{
"eventName": "incoming-message",
"eventInfo": {
"messageId": "wamid.HBgMOTE5NjI5NzA4NzgzFQIAEhgWM0VCMDQwQjkwMjRCM0NERkZFMkU5OQA=",
"createdAt": "2025-12-19T13:01:00.000Z",
"channelId": "whatsapp",
"message": "track my order",
"mediaType": null,
"media": null,
"location": null,
"order": null,
"referral": null,
"owner": "CUSTOMER",
"ownerId": "12345678",
"assetValue": "+91XXXXXXXXXX",
"ticketId": null,
"customerId": "12345678"
},
"storeId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"customerDetails": {
"firstName": "John",
"lastName": "Doe",
"customerId": 12345678
},
"id": "98b3fdb0-2a9b-45ab-b006-9cfc9b516344"
}]

Agent Assigned

[{
"eventName": "assignedAgent",
"eventInfo": {
"assignedAgentId": "235658",
"agentName": "Agent Name",
"ticketId": "33678570",
"chatSessionId": "33678570",
"ticketCreatedAt": "2025-12-19T06:31:42.812Z",
"triggeredDate": "2025-12-19T13:00:17.201552",
"timeToAssign": 23315.108,
"nonWorkingHoursSinceCreated": 0,
"isWhatsappCallTicket": false,
"merchantLabelNames": ["product search", "checkout"],
"aiIntents": ["Product Discovery", "Order Tracking"]
},
"storeId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"customerDetails": {
"customerId": "12345678"
}
}]

Opted Out

[{
"eventName": "optedOut",
"storeId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"customerId": "6840089",
"eventInfo": {
"templateId": "7rlzTu4LKZpRPHoiROSQ",
"userChannelId": "221036",
"channel": "whatsapp"
},
"channel": "whatsapp",
"messageId": "wamid.HBgMOTE5NDYwMzM2Nzc3FQIAERgSNDRCQTU5NEI1NEE3Mzc3NjBCAA==",
"broadcastId": 174183,
"eventSource": "Campaigns",
"createdAt": "2025-12-19T11:10:32.609Z",
"id": "optedOut-221036"
}]

Security

Authorization Header

All webhook requests include an authorization header:

Authorization: Basic <your_authorization_key>
tip

Verify this matches your configured key to authenticate incoming webhooks and reject unauthorized requests.