Popin’s webhook functionality allows you to receive real-time notifications about events happening in your Popin widget.
This guide explains how to set up webhooks and describes the event payloads you can expect to receive.
Log in to your Popin Dashboard.
Navigate to Settings > Developers > Webhook.
Click Setup.
Enter your Webhook URL where Popin should send event notifications.
Use an API key for authentication, or '.' (dot) if an API key is not available.
If configured, the API key will be included in the request header as:
X-API-KEY: your_api_key
Save your settings.
Once configured, Popin will POST event data to your specified URL whenever supported events occur.
Event name: popin_call_successful
Description: Triggered when a call is successfully completed.
{
"event": "popin_call_successful",
"user_id": "string",
"email": "string",
"country_code": "string",
"phone_number": "string",
"full_phone_number": "string",
"timestamp": "string",
"properties": {
"customer_name": "string",
"call_duration": "string",
"url": "string",
"agent_name": "string",
"agent_email": "string",
"product": "string",
"meta": "object"
}
}
Event name: popin_call_missed
Description: Triggered when a call is missed.
{
"event": "popin_call_missed",
"user_id": "string",
"email": "string",
"country_code": "string",
"phone_number": "string",
"full_phone_number": "string",
"timestamp": "string",
"properties": {
"customer_name": "string",
"url": "string",
"product": "string",
"meta": "object"
}
}
Event name: popin_call_abandoned
Description: Triggered when a call is abandoned before being answered.
{
"event": "popin_call_abandoned",
"user_id": "string",
"email": "string",
"country_code": "string",
"phone_number": "string",
"full_phone_number": "string",
"timestamp": "string",
"properties": {
"customer_name": "string",
"url": "string",
"product": "string",
"meta": "object"
}
}
Event name: popin_call_remark_added
Description: Triggered when a remark is added to a call.
{
"event": "popin_call_remark_added",
"user_id": "string",
"email": "string",
"country_code": "string",
"phone_number": "string",
"full_phone_number": "string",
"timestamp": "string",
"properties": {
"customer_name": "string",
"call_duration": "string",
"url": "string",
"remark": "string",
"meta": "object"
}
}
Event name: popin_scheduled_created
Description: Triggered when a call is scheduled.
{
"event": "popin_scheduled_created",
"user_id": "string",
"email": "string",
"country_code": "string",
"phone_number": "string",
"full_phone_number": "string",
"timestamp": "string",
"properties": {
"customer_name": "string",
"scheduled_time": "string (format: h:i A)",
"scheduled_date": "string (format: d-M-Y)",
"scheduled_time_local": "string (format: h:i A)",
"scheduled_date_local": "string (format: d-M-Y)",
"url": "string",
"agent_name": "string",
"agent_email": "string",
"product": "string",
"meta": "object"
}
}
Event name: popin_missed_notification
Description: Triggered when a user is notified about a missed call.
{
"event": "popin_missed_notification",
"user_id": "string",
"email": "string",
"country_code": "string",
"phone_number": "string",
"full_phone_number": "string",
"timestamp": "string",
"properties": {
"customer_name": "string",
"url": "string",
"agent_name": "string",
"agent_email": "string",
"meta": "object"
}
}
Event name: popin_scheduled_notification
Description: Triggered when a user is notified about an upcoming scheduled call.
{
"event": "popin_scheduled_notification",
"user_id": "string",
"email": "string",
"country_code": "string",
"phone_number": "string",
"full_phone_number": "string",
"timestamp": "string",
"properties": {
"customer_name": "string",
"scheduled_time": "string (format: h:i A)",
"scheduled_date": "string (format: d-M-Y)",
"scheduled_time_local": "string (format: h:i A)",
"scheduled_date_local": "string (format: d-M-Y)",
"url": "string",
"agent_name": "string",
"agent_email": "string",
"meta": "object"
}
}
Event name: popin_prescheduled_notification
Description: Triggered when a user receives a pre-notification about an upcoming scheduled call.
{
"event": "popin_prescheduled_notification",
"user_id": "string",
"email": "string",
"country_code": "string",
"phone_number": "string",
"full_phone_number": "string",
"timestamp": "string",
"properties": {
"customer_name": "string",
"scheduled_time": "string (format: h:i A)",
"scheduled_date": "string (format: d-M-Y)",
"scheduled_time_local": "string (format: h:i A)",
"scheduled_date_local": "string (format: d-M-Y)",
"url": "string",
"agent_name": "string",
"agent_email": "string",
"meta": "object"
}
}
Event name: popin_user_captured
Description: Triggered when user details are captured.
{
"event": "popin_user_captured",
"user_id": "string",
"email": "string",
"country_code": "string",
"phone_number": "string",
"full_phone_number": "string",
"timestamp": "string",
"properties": {
"customer_name": "string",
"customer_email": "string",
"customer_country_code": "string",
"customer_phone_number": "string",
"extra": "object",
"meta": "object"
}
}
Event name: popin_call_rated
Description: Triggered when a call is rated.
{
"event": "popin_call_rated",
"user_id": "string",
"email": "string",
"country_code": "string",
"phone_number": "string",
"full_phone_number": "string",
"timestamp": "string",
"properties": {
"customer_name": "string",
"rating": "integer",
"comments": "string",
"url": "string",
"agent_name": "string",
"agent_email": "string",
"meta": "object"
}
}
Event name: popin_call_guest_connected
Description: Triggered when a user or agent joins the ongoing call.
{
"event": "popin_call_guest_connected",
"guest_type": "user/agent",
"guest_id":"string",(Only if "guest_type": "user")
"guest_agent_name":"string",(Only if "guest_type": "agent")
"guest_agent_email":"string",(Only if "guest_type": "agent")
"timestamp":"string",
"properties": {
"url": "string",
"agent_name": "integer",
"agent_email": "string",
"url": "string",
"customer_name": "string",
"customer_email":"string",
"customer_email":"string",
"customer_country_code":"string",
"customer_phone_number":"string",
"full_phone_number":"string",
"meta":"object"
}
}
meta and extra fields are reserved for additional contextual data.
All payloads include user identifiers (user_id
, email
, phone_number
) for mapping with your system.
Timestamps are formatted as per event type (e.g., d-M-Y
, h:i A
).
Verify the source: Validate incoming webhooks are from Popin by checking the IP or using an API key.
Handle duplicates: Implement idempotency in your webhook handler to safely process repeated events.
Respond quickly: Respond within a few seconds to prevent timeouts.
Error handling: Implement retry logic for failed deliveries.
If you’re not receiving webhook notifications:
Verify your webhook URL in the Popin dashboard.
Check your server logs for incoming requests.
Ensure your endpoint is publicly accessible.
Review firewall/security settings that may block requests.
For further assistance, please contact Popin Support.