Une passerelle entre Ning et MailChimp


Comme ça faisait longtemps que je n'avais pas partagé avec vous mes petites optimisations dans l'utilisation d'un réseau Ning, je me suis dit que ce serait peut-être le moment de vous raconter comment je gère une newsletter hebdomadaire "automatique" pour le site Voile-RC.

Si vous êtes utilisateur de la plateforme Ning, vous le savez sans doute déjà, rien n'est prévu pour concevoir et envoyer une newsletter digne de ce nom à vos membres. Et on ne parle même pas du cas où vous souhaiteriez envoyer cette newsletter à d'autres personnes que vos membres, car ce cas n'est même pas prévu. Pour gérer une newsletter, il faut obligatoirement passer par un prestataire externe...
Pour ma part, après en avoir essayé plusieurs, j'ai fini par trouver un mode de fonctionnement qui me va bien avec MailChimp. Mailchimp permet de gérer gratuitement une base de données de 2000 inscrits et vous permet d'envoyer jusqu'à 12000 mails par mois. Au delà, il vous faudra sortir le portefeuille, ce qui n'est pas encore mon cas, mais qui risque de le devenir :-(

Mettre en place une newsletter automatique pour un réseau Ning (mais pour d'autres formes de plateformes aussi) est une activité que l'on peut décomposer en quatre tâches bien distinctes :

  • gérer les inscrits
  • récolter les données à envoyer (ici de façon automatique)
  • designer la newsletter
  • analyser les résultats et adapter

Je me propose dans ce premier article de vous présenter la méthode que j'ai mise en place pour gérer la base de données des inscrits et la qualité de ces données, les prochains articles abordants les trois autres points.

Lorsque vous souhaitez mettre en place une newsletter avec MailChimp, la première question à se poser est "comment récupérer les données des membres de mon réseau et comment m'assurer de la fraicheur de ces informations ?". La question peut paraitre simpliste a priori, mais sa réponse est loin de l'être. En effet, Ning ne propose pas de passerelle vers MailChimp (en fait, il n'y a qu'avec ConstantContact que quelque chose est prévu) et ne permet qu'un misérable export (manuel) au format csv. Oubliez le mode manuel, cela vous obligerait à exporter chaque semaine le fichier, le reformater et l'importer, toujours manuellement, dans MailChimp, j'ai quelque chose de mieux à vous proposer...

Créer une base MailChimp
Avant toute chose, vous vous en doutez, il faut ouvrir un compte MailChimp. Une fois que c'est fait, il faut créer une base de données (appelée list dans MailChimp). Personnellement, j'ai choisi de gérer les champs suivants, mais je suis sur que vous trouverez plein de manières d'améliorer cela : 

Automatiser le transfert des données
La solution la plus performante pour résoudre le problème d'import de données est d'automatiser le transfert des données depuis Ning vers MailChimp. C'est tout à fait réalisable car l'un comme l'autre offrent des APIs donnant accès à ces données.
La démarche consiste donc à écrire quelques lignes de code qui seront exécutées chaque fois que vous souhaitez synchroniser votre base MailChimp. La bonne nouvelle c'est que vous n'aurez pas vraiment à écrire ces quelques lignes de code, car je vous les offre pour que vous puissiez vous en servir : c'est simpleNing2MC !

Installer simpleNing2MC
SimpleNing2MC est un script PHP qu'il vous faut installer sur un serveur web (il y a d'autres façon de faire, mais c'est un peu plus technique...). Pour ce faire vous devez disposer d'un serveur web quelconque et d'un nom de domaine quelconque - disons sub.domain.com pour le reste de l'explication. Téléchargez les sources disponibles au bas de cet article et installez-les, après décompression, dans le répertoire de votre choix (par exemple SimpleNing2MC). Ces sources contiennet tout ce dont vous avez besoin pour faire fonctionner le script : les script en lui même, le wrapper d'accès aux APIs Ning et le wrapper d'accès au APIs MailChimp.

Paramétrer simpleNing2MC
Pour adapter le fonctionnement du script à vos besoins, vous devez éditer le fichier sub.domain.com/SimpleNing2MC/index.php qui contient les paramètres du script. Ces paramètres se présentent en quatre sections

  • Misc Options : vous permet de spécifier les paramètres généraux du script (taille des lots, génération de rapport,...).
  • MailChimp Parameters : vous permet d'indiquer les paramètres spécifiques d'accès à votre base de données MailChimp. Pour obtenir certains éléments, vous devrez vous rendre sur la page de gestion des clés d'API MailChimp.
  • Ning Parameters : vous permet d'indiquer les paramètres spécifiques d'accès à votre réseau Ning. Pour obtenir certains éléments, vous devrez vous rendre sur la page de gestion des clés d'API Ning.
  • Ning <-> MailChimp Mapping : vous permet d'indiquer les propriétés de vos membres que vous souhaitez exploiter dans votre base MailChimp.

Une fois ceci fait, vous pouvez tester le fonctionnement (et faire le premier import) en lançant l'url http://sub.domain.com/SimpleNing2MC/index.php dans votre navigateur favori.

Automatiser l'exécution de simpleNing2MC
Pour fignoler la chose, vous pouvez programmer le lancement régulier du script, en utilisant le service cron du serveur ou s'exécute votre site.
Prenons l'exemple de Voile-RC : la newsletter est envoyée automatiquement tous les dimanches à 17h00. J'ai donc choisi de programmer le lancement de simpleNing2MC tous les dimanches à midi de cette façon : 

0 12 * * 0 wget http://fake.voile-rc.com/simpleNing2MC >/dev/null 2>&1

Et c'est tout !
Vous voilà donc en possession d'une base de données à jour de vos membres directement dans MailChimp. C'est pas beautifull ?

 

  Les articles de la série :

URL de trackback :

http://www.rawlog.net/trackback/84
Fichier attachéTaille
simpleNing2MC.zip59.96 Ko

ben, j'ai rien compris mais

ben, j'ai rien compris mais c'était beau!

C'est pas grave,...

... c'est l'intention qui compte, mon Serge ;-)
Bises à toi !

Ca fait plaisir ;-)

