Utiliser les segments de listes

Les segments de liste de diffusion permettent de cibler une partie d’une liste — par exemple les abonnés parlant une langue donnée — et donc de segmenter votre liste principale pour faire des envois ciblés tout en ne gardant qu’une seule liste.

L’intérêt de la segmentation par rapport au fait d’utiliser des listes distinctes est de n’avoir qu’une seule liste de diffusion à gérer. C’est plus simple en maintenance au quotidien, et c’est plus simple aussi pour vos utilisateurs qui peuvent s’abonner ou se désabonner d’un seul coup, sans avoir à comprendre que les envois passent par une liste ou par une autre et qu’un désabonnement n’est alors que partiel dans ce cas.

Pré-requis pour utilisation les segments

Pour pouvoir utiliser les segments des listes de diffusion il faut avoir installé et activé le plugin Saisies.

Sur la page d’une liste de diffusion apparaît alors la fonction « Ajouter un Segment »

Informations segmentables

La segmentation se fait sur la base des informations liées à chaque inscrit.

Par défaut les informations disponibles sont :

  • la langue de l’inscrit, utile pour les sites multilingues
  • les mots clés associés aux inscrits
  • les champs extras gérés sur la table mailsubscribers par le plugin cextras

Par exemple si je définis un groupe de mots clés que je peux associer aux inscrits :

Je vais pouvoir associer un ou plusieurs mots de ce groupe aux inscrits

et les mots clés correspondant apparaîtront explicitement dans les informations segmentables, au même titre que la langue.

Ajouter un segment

Un segment de liste se compose d’un titre qui permet de l’identifier dans l’interface, et d’un ou plusieurs filtres sur les informations liées des inscrits.

Un ET s’applique entre chaque filtre. Ainsi si vous définissez un segment avec les critère « Langue : Anglais » et ici « Subscribers : Lot1 », alors seuls les inscrits ayant la bonne langue ET le mot clé « Lot 1 » seront intégrés dans le segment.

La mise à jour automatique du segment indique que vous voulez que celui-ci évolue automatiquement pour prendre en compte les nouveaux inscrits ou les changements d’information. Il est conseillé d’utiliser cette option par défaut pour garder un segment à jour.

Mais il peut-être parfois utile de bloquer cette mise à jour automatique pour figer une liste d’inscrits correspondants. Dans ce cas vous pouvez tout de même déclencher une mise à jour manuelle, via le bouton « Mettre à jour ».

Dans tous les cas les personnes qui se désinscrivent d’une liste de diffusion seront automatiquement retirées de tous les segments de cette liste, sans attendre une mise à jour manuelle ou automatique des segments.

Informations segmentables personnalisées

Dans le cas de grosses listes d’inscrits, ou de listes qui sont liées à une base de données utilisateur applicatif, il peut être nécessaire d’ajouter des informations segmentables supplémentaires, en lien avec cette base de données.

Pour cela on peut enrichir les informations segmentables via un pipeline mailsubscriber_informations_liees, qu’il faut donc déclarer dans un plugin pour s’y brancher.

Prenons un cas concret en exemple :

function monplugin_mailsubscriber_informations_liees($flux) {
	
	if (isset($flux['args']['declarer'])) {

		$flux['data']['abonne'] = array(
			'titre' => $t = 'Abonné',
			'saisie' => 'selection',
			'options' => array(
				'nom' => 'abonne',
				'label' => $t,
				'datas' => array('non' => 'Non abonné', 'oui' => 'Abonnement valide en cours'),
			)
		);
		$flux['data']['deja_abonne'] = array(
			'titre' => $t = 'Déjà abonné',
			'saisie' => 'selection',
			'options' => array(
				'nom' => 'deja_abonne',
				'label' => $t,
				'datas' => array('non' => 'Jamais abonné', 'oui' => 'Abonné ou ancien abonné'),
			)
		);

	}
	

	if (isset($flux['args']['email'])
		and $id_mailsubscriber = $flux['args']['id_mailsubscriber']
		and $email = $flux['args']['email']
	) {


		$flux['data']['abonne'] = 'non';
		$flux['data']['deja_abonne'] = 'non';

		if (
			// TODO : rechercher dans les tables pour voir si l'email $email a un abonnement valide
		) {
			$flux['data']['abonne'] = 'oui';
			$flux['data']['deja_abonne'] = 'oui';
		}
		elseif (
			// TODO : rechercher dans les tables pour voir si l'email $email a eu un abonnement valide
		) {
			$flux['data']['deja_abonne'] = 'oui';
		}

	}
	
	return $flux;
}

Le code du pipeline est composé de 2 parties :
* une partie pour déclarer les saisies qui permettront la description d’un segment.
* une partie pour calculer les informations pour un email donné, par exemple à partir de la base de donnée.

Déclaration

C’est la partie dans

if (isset($flux['args']['declarer'])) {
...
}

La déclaration se fait comme une saisie : on déclare en fait le format de la saisie du filtre lorsqu’on modifie/ajoute un segment.

Ça va donc être la plupart du temps une sélection (qui permettra de choisir une valeur à filtrer), ou éventuellement des cases à cocher si on veut permettre de mettre plusieurs valeurs possibles pour un segment (dans ce cas c’est un OU qui s’applique : la condition du filtre sera vraie si l’information pour le mailsubscriber a une valeur parmi celles cochées).

On retrouve alors ces champs de sélection sur le formulaire de création d’un segment :

Renseigner les informations pour un inscrit

C’est la partie dans

if (isset($flux['args']['email'])
		and $id_mailsubscriber = $flux['args']['id_mailsubscriber']
		and $email = $flux['args']['email']
	) {
...
}

Là c’est une partie spécifique à votre site, où vous allez chercher les bonnes informations dans vos tables pour renseigner les informations de l’inscrit dont l’email est passé en argument du pipeline.

Une fois ceci fait, il suffit de déclarer le segment en le caractérisant par les nouveaux champs ainsi créés, et d’en lancer la mise à jour :

Ici par exemple on combine les deux informations pour retrouver les anciens abonnés.

Discussion

Une discussion

  • Bravo pour la trilogie de plugins [1] Newsletter que je découvre. Tout est hyper bien pensé. Merci beaucoup. (A titre perso je l’utiliserai pour définir des listes d’auteurs et de publications auxquels envoyer un courrier de demande de republication de leurs articles et d’autorisation de diffusion de traduction)

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom