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: