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
(Optional) Add an API key for authentication
Save your settings
Once configured, Popin will POST event data to your specified URL whenever the supported events occur.
Event name: popin_call_successful
Triggered when a call is successfully completed.
Payload:
{ "event": "popin_call_successful", "user_id": "string", "email": "string", "country_code": "string", "phone_number": "string", "properties": { "customer_name": "string", "call_duration": "string", "url": "string", "agent_name": "string" } }
Event name: popin_call_missed
Triggered when a call is missed.
Payload:
{ "event": "popin_call_missed", "user_id": "string", "email": "string", "country_code": "string", "phone_number": "string", "properties": { "customer_name": "string" } }
Event name: popin_call_remark_added
Triggered when a remark is added to a call.
Payload:
{ "event": "popin_call_remark_added", "user_id": "string", "email": "string", "country_code": "string", "phone_number": "string", "properties": { "customer_name": "string", "call_duration": "string", "url": "string", "remark": "string" } }
Event name: popin_scheduled_created
Triggered when a call is scheduled.
Payload:
{ "event": "popin_scheduled_created", "user_id": "string", "email": "string", "country_code": "string", "phone_number": "string", "properties": { "customer_name": "string", "scheduled_time": "string (format: h:i A)", "scheduled_date": "string (format: d-M-Y)", "url": "string", "agent_name": "string" } }
Event name: popin_missed_notification
Triggered when a user is notified about a missed call.
Payload:
{ "event": "popin_missed_notification", "user_id": "string", "email": "string", "country_code": "string", "phone_number": "string", "properties": { "customer_name": "string", "url": "string", "agent_name": "string" } }
Event name: popin_scheduled_notification
Triggered when a user is notified about an upcoming scheduled call.
Payload:
{ "event": "popin_scheduled_notification", "user_id": "string", "email": "string", "country_code": "string", "phone_number": "string", "properties": { "customer_name": "string", "scheduled_time": "string (format: h:i A)", "scheduled_date": "string (format: d-M-Y)", "url": "string", "agent_name": "string" } }
Event name: popin_prescheduled_notification
Triggered when a user receives a pre-notification about an upcoming scheduled call.
Payload:
{ "event": "popin_prescheduled_notification", "user_id": "string", "email": "string", "country_code": "string", "phone_number": "string", "properties": { "customer_name": "string", "scheduled_time": "string (format: h:i A)", "scheduled_date": "string (format: d-M-Y)", "url": "string", "agent_name": "string" } }
Event name: popin_user_captured
Triggered when user details are captured.
Payload:
{ "event": "popin_user_captured", "user_id": "string", "email": "string", "country_code": "string", "phone_number": "string", "properties": { "customer_name": "string" } }
Event name: popin_call_rated
Triggered when a call is rated.
Payload:
{ "event": "popin_call_rated", "user_id": "string", "email": "string", "country_code": "string", "phone_number": "string", "properties": { "customer_name": "string", "rating": "integer", "comments": "string", "url": "string", "agent_name": "string" } }
Verify the source: Validate that incoming webhooks are from Popin by checking the IP address or using an API key.
Handle duplicates: Implement idempotency in your webhook handler to process the same event multiple times safely.
Respond quickly: Respond to webhooks within a few seconds to prevent timeouts.
Error handling: Implement proper error handling and retry logic for failed webhook deliveries.
If you're not receiving webhook notifications:
Verify your webhook URL is correctly entered in the Popin dashboard
Check your server logs for incoming requests
Ensure your endpoint is publicly accessible
Verify any firewall or security settings aren't blocking incoming requests
For further assistance, please contact Popin support.