, ,

Integrating Gravity form with ActiveCampaign

Recently my client asked me to write code for adding to ActiveCampaign subscriber list when submitting a Gravity form. There is addons available for most of the mail campaign. But not for ActiveCampaign. Here is how I achived that, though it seems bit complicated.

I have used the gravity form pre submission hook

add_action("gform_pre_submission_1", "cp_to_activecampaign");

Login to your activeCampaign account and get the form code. Extract the form fields including the hidden fields and prepare the varaibles.

You activecampaign form filed will look like these

<form id="_form_1133" accept-charset="utf-8" action="http://uraccount.activehosted.com/proc.php" enctype="multipart/form-data" method="post"><input type="hidden" name="f" value="1133" />
<input type="hidden" name="s" value="" />
<input type="hidden" name="c" value="0" />
<input type="hidden" name="m" value="0" />
<input type="hidden" name="act" value="sub" />
<input type="hidden" name="nlbox[]" value="10" />
<input type="text" name="fullname" />
<input type="email" name="email" />
<input type="text" name="field[2]" value="" />
<input type="submit" value="Subscribe" /></form>

Now prepare the varaiables.

$first_name = $_POST["input_18.3"]; //get first name from gravity form
$last_name = $_POST["input_18.6"]; //get last name from gravity form
$Email = $_POST["input_19"]; //get email id from gravity form
$url = 'http://uraccount.activehosted.com/proc.php'; //action of the active campaign form

$fields = array(
	'field[1]' => urlencode($last_name),
	'fullname' => urlencode($first_name),
	'email' => urlencode($Email),
	'f' =>'11118',
	's' =>'',
	'c' => '0',
	'm' => '0',
	'act' => 'sub',
	'nlbox[]' => '6'
	);
	//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&amp;'; }
rtrim($fields_string, '&amp;');

Submit to active campaign using curl

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

All to gether add these to you functions.php

add_action("gform_pre_submission_1", "cp_to_activecampaign");

function cp_to_activecampaign($form){

	$first_name = $_POST["input_18.3"];
	$last_name = $_POST["input_18.6"];
	$Email = $_POST["input_19"];

	$url = 'http://uraccount.activehosted.com/proc.php';

	$fields = array(
		'field[1]' => urlencode($last_name),
		'fullname' => urlencode($first_name),
		'email' => urlencode($Email),
		'f' =>'1118',
		's'=>'',
		'c' => '0',
		'm' => '0',
		'act' => 'sub',
		'nlbox[]' => '6'
	);

	//url-ify the data for the POST
	foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&amp;'; }
	rtrim($fields_string, '&amp;');

	//open connection
	$ch = curl_init();

	//set the url, number of POST vars, POST data
	curl_setopt($ch,CURLOPT_URL, $url);
	curl_setopt($ch,CURLOPT_POST, count($fields));
	curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

	//execute post
	$result = curl_exec($ch);

	//close connection
	curl_close($ch);
}

I will be happy to help you if you need any assistance. 🙂