Add Contact via Web Form
Scope:
crmWho can execute the method: users with permission to create contacts in CRM
You can place a form on the site to collect client data. When a client fills out the form, their data will be sent to CRM, and you will be able to process the request.
Setting up the form consists of two steps.
-
Place the form on an HTML page. It will send the data to the handler.
-
Create a file to process the data. The handler will accept and prepare the data, and then create a contact using the method crm.contact.add.
1. Creating the Web Form
Let's create a web form on the site page with four fields:
-
NAME— contact's first name, required, -
LAST_NAME— last name, -
EMAIL— email address, -
PHONE— phone number.
When submitted, the form sends data to the handler form.php.
<form id="form_to_crm" method="POST" action="form.php">
<!-- First name, required field -->
<input type="text" name="NAME" placeholder="First Name" required>
<!-- Last name -->
<input type="text" name="LAST_NAME" placeholder="Last Name">
<!-- Email -->
<input type="text" name="EMAIL" placeholder="Email">
<!-- Phone -->
<input type="text" name="PHONE" placeholder="Phone">
<!-- Submit button -->
<input type="submit" value="Submit">
</form>
<!-- Include jQuery for AJAX request -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('#form_to_crm').on('submit', function(el) {
el.preventDefault(); // Prevent default form submission
var formData = $(this).serialize(); // Gather form data
// Send data to the server
$.ajax({
'method': 'POST',
'dataType': 'json',
'url': 'form.php', // Handler file
'data': formData,
success: function(data) {
alert(data.message); // Show result
}
});
});
});
</script>
2. Creating the Form Handler
To process the values from the form fields and add a contact to CRM, we will create the handler form.php.
To add a contact, we will use the method crm.contact.add. In the fields object, we will pass the fields:
-
NAME— contact's first name, -
LAST_NAME— last name, -
PHONE— phone number, -
EMAIL— email address.
The values of the fields are obtained from the form. The system stores phone and email as an array of objects crm_multifield, so they need to be formatted as an array.
-
If a value exists, we add it as the first element
VALUEin the array, and the second value specifies the typeVALUE_TYPE, for example:-
WORK— for phone, -
HOME— for email.
-
-
If there is no value, we pass an empty array.
Check which required fields are set for contacts in your Bitrix24. All required fields must be passed to the method crm.contact.add.
<?php
require_once('crest.php');
// Get and sanitize data from the form
$sName = htmlspecialchars($_POST["NAME"]);
$sLastName = htmlspecialchars($_POST["LAST_NAME"]);
$sPhone = htmlspecialchars($_POST["PHONE"]);
$sEmail = htmlspecialchars($_POST["EMAIL"]);
// Format phone and email for Bitrix24 in crm_multifield format
$arPhone = (!empty($sPhone)) ? array(array('VALUE' => $sPhone, 'VALUE_TYPE' => 'WORK')) : array();
$arEmail = (!empty($sEmail)) ? array(array('VALUE' => $sEmail, 'VALUE_TYPE' => 'HOME')) : array();
// Send data to Bitrix24
$result = CRest::call(
'crm.contact.add',
[
'fields' => [
'NAME' => $sName, // First Name
'LAST_NAME' => $sLastName, // Last Name
'PHONE' => $arPhone, // Phone
'EMAIL' => $arEmail, // Email
]
]
);
// Check the result and output the message
if(!empty($result['result'])){
echo json_encode(['message' => 'Contact added']);
} elseif(!empty($result['error_description'])){
echo json_encode(['message' => 'Contact not added: '.$result['error_description']]);
} else {
echo json_encode(['message' => 'Contact not added']);
}
?>