diff --git a/erpnext/erpnext_integrations/exotel_integration.py b/erpnext/erpnext_integrations/exotel_integration.py
index 39d43b3..5b24e7c 100644
--- a/erpnext/erpnext_integrations/exotel_integration.py
+++ b/erpnext/erpnext_integrations/exotel_integration.py
@@ -27,11 +27,19 @@
 		'call_log': call_log,
 		'call_status_method': 'erpnext.erpnext_integrations.exotel_integration.get_call_status'
 	})
-	if call_log.call_status in ['ringing', 'in-progress']:
-		frappe.publish_realtime('show_call_popup', data, user=data.agent_email)
+
+	frappe.publish_realtime('show_call_popup', data, user=data.agent_email)
+
+@frappe.whitelist(allow_guest=True)
+def handle_end_call(*args, **kwargs):
+	call_log = get_call_log(kwargs)
+	if call_log:
+		call_log.status = 'Closed'
+		call_log.save(ignore_permissions=True)
+		frappe.db.commit()
 
 
-def get_call_log(call_payload):
+def get_call_log(call_payload, create_new_if_not_found=True):
 	communication = frappe.get_all('Communication', {
 		'communication_medium': 'Phone',
 		'call_id': call_payload.get('CallSid'),
@@ -39,7 +47,8 @@
 
 	if communication:
 		communication = frappe.get_doc('Communication', communication[0].name)
-	else:
+		return communication
+	elif create_new_if_not_found:
 		communication = frappe.new_doc('Communication')
 		communication.subject = frappe._('Call from {}').format(call_payload.get("CallFrom"))
 		communication.communication_medium = 'Phone'
@@ -49,15 +58,11 @@
 		communication.sent_or_received = 'Received'
 		communication.communication_date = call_payload.get('StartTime')
 		communication.call_id = call_payload.get('CallSid')
-
-	status = get_call_status(communication.call_id)
-	communication.call_status = status or 'failed'
-	communication.status = 'Closed' if status in ['completed', 'failed', 'no-answer'] else 'Open'
-	communication.call_duration = call_payload.get('Duration') if status in ['completed', 'failed', 'no-answer'] else 0
-	communication.content = 'call_payload'
-	communication.save(ignore_permissions=True)
-	frappe.db.commit()
-	return communication
+		communication.status = 'Open'
+		communication.content = frappe._('Call from {}').format(call_payload.get("CallFrom"))
+		communication.save(ignore_permissions=True)
+		frappe.db.commit()
+		return communication
 
 @frappe.whitelist()
 def get_call_status(call_id):
diff --git a/erpnext/public/js/call_popup/call_popup.js b/erpnext/public/js/call_popup/call_popup.js
index f203c8e..3fa5fa6 100644
--- a/erpnext/public/js/call_popup/call_popup.js
+++ b/erpnext/public/js/call_popup/call_popup.js
@@ -73,6 +73,7 @@
 		this.make_caller_info_section();
 		this.dialog.get_close_btn().show();
 		this.setup_call_status_updater();
+		this.dialog.$body.addClass('call-popup');
 		this.dialog.set_secondary_action(() => {
 			clearInterval(this.updater);
 			this.dialog.hide();
@@ -123,7 +124,7 @@
 	set_call_status(call_status) {
 		let title = '';
 		call_status = call_status || this.call_log.call_status;
-		if (['busy', 'completed'].includes(call_status)) {
+		if (['busy', 'completed'].includes(call_status) || !call_status) {
 			title = __('Incoming call from {0}',
 				[this.contact ? `${this.contact.first_name} ${this.contact.last_name}` : this.caller_number]);
 			this.set_indicator('blue', true);
