Popin Webhook Integration Guide
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.
📌 Setting Up Webhooks
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.
📦 Supported Events and Payloads
1. Call Successful
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"
}
}
2. Call Missed
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"
}
}
3. Call Abandoned
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"
}
}
4. Call Remark Added
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"
}
}
5. Scheduled Call Created
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"
}
}
6. Missed Call Invited
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"
}
}
7. Scheduled Call Notified
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"
}
}
8. Scheduled Call Pre-Notified
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"
}
}
9. User Captured
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"
}
}
10. Call Rated
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"
}
}
11. Call Guest Connected
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 is "user"
"guest_agent_name": "string", // Only if guest_type is "agent"
"guest_agent_email": "string", // Only if guest_type is "agent"
"timestamp": "string",
"properties": {
"url": "string",
"agent_name": "integer",
"agent_email": "string",
"customer_name": "string",
"customer_email": "string",
"customer_country_code": "string",
"customer_phone_number": "string",
"full_phone_number": "string",
"meta": "object"
}
}
🗒 Notes
meta
andextra
fields are reserved for additional contextual data.All payloads include identifiers (
user_id
,email
,phone_number
) for mapping with your system.Timestamps may be formatted differently depending on event type (e.g.,
d-M-Y
,h:i A
).
✅ Best Practices
Verify the source: Validate incoming webhooks are from Popin (e.g., check IP or API key).
Handle duplicates: Use idempotency to handle repeated events safely.
Respond quickly: Your endpoint should respond within a few seconds to avoid timeouts.
Error handling: Implement retry logic for failed webhook deliveries.
🔧 Troubleshooting
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.
Last updated