MailPoet nieuwsbrief uitbreiden met eigen velden

MailPoet nieuwsbrief uitbreiden met velden.Mailpoet is een fantastische plugin om gratis nieuwsbrieven te verzenden. Door gebruik te maken van voor- en achternamen kan je de nieuwsbrief ook nog persoonlijk maken. Ontvangers kan je aanspreken met “Beste Tim de Hoog”. Misschien wil je het personaliseren nog verder uitbreiden met nog meer dynamische data.

Praktijksituatie:
Voor de Oosterhoutse Trail maak ik gebruik van deze plugin om nieuwsbrieven te versturen. Het leek mij leuk om alle deelnemers na de trailrun een persoonlijke nieuwsbrief te sturen. Deze zou dan voornaam, achternaam, onderdeel en tijd bevatten. Voor het verwerken van de uitslagen maken wij gebruik van Wegwed.

Om dit mogelijk te maken hebben we vanuit Wegwed een export gemaakt met de volgende kolommen:

  • E-mailadres
  • Voornaam
  • Achternaam
  • Onderdeel
  • Tijd

Standaard kan je in Mailpoet de volgende velden importeren:

  • E-mailadres
  • Voornaam
  • Achteraam

Maar wij wilde ook nog de volgende eigen velden importeren:

  • Onderdeel
  • Tijd (scroll even naar onderen voor Excel problemen)

Wanneer je een bestand met abonnees importeert in Mailpoet worden de standaard velden ingesteld. Mailpoet kijkt hiervoor naar de inhoud van de kolommen. Voor de kolommen die niet herkent worden wordt standaard “Veld negeren” ingesteld.

In dit geval moet de extra data wel geïmporteerd worden. Door te klikken op “Veld negeren” kan je kiezen voor “Nieuw veld toevoegen”. Voor beiden kolommen heb ik nieuwe eigen velden aangemaakt en als soort tekstinvoer opgegeven. Importeer daarna alle abonnees.

Maak vervolgens een nieuwsbrief en voeg de shortcodes toe. Deze shortcodes zien eruit als [subscriber:firsname]. Je vind de shortcodes door te klikken op het icoontje met drie poppetjes in de editor. In de lijst met shortcodes staan ook de nieuwe eigen velden genaamd Onderdeel en Tijd. Als je deze toevoegt zie je dat ze de naam [subscriber:cf_1] krijgen. Het getal verschilt. CF staat voor custom field.

Probleem 1:
Verstuur een test nieuwsbrief naar jezelf. Je komt erachter dat niet alle shortcodes zijn vervangen door gepersonaliseerde data. De kans is groot dat jouw testaccount in Mailpoet geen voor- en/of achternaam heeft en dat de eigen velden ook nog leeg zijn. Zoek jouw eigen testaccount op en vul deze helemaal in.

Probleem 2:
Verstuur nu test nieuwsbrief 2 en je komt erachter dat de [subscriber:cf_] nog steeds niet vervangen zijn. Toch is de data aanwezig. De simpele reden hiervoor is dat Mailpoet standaard geen ondersteuning heeft voor eigen velden. Je kan ze importeren in Mailpoet en daarmee houd het op. Deze tekortkoming vind je nergens terug. Ik kwam erachter nadat ik contact opgenomen had met Mailpoet zelf.

De oplossing is eigenlijk simpel maar wel een beetje technisch. Hieronder vind je een PHP script dat je toe moet voegen aan een PHP bestand.

function mailpoet_custom_shortcode($shortcode, $newsletter, $subscriber, $queue, $newsletter_body) {

    // Retrieve subscriber data only when the shortcode is parsed.
    if ('[custom:cf_2]' == $shortcode || '[custom:cf_3]' == $shortcode) {
        $subscriberData = \MailPoet\API\API::MP('v1')->getSubscriber($subscriber->id);
    }

    // Check which shortcode is parsed, it must always start with custom:.
    switch($shortcode) {
        // Distance
        case '[custom:cf_2]':
            $html = isset($subscriberData['cf_2']) ? $subscriberData['cf_2'] : 'uitdaging';
            break;
        // Time
        case '[custom:cf_3]':
            $html = isset($subscriberData['cf_3']) ? $subscriberData['cf_3'] : 'die ongekend is';
            break;

        default:
            $html = $shortcode;
    }

    return $html;
}
add_filter('mailpoet_newsletter_shortcode', 'mailpoet_custom_shortcode', 10, 5);

Zorg ervoor dat je het onderstaande stuk tekst bovenin het bestand plaatst. Plaats dit bestand vervolgens als een dropin plugin in de wp-content/plugins map.

/*
Plugin Name: MailPoet custom fields
Plugin URI: 
Description: Add support for custom fields in a newsletter
Author: Tim de Hoog
Version: 1.0
Author URI: https://www.timdehoog.nl (reclame :))
*/

Ga vervolgens naar de Plugins pagina in WordPress en activeer de plugin. Als een nieuwsbrief wordt gegenereerd wordt deze plugin uitgevoerd. Het kijkt iedere keer of er een shortcode is die vervangen moet worden door abonnee data. Het resultaat wordt nu 6 km uitdaging in een tijd van 30:00 die ongekend is.

Verzend weer een testnieuwsbrief. Alle shortcodes zijn nu vervangen door de abonnee data. Dit ziet er nog eens gepersonaliseerd uit!

Conclusie:
Wil je eigen velden toevoegen dan kan dat. Maar je moet de data nog wel met PHP toevoegen aan de nieuwsbrief.

Oplossing getest op:
WordPress 4.9 en Mailpoet 3

Let op tijden/telefoonnummers in Excel:
De kans bestaat dat je het bestand dat je wilt importeren opent in Excel. Ik had een kolom met tijden die verschilde van 10:00 tot 1:20:00. Excel heeft deze kolom het type tijd gegeven waardoor er niets meer klopte van de data. Tijdens viel het mij meteen op. Door Excel te vertellen dat het een tekstkolom moest zijn werd de data niet meer aangepast.

Hetzelfde geldt voor kolommen met telefoonnummers die beginnen met een 0. Excel haalt de 0 weg omdat het wordt gezien als een getal. Dit kan je oplossen door het telefoonnummer te laten beginnen met +31. Andere oplossing is om de kolom het type tekst te geven.

Als je een bestand in Excel hebt opslagen als CSV. Controleer het dan even in kladblok of Notepad++ om te zien of de data nog steeds juist oogt.

Laat een reactie achter

Je e-mailadres zal niet worden gepubliceerd. vereiste velden zijn gemarkeerd met *

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.