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

 

 

 

Importeer de contactpersonen die gemaild moeten worden in de hoofdlijst. Vink aan dat de contactpersonen moeten worden  overschreven.

 

Maak een segment aan en kies als regel; Datum gewijzigd = vandaag

 

Mail naar het segment. Alle contacten die vandaag zijn geïmporteerd of geupdate zullen binnen dit segment vallen.

 

 

 

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;

?>