Integrar Salesforce con WordPress + Elementor
Crear formulario con Elementor
Lo primero que debes hacer es crear un formulario normal con Elementor.
A este formulario le debemos asignar un id, que será el que luego utilizaremos en el «functions.php». Yo en este caso lo llamaré «salesforce».
Esto es lo único que debemos hacer desde Elementor, todo lo demás se hará desde el archivo functions.php
function send_custom_webhook( $record, $handler ) {
/**Código para Elementor*/
$form_name = $record->get_form_settings( 'form_name' );
if ( 'salesforce' !== $form_name ) {
return;
}
$raw_fields = $record->get( 'fields' );
$fields_elementor = [];
foreach ( $raw_fields as $id => $field ) {
$fields_elementor[ $id ] = $field['value'];
}
/**Código para salesforce*/
$nombre = $fields_elementor['name'];
$email = $fields_elementor['email'];
$telefono = $fields_elementor['phone'];
$ch = curl_init('https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8');
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$fields=array(
"oid"=>"XXXXXXXXXXXXX",
"retURL"=>"",
"recordType"=>"XXXXXXXXXXXXXXXX",
"00N20000000jMoK"=>"Spain Telesales Residential",
"company"=>$nombre,
"lead_source"=>"Web2Lead",
"00N20000000jKNZ"=>"Spanish",
"Campaign_ID"=>"XXXXXXXXXXXXXXXX",
"00N20000003Ytii"=>"Intruder Alarm System",
"00N20000000jKFf"=>"Spain",
"00N20000000jKH4"=>"Iberia",
"last_name"=>$nombre,
"email"=>$email,
"phone"=>"".$telefono."",
"00N200000027QSz"=>"1",
"00N20000003YUyo"=>"Web",
"debug"=>"1","debugEmail"=> "hola@dieciseisbits.com"
);
foreach($fields as $k=>$v)
$string.=$k."=".$v."&";
curl_setopt ($ch, CURLOPT_POSTFIELDS, $string);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
$res=curl_exec ($ch);
curl_close ($ch);
}
add_action( 'elementor_pro/forms/new_record', 'send_custom_webhook', 10, 2 );
Editar functions.php
Ahora ya puedes añadir el hook que hará que tras el envío exitoso del formulario creado anteriormente realice la acción que desees.
Como verás la primera parte es exclusiva para Elementor, lo que hace es determinar de qué formulario se trata, en este caso únicamente continuará la acción si es el formulario llamado «salesforce»
El resto del código es lo que nos había facilitado Salesforce, una llamada remota a su API desde la que haremos el envío de los datos que nos requieren.
Para verificar que la integración está funcionando correctamente, verás que el Array $fields
contiene un índice llamado «debugEmail». Envía un formulario de prueba y ahí deberías recibir un correo electrónico indicándote que todo ha salido OK.