My first function gets the parameters from the URL and sets the cookies:

    Get variables from the URL and set them into the coockie

add_action( 'init', 'set_utm_cookie');
function set_utm_cookie() {

    global $utm;

    if (getenv('HTTP_CLIENT_IP'))
        $utm['ip'] = getenv('HTTP_CLIENT_IP');
    else if(getenv('HTTP_X_FORWARDED_FOR'))
        $utm['ip'] = getenv('HTTP_X_FORWARDED_FOR');
    else if(getenv('HTTP_X_FORWARDED'))
        $utm['ip'] = getenv('HTTP_X_FORWARDED');
    else if(getenv('HTTP_FORWARDED_FOR'))
        $utm['ip'] = getenv('HTTP_FORWARDED_FOR');
    else if(getenv('HTTP_FORWARDED'))
       $utm['ip'] = getenv('HTTP_FORWARDED');
    else if(getenv('REMOTE_ADDR'))
        $utm['ip'] = getenv('REMOTE_ADDR');
        $utm['ip'] = 'UNKNOWN';

    $utm = array(
        'utm_source'   => htmlspecialchars( $_GET["utm_source"]),
        'utm_medium'   => htmlspecialchars( $_GET["utm_medium"]),
        'utm_term'     => htmlspecialchars( $_GET["utm_term"]),
        'utm_content'  => htmlspecialchars( $_GET["utm_content"]),
        'utm_campaign' => htmlspecialchars( $_GET["utm_content"]), 
        'ip'           => $utm['ip']

    setcookie('utm_source',   $utm['utm_source'],   time()+3600*60*24*7,"/");
    setcookie('utm_medium',   $utm['utm_medium'],   time()+3600*60*24*7,"/");
    setcookie('utm_term',     $utm['utm_term'],     time()+3600*60*24*7,"/");
    setcookie('utm_content',  $utm['utm_content'],  time()+3600*60*24*7,"/");
    setcookie('utm_campaign', $utm['utm_campaign'], time()+3600*60*24*7,"/");
    setcookie('ip',           $utm['ip'],           time()+3600*60*24*7,"/");


The next part is responsible for getting inputs from the contact form of my website and sending an email. if the email is sent ==> send the same email with the cookies saved to an other.

    Contact form using Ajax 

add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form'); 

// Send information from the contact form 
function submit_contact_form(){

    // Get the UTM variables from the 'get_the_utm_vars()' function
    //$utm = get_the_utm_vars();

    // If there is a $_POST['email']...
    if( isset($_POST['email']) && ($_POST['validation'] == true ) ) {

        // Get parameters
        $email = $_POST['email']; // Gets the email of the user..
        $email_to = "arik@example.pro";
        $walid = 'walid@example.pro';
        $fullname = $_POST['fullname'];
        $message = $_POST['text']; 
        $email_subject = "yellowHEAD Intro: $email";        
        $headers = array(
                'From: '. $fullname .' <'. $email .'>', 
                'BCC:  yonatan@example.pro', 
                'BCC:  gal@example.pro', 
                'BCC:  eran@example.pro', 
                'BCC:  tova@example.pro', 
                'BCC:  walid@example.pro', 
                'Content-type: text/html; charset=\"UTF-8\"; format=flowed \r\n'

        // Send email to YH, and if sent - do:
        if ( wp_mail($email_to,$email_subject,$message,$headers) ) {

            // Tells me that the mail has been sent
            echo json_encode( array("result"=>"complete") );

            //Add the UTM variables to the emails text
            $message .= "\r\n \r\n \r\n UTM Campaign: ".$_COOKIE['utm_campaign']." \r\n UTM Medium: ".$_COOKIE['utm_medium']." \r\n UTM Term: ".$_COOKIE['utm_term'] ."\r\n UTM Content: ".$_COOKIE['utm_content']." \r\n UTM Campaign: ".$_COOKIE['utm_campaign']." ";

            // A mail for tova with the UTM paramseters

            // An automail for the user 
            //$message_responce = "Hi $fullname, \r\n Thanks for reaching out to us with your inquiry. We have received your e-mail and somebody from yellowHEAD will respond to you within one working day. \r\n In the meantime, feel free to connect with us through our Facebook or LinkedIn or to check out our professional blog. \r\n \r\n Talk to you soon. \r\n - The yellowHEAD Team";
            //$header_responce = 'From: yellowHEADinc.com Team <info@exampleinc.com>';
            //wp_mail($email,'yellowHEAD - Thanks For Your E-mail',$message_responce,$header_responce );

        } else {
            echo json_encode(array("result"=>"mail_error"));

  • You're setting the cookies on ever single page load, without checking if they've already been set – Tom J Nowell Jun 8 '15 at 14:52
  • @TomJNowell so it should look like this? if (!isset $_COOKIE['utm_source']) { setcookie('utm_source', $utm['utm_source'], time()+3600*60*24*7,"/"); } – Kar19 Jun 8 '15 at 15:09
  • Didn't solve the problem. but I added an 'if' to every cookie that checks if they are set. tnx. – Kar19 Jun 8 '15 at 15:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.