diff --git a/erpnext/crm/doctype/appointment/appointment.js b/erpnext/crm/doctype/appointment/appointment.js
index 8888b56..ca38121 100644
--- a/erpnext/crm/doctype/appointment/appointment.js
+++ b/erpnext/crm/doctype/appointment/appointment.js
@@ -13,5 +13,14 @@
 				frappe.set_route("Form", "Event", frm.doc.calendar_event);
 			});
 		}
+	},
+	onload: function(frm){
+		frm.set_query("appointment_with", function(){
+			return {
+				filters : {
+					"name": ["in", ["Customer", "Lead"]]
+				}
+			};
+		});
 	}
 });
diff --git a/erpnext/crm/doctype/appointment/appointment.json b/erpnext/crm/doctype/appointment/appointment.json
index 32df8ec..8517dde 100644
--- a/erpnext/crm/doctype/appointment/appointment.json
+++ b/erpnext/crm/doctype/appointment/appointment.json
@@ -1,4 +1,5 @@
 {
+ "actions": [],
  "autoname": "format:APMT-{customer_name}-{####}",
  "creation": "2019-08-27 10:48:27.926283",
  "doctype": "DocType",
@@ -15,7 +16,8 @@
   "col_br_2",
   "customer_details",
   "linked_docs_section",
-  "lead",
+  "appointment_with",
+  "party",
   "col_br_3",
   "calendar_event"
  ],
@@ -62,12 +64,6 @@
    "reqd": 1
   },
   {
-   "fieldname": "lead",
-   "fieldtype": "Link",
-   "label": "Lead",
-   "options": "Lead"
-  },
-  {
    "fieldname": "calendar_event",
    "fieldtype": "Link",
    "label": "Calendar Event",
@@ -91,9 +87,22 @@
   {
    "fieldname": "col_br_3",
    "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "appointment_with",
+   "fieldtype": "Link",
+   "label": "Appointment With",
+   "options": "DocType"
+  },
+  {
+   "fieldname": "party",
+   "fieldtype": "Dynamic Link",
+   "label": "Party",
+   "options": "appointment_with"
   }
  ],
- "modified": "2019-10-14 15:23:54.630731",
+ "links": [],
+ "modified": "2020-01-28 16:16:45.447213",
  "modified_by": "Administrator",
  "module": "CRM",
  "name": "Appointment",
diff --git a/erpnext/crm/doctype/appointment/appointment.py b/erpnext/crm/doctype/appointment/appointment.py
index f502930..1988bb6 100644
--- a/erpnext/crm/doctype/appointment/appointment.py
+++ b/erpnext/crm/doctype/appointment/appointment.py
@@ -24,6 +24,14 @@
 			return lead_list[0].name
 		return None
 
+	def find_customer_by_email(self):
+		customer_list = frappe.get_list(
+			'Customer', filters={'email_id': self.customer_email}, ignore_permissions=True
+		)
+		if customer_list:
+			return customer_list[0].name
+		return None
+
 	def before_insert(self):
 		number_of_appointments_in_same_slot = frappe.db.count(
 			'Appointment', filters={'scheduled_time': self.scheduled_time})
@@ -32,11 +40,18 @@
 			if (number_of_appointments_in_same_slot >= number_of_agents):
 				frappe.throw('Time slot is not available')
 		# Link lead
-		if not self.lead:
-			self.lead = self.find_lead_by_email()
+		if not self.party:
+			lead = self.find_lead_by_email()
+			customer = self.find_customer_by_email()
+			if customer:
+				self.appointment_with = "Customer"
+				self.party = customer
+			else:
+				self.appointment_with = "Lead"
+				self.party = lead
 
 	def after_insert(self):
-		if self.lead:
+		if self.party:
 			# Create Calendar event
 			self.auto_assign()
 			self.create_calendar_event()
@@ -89,7 +104,7 @@
 
 	def create_lead_and_link(self):
 		# Return if already linked
-		if self.lead:
+		if self.party:
 			return
 		lead = frappe.get_doc({
 			'doctype': 'Lead',
@@ -100,7 +115,7 @@
 		})
 		lead.insert(ignore_permissions=True)
 		# Link lead
-		self.lead = lead.name
+		self.party = lead.name
 
 	def auto_assign(self):
 		from frappe.desk.form.assign_to import add as add_assignemnt
@@ -129,14 +144,14 @@
 			break
 
 	def get_assignee_from_latest_opportunity(self):
-		if not self.lead:
+		if not self.party:
 			return None
-		if not frappe.db.exists('Lead', self.lead):
+		if not frappe.db.exists('Lead', self.party):
 			return None
 		opporutnities = frappe.get_list(
 			'Opportunity',
 			filters={
-				'party_name': self.lead,
+				'party_name': self.party,
 			},
 			ignore_permissions=True,
 			order_by='creation desc')
@@ -159,7 +174,7 @@
 			'status': 'Open',
 			'type': 'Public',
 			'send_reminder': frappe.db.get_single_value('Appointment Booking Settings', 'email_reminders'),
-			'event_participants': [dict(reference_doctype='Lead', reference_docname=self.lead)]
+			'event_participants': [dict(reference_doctype='Lead', reference_docname=self.party)]
 		})
 		employee = _get_employee_from_user(self._assign)
 		if employee:
diff --git a/erpnext/www/book_appointment/index.js b/erpnext/www/book_appointment/index.js
index 262e31b..377a3cc 100644
--- a/erpnext/www/book_appointment/index.js
+++ b/erpnext/www/book_appointment/index.js
@@ -181,10 +181,32 @@
     navigate_to_page(2)
     let date_container = document.getElementsByClassName('date-span')[0];
     let time_container = document.getElementsByClassName('time-span')[0];
+    setup_search_params();
     date_container.innerHTML = moment(window.selected_date).format("MMM Do YYYY");
     time_container.innerHTML = moment(window.selected_time, "HH:mm:ss").format("LT");
 }
 
+function setup_search_params() {
+    let search_params = new URLSearchParams(window.location.search);
+    let customer_name = search_params.get("name")
+    let customer_email = search_params.get("email")
+    let detail = search_params.get("details")
+    if (customer_name) {
+        let name_input = document.getElementById("customer_name");
+        name_input.value = customer_name;
+        name_input.disabled = true;
+    }
+    if(customer_email) {
+        let email_input = document.getElementById("customer_email");
+        email_input.value = customer_email;
+        email_input.disabled = true;
+    }
+    if(detail) {
+        let detail_input = document.getElementById("customer_notes");
+        detail_input.value = detail;
+        detail_input.disabled = true;
+    }
+}
 async function submit() {
     let button = document.getElementById('submit-button');
     button.disabled = true;