Salut Pierre,
Long time no Ning dev...
Trés intéressant, par contre, je trouve ces services trés vite hyper cher!!!
J'ai passé à l'époque tout à la moulinette et j'ai fini par trouver un service Frenchie qui offre un cout mensuel MONUMENTAL!!! 20.000 newsletters pour 15 € HT/mois et le 10.000 sup à 2,50... qui dit mieux???
http://www.wmaker.net/tarifs/
Je ne sais pas si y a une API mais c'est le jour et la nuit en terme de $
Après 1 an d'utilisation et une expé tous les 15 jours à une base de 40.000 contacts, j'en suis ravi.
Ca peut valoir le coup de jeter un oeil peut etre...
A un de ces 4 et je t'attends toujours pour l'apéro ;-)
Manu

Pas vu :-(

Salut !
Je n'ai pas vu en suivant ton lien : ils parlent de création de site web (??). Mais c'est vrai que les prix dont tu parlent paraissent exceptionnels... 
Pour l'apéro, dès que je passe sous la Loire, je te contacte ;-)
A+

Merci beaucoup, tres utile.

Merci beaucoup, tres utile. J'ai une questionne. Qu'est-ce qui se passe avec les membres qui sont partis ou qui sont supprimees? Es-ce que le "script" les gere? Encore merci.

Oui et Non !

Salut !
Dans ce cas là, les membres ne sont effectivement pas supprimés de la base de données MailChimp. Mais les données les concernants sont rafraichies à chaque fois que le script est exécuté. Ainsi, ces membres auront un attribut MEMBER à 0 dès qu'ils sont supprimés ou suspendu. Tu peux alors faire des mailings "conditionnels" en t'assurant de n'envoyer qu'à des destinataires ayant MEMBER à 1.
Une seconde option, consiste à utiliser la propriété "isBlocked" du script pour gérer spécifiquement les membres suspendus.
Pour utiliser toutes ces options, regarde la section "NING <-> MAILCHIMP MAPPING" dans le fichier index.php et plus spécifiquement le tableau $mapping de la ligne 98 à 113.

Merci beaucoup, Pierre. C'est

Merci beaucoup, Pierre. C'est parfait :-)

Autre questionne si vous permettez, pour une base de donnees de 70,000 a 100,000 membres - vous envisagez des problemes ou pas?

À priori, non

Mais c'est à vérifier....
Le script prévoit la possibilité de fixer la taille des lots, ce qui permet d'éviter un timeout intempestif. Ceci dit, c'est à tester. Il n'y a aucun risque pour les données à faire des essais ; il faut juste faire attention à ne pas exploser le quota d'accès aux API côté Ning...
Je suis dispo pour faire des essais avec vous, et adapter les cript si nécessaire.

Bonjour Pierre, je suis ravie

Bonjour Pierre, je suis ravie d'être tombée sur votre tuto qui est très clair. Ceci dit j'ai un petit souci car je n'ai pas de serveur moi internaute lamba :/ Comment puis-je faire pour avoir accès à un serveur svp ?

Merci pour votre aide !

Manuella, merci pour votre

Manuella, merci pour votre intérêt :-)

Vous avez deux solutions : 

  • louer un serveur web "cheap" (prix très bas, pas d'administration,...) largement suffisant pour faire cela - généralement on peut trouver cela à moins de 4$/mois ;
  • installer php+apache sur votre ordinateur : on trouve maintenant des installations toutes packagées (par exemple MAMP pour Mac) qui permettent de faire un mini serveur web sur votre ordinateur en quelques clics de souris - et donc de pouvoir exécuter SimpleNing2MC directement depuis chez vous.

Voilà...

Merci !

Merci beaucoup Pierre pour votre réponse ultra rapide ! Je suis bien plus rassurée parce que j'avais commencé à chercher des solutions sur le web qui étaient parfois un farfelues et/ou compliquées !
A bientôt,

synchronizing profileQuestions

Hi Pierre,
I tried your code to synchronize my Ning community with Mailchimp. All is well, when sticking to the basics.
I'm trying to match an answer to a certain Profile Question to a Mailchimp Mergetag.
I added the profileQuestions property to the mapping array, and loop through the questions to get the right answer.
This works well for a few users (I've set the batch size to 5 and number of batches to 1).
When I try to run it for the total community of 1800 users a server time out appears.

I'm no php-expert, so I'm hoping you could help to figure out a workaround for this problem.
Thanks in advance for your kind answer!

Batch size ?

Hi Ben!
thanks for your interest in simpleNing2MC :-)
The only reason I see for this timeout is the batch size. For your site, you could'nt set batchSize=1800 and maxBatch=1... It's better to set 20 or 30 for batchSize and a null value (0) for maxBatch (to be sure to iterate through all your members). Could you give the following parameters a try :

  •  $batchSize = 20;
  •  $maxBatch = 0;

If that's ok, you could increase the batchSize value. But i think values greater than 100 results in timeouts.... If you want to go with greater values - what I didn't recommend - you must increase the max_execution_time of your php setup...

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement.
By submitting this form, you accept the Mollom privacy policy.

Site propulsé par Drupal !    Contenu mis à diposition sous un contrat Creative Commons