Segmenteren op een mailinglijst zien wij gelukkig steeds vaker. Bepaalde informatie is namelijk niet voor iedereen even relevant. Het is daarom beter om te mailen naar een deel van een lijst.

Een segment aanmaken is in MailCamp heel eenvoudig, maar dan moet de data waarop gesegmenteerd moet worden wél bekend zijn in MailCamp. In sommige gevallen is dat niet het geval en vaker nog wil de klant de segmentatie doen in een extern systeem bijvoorbeeld het CRM pakket.
In zo’n geval exporteert de klant dan de selectie die gemaild moet gaan worden. Daar is op zich niets mis mee zolang je maar niet steeds een nieuwe mailinglijst aanmaakt en dat is wél wat heel vaak gebeurd. Het is beter om een segment aan te maken. Dat is vanwege een 3-tal redenen;

–              bounces en uitschrijvers worden beter verwerkt en dit zal de deliverability ten goede komen. Immers wordt er met 1 lijst gewerkt en blijven gebouncede mails op gebounced en uitschrijvers blijven uitgeschreven.

–              betere statistieken per subscriber. Er wordt een betere historie opgebouwd van de mailadressen.

–              de database groeit niet onnodig snel wat de performance van de software weer ten goede komt

Er zijn 2 manieren om een segment aan te maken waarbij eigenlijk hetzelfde wordt gedaan. Maak in beide gevallen een Extra Veld (type: Tekstveld) aan voor de mailinglijst genaamd ‘Segment Selectie’.

Handmatig segment aanmaken

Voeg een extra kolom toe aan het CSV-bestand wat u uit uw CRM pakket heeft geëxporteerd en vul in deze kolom overal dezelfde unieke waarde in bijvoorbeeld: 20161205133851 (in dit geval JaarMaandDagUurMinuutSeconde).

segmentselectie_csv

Overschrijf vervolgens de mailinglijst waardoor de waarden van het veld ‘Segment Selectie’ bij de selectie wordt geupdate naar 20161205133851.

segmentselectie_importsubscribers

segmentselectie_mapvelden

Vervolgens dient er een segment aangemaakt te worden waaraan alle subscribers met waarde ‘20161205133851’ worden toegevoegd.

Bij het verzenden wordt vervolgens niet gekozen voor het verzenden naar een mailinglijst maar naar een segment.

segmentselectie_segmentaanmaken

 

Segment aanmaken via de API

Wat hierboven beschreven wordt zou ook via de API kunnen geschieden. Het voorbeeld hieronder (in PHP) update alle subscribers uit de selectie met de waarde ‘date(‘YmdHis’)’ oftewel JaarMaandDagUurMinuutSeconde en maakt daarna een Segment aan met de naam ‘2016-12-5 13:38:51 Segment selectie’. Hierna kunt u zelf eenvoudig de mailing inplannen en versturen.

De zaken die u nodig heeft voor het aanmaken van een segment:

  • De API URL, user en token
  • Het ID van uw MailCamp gebruikersaccount
  • Het ID van het aan te maken extra veld ‘Segment Selectie’
  • Het ID van de mailinglijst waarop de segmentatie gedaan moet worden
  • Een array() van e-mailadressen van de subscribers uit de selectie

Bovenstaande gegevens kunt u ook gerust bij ons opvragen. Neem gerust contact op!

Hieronder het IP script. Let op dat de configuratie waarden en de subscriber selectie zullen moeten worden aangepast naar uw eigen waarden.

<?php
// Selectie e-mailadressen
$subscribers = array('jasper@mailcamp.nl', 'jasperreijn@hotmail.com', 'jasper1980@gmail.com');

// Configuratie
$listid = 31;
$userid = 2;
$selection_fieldid = 21;
$api_url = 'http://mailing.mailcamp.nl/mailcamp/xml.php';
$api_username = 'beheerder';
$api_usertoken = '7cf6985d68c0d45789e5899ebae29dca33bb13fd';

// Unieke token waarop gefilterd wordt
$selection_token = date('YmdHis');
$segment_name = date('Y-m-d H:i:s'). ' Segment selectie';

// Selectie token bij de betreffende contactpersonen updaten
$success = array();
$errors = array();
foreach ($subscribers as $subscriber) {
     $xml_updatesubscriber = '<xmlrequest>
          <username>'.$api_username.'</username>
          <usertoken>'.$api_usertoken.'</usertoken>
          <requesttype>subscribers</requesttype>
          <requestmethod>EditSubscriberCustomFields</requestmethod>
          <details>
               <emailaddress>'.$subscriber.'</emailaddress>
               <mailinglist>'.$listid.'</mailinglist>
               <customfields>
                    <item>
                         <fieldid>'.$selection_fieldid.'</fieldid>
                         <value>'.$selection_token.'</value>
                    </item>
               </customfields>
          </details>
     </xmlrequest>';

     $ch = curl_init($api_url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_POST, 1);
     curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_updatesubscriber);
     $result = @curl_exec($ch);
     if ($result === false) {
          $errors[] = 'Error subscriber: '.$subscriber;
     } else {
          $xml_doc = simplexml_load_string($result);
          if ($xml_doc->status == 'SUCCESS') {
               $success[] = 'Success subscriber: '.$xml_doc->data;
          } else {
               $errors[] = 'Error subscriber: '.$subscriber.' - '.$xml_doc->errormessage;
          }
     }
}

// Segment aanmaken
$searchinfo = array();
$searchinfo["Lists"][] = $listid;
$searchinfo["Rules"][] = [
     'type' => 'group',
     'connector' => 'and',
     'rules' => [
          [
               'type' => 'rule',
               'connector' => 'and',
               'rules' => [
                    'ruleName' => $selection_fieldid,
                    'ruleOperator' => 'equalto',
                    'ruleValues' => [
                         $selection_token
                    ]
               ]
          ],
     ],
];

$xml_createsegment = '<xmlrequest>
     <username>'.$api_username.'</username>
     <usertoken>'.$api_usertoken.'</usertoken>
     <requesttype>segment</requesttype>
     <requestmethod>CreateSegment</requestmethod>
     <details>
          <segmentname>'.$segment_name.'</segmentname>
          <ownerid>'.$userid.'</ownerid>
          <searchinfo>'.serialize($searchinfo).'</searchinfo>
          <createdate>'.time().'</createdate>
     </details>
</xmlrequest>';

$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_createsegment);
$result = @curl_exec($ch);
if ($result === false) {
     $errors[] = 'Error subscriber: '.$subscriber;
} else {
     $xml_doc = simplexml_load_string($result);
     if ($xml_doc->status == 'SUCCESS') {
          $success[] = 'Success segment: '.$xml_doc->data;
     } else {
          $errors[] = 'Error segment: '.$xml_doc->errormessage;
     }
}

$result = array();
$result['errors'] = $errors;
$result['success'] = $success;

// Dump result
//echo '<pre>';
//var_dump($result); exit;
return $result;

?>