Lige sÃ¥ snart man laver websites, hvor brugere kan registrere sig pÃ¥ den ene eller anden mÃ¥de, løber man ogsÃ¥ ind i, at det kunne være rart at kunne kommunikere med dem via mails – enten som enkeltstÃ¥ende mails med vigtige oplysninger eller som deciderede kampagner, hvor man gerne vil kunne følge med i, om kampagnerne virker. Til dette er MailChimp som skræddersyet – man fÃ¥r en masse værktøjer til styring af maillists, kampagner, til statistik osv. Og de tilbyder tilmed, at man gratis kan gemme op til 500 mailadresser og sende op til 3000 mails om mÃ¥neden!
Hele administrationen af mails, kampagner og lister er pakket pænt ind i et API, der bruger HTTP-protokollen til kommunikationsmedie, og dokumentationsniveauet af API’et er faktisk forbilledligt – alle metoder, parametre og returværdier er rimeligt godt beskrevet. SÃ¥ hvis man vil, kan man selv skrive hele integrationen selv.
Men der er ogsÃ¥ en anden mulighed, hvis man arbejder med Rails – gem’en Hominid fungerer som en komplet Ruby wrapper af version 1.2 af MailChimp API’et. Dvs. at der ikke er decideret integration med ActiveRecord, ActionController osv. HTTP-kommunikationen er blot abstraheret væk, og sÃ¥ er Hominid ogsÃ¥ environment aware, sÃ¥ man nemt kan bruge forskellige MailChimp-konti i de forskellige miljøer.
I config/hominid.yml angiver man bl.a. brugernavn, password og api-nøgle på samme måde som man angiver databaseoplysninger i config/database.yml:
development: username: usrnme password: pw api_key: apikey send_goodbye: false send_notify: false double_opt_in: false
Tilsvarende kan man lave konfiguration til test og production (og alle de andre miljøer, man måtte have defineret).
Jeg vil ikke gÃ¥ sÃ¥ meget i dybden med API’et – der er et eksempel pÃ¥ Github. Til gengæld vil jeg blot vise et lille eksempel pÃ¥ en praktisk anvendelse af Hominid.
På MailChimp har man mulighed for selv at oprette navngivne felter til forskellige slags data, man ønsker modtagere skal oprettes med; såkaldte merge tags. Følgende er blot et lille eksempel på, hvordan man registrerer en ny modtager vha. et ActiveRecord callback (i dette tilfælde after_save), hvor man samtidig sender data med, som skal knyttes til merge tags. Det er ikke raketvidenskab, og det er i høj grad eksempelkode, da der ikke er nogen former for fejlhåndtering eller validering.
class User < ActiveRecord::Base
after_save :send_to_mailchimp
protected
def send_to_mailchimp
list = Hominid::List.find_by_name("users")
list.subscribe(self.email, :merge_tags => {"NAME" => self.name, "CNAME" => self.company_name})
end
end
Det interessante her foregÃ¥r i linie 7, hvor man kan se, at jeg som andet argument til list.subscribe sender et hash med, hvor den eneste value er et andet hash – i det andet hash skal man blot angive navnene pÃ¥ de ønskede merge tags som keys i hashet. Mere er der sÃ¥dan set ikke i det.
Mere skal der ikke til for at oprette modtagere i MailChimp – og lige som man kan oprette modtagere, kan man naturligvis opdatere dem og slette dem igen. Foruden alle de andre ting, som API’et ogsÃ¥ giver mulighed for.
Hvis jeg dog skulle nævne en enkelt ting, jeg godt kunne ønske mig (eller selv lave), sÃ¥ er det at kunne integrere MailChimp helt med ActiveRecord – f.eks. vha. en acts_as_subscriber-metode, hvor man kan angive hvilke af modelobjektets attributer, man ønsker at sende over til MailChimp, og sÃ¥ sørger den ellers for at registrere de nødvendige callbacks.
Related posts: