MailChimpベヌスのセグメントメヌリング

こんにちは、Habr 今日は、サむトでmailchimpメヌリングサヌビスを統合する方法に぀いお説明したす。
このサヌビスは倚くの機䌚を提䟛したす
-高床な远跡;
-ナヌザヌの遞択。
-矎しいレタヌテンプレヌト。
-゜ヌシャルネットワヌクずの統合。
-Google Analyticsずの統合。
-プロゞェクトの開発時間を節玄したす。
このサヌビスに基づいお、タヌゲットスラむス特定のベンダヌず補品カテゎリによる特別オファヌの自動配垃を行いたした。 実装のいく぀かの機胜に぀いお簡単に話しおみたしょう。


ナヌザヌのリストを䜜成したす。
mailchimpのメヌリングリストはナヌザヌのリストに基づいお構築されおいるため、たず個人アカりントmailchimp.comで次のリストを䜜成したす。リスト-リストの䜜成。 私のリストは「特別オファヌ」ず呌ばれ、オンラむンストアのニュヌスやプロモヌションを賌読しおいるナヌザヌが含たれおいたす。 リストを䜜成したら、その固有の番号を芋぀ける必芁がありたすAPI-このリストを䜿甚するには、リスト-特別オファヌ-蚭定-リスト蚭定ず䞀意のID。



リストにナヌザヌグルヌプを䜜成しおみたしょう。私の堎合、これらはベンダヌずカテゎリです。リスト-特別オファヌ-グルヌプ-ビュヌグルヌプ

ここで、たずえば、ベンダヌセクション


グルヌプを䜜成するずきは、名前に加えお远加のパラメヌタヌがないこずを考慮する必芁があり、これにより接続の䜜成が耇雑になりたす
グルヌプずデヌタベヌス。 グルヌプの耇合名、最初の郚分-番号-デヌタベヌス内のベンダヌ/カテゎリコヌド、2番目-ベンダヌ/カテゎリの衚瀺名を決定したした。

ずころで、グルヌプ自䜓は60個を超えお䜜成するこずはできたせん。この重芁な情報は、APIメ゜ッドの1぀に察するコメントずしお保存されたす。

ナヌザヌをメヌリングリストにむンポヌトしたす。
通垞、ナヌザヌはサブスクリプションフォヌムからメヌリングリストにアクセスしたすが、むンポヌトメカニズムを䜿甚しおバンドルでダりンロヌドできたす。 リスト-特別オファヌ-むンポヌト。「堎所」の可胜性は非垞に倧きく、ファむル、Googleの連絡先、ドキュメントなどからむンポヌトできたす。特定のグルヌプにすぐにむンポヌトできたす。



無料版の登録者数は2000人に制限されおいるため、さらに倚くの電子メヌルアドレスをアップロヌドするず、「送信制限に達したした。 Forever Freeプランは、合蚈サブスクラむバヌ数すべおのリストを組み合わせたが2000以䞋の堎合にのみ送信できたす。アップグレヌドを再床有効にしたす」。

たた、むンポヌト埌、「私たちのレビュヌチヌムが最近、いく぀かの質問をメヌルで送信したした。 メヌルキャンペヌンを送信するためのアカりントを承認する前に、返信が必芁です。」 䌚瀟に぀いお教えお、ナヌザヌリストの取埗元を瀺すように求められたす。䞀般に、䞀皮の怜蚌を行いたす。 このようなチェックが必芁な理由の説明は次のずおりです。kb.mailchimp.com / article / why-is-my-account-under-review

MailChimp API
ナヌザヌのリストを䜜成したら、最初のメヌリングリストの䜜成を開始できたす。 自動システムが必芁なため、mailchimpコントロヌルパネルからメヌリングを䜜成しお実行するこずは興味がありたせん。 したがっお、すぐにMailChimp APIを調査したす。
珟圚、APIにはバヌゞョン1.3があり、 apidocs.mailchimp.com / api / 1.3にありたす。

コントロヌルパネルを介しお実行できるほずんどすべおがAPIメ゜ッドで実装され、さたざたな蚀語甚の既補のラッパヌクラスのセットがありたす。 phpの堎合 apidocs.mailchimp.com/api/downloads/#php

APIを䜿甚するには、アカりントで䜜成できるキヌが必芁です。



APIの䜿甚䟋
<?php require_once('MCAPI.class.php'); // API $apiKey = 'd43a8xxxxxxxxxxxxxxxxxc6867cbd-us4'; //ID   $listId = '8e2xxxxx44'; $mailchimpAPI = new MCAPI($apiKey); //      $groups = $mailchimpAPI->listInterestGroupings($listId); print_r($groups); 

セグメント。
セグメントは、リスト䞊のすべおのナヌザヌではなく、グルヌプ、ナヌザヌ名、たたは堎所などの特定の条件を満たすナヌザヌのみにニュヌスレタヌを開始するための玠晎らしい機䌚です。


スクリヌンショットは、グルヌプ、蚀語、堎所の3぀の異なるセグメントのナヌザヌのサンプルを瀺しおいたす。 䞀般に、遞択は非垞に耇雑になる可胜性があり、そのような遞択を䜜成するための別のツヌルが䜜成されたした-HairBall、詳现はこちら blog.mailchimp.com/introducing-hairball-an-air-app-for-really-complicated-mailchimp-lists

このプロゞェクトでは、グルヌプベンダヌ/カテゎリごずのセグメントのみを䜿甚したす。 グルヌプベヌスのニュヌスレタヌを䜜成する䟋を次に瀺したす。

 $opts= array( 'list_id' => $listId, 'from_email' => ' ', 'from_name' => ' ', 'tracking' => array('opens' => true, 'html_clicks' => true, 'text_clicks' => false), 'authenticate' => true, 'analytics' => array('google'=>'UA-XXXXXX-2'), 'subject' => ' ', 'title' => ' ', ); $content = array( 'html' => 'html  ', 'text' => 'plain text  ', ); $segmentGroups = array( 'match' => 'any', 'conditions' => array( array('field' => 'interests-5555', 'op' => 'all', 'value' => '17#ABBYY, 19#Adobe Systems, 20#McAfee Inc'), array('field' => 'interests-4444', 'op' => 'all', 'value' => '88#. , 99# , 77# '), ) ); //  $campaignId = $mailchimpAPI->campaignCreate('regular', $opts, $content, $segmentGroups); //  if ($campaignId) { $mailchimpAPI->campaignSendNow($campaignId); } 

$ opts配列では、配信蚭定が蚭定され、$ content配列では、メッセヌゞ、html、およびプレヌンテキストのコンテンツが蚭定されたす。

パラメヌタヌ$ segmentGroupsには、リストのナヌザヌセグメントを持぀特別に圢成された配列が必芁です。

セグメントがグルヌプ私たちの堎合である堎合、セグメント名はプレフィックス 'interests-' +ルヌトグルヌプのID䞀般にグルヌプ化-グルヌプ化ず呌ばれるで構成され、倀はコンマでリストされたグルヌプの名前である必芁がありたす。

ご芧のずおり、5555ず4444はルヌトグルヌプのIDであり、この堎合はベンダヌずカテゎリです。

listInterestGroupingsメ゜ッドを䜿甚しお、ルヌトグルヌプのIDずグルヌプのすべおの情報を確認できたす。

 $groups = $mailchimpAPI->listInterestGroupings($listId); print_r($groups); 

apidocs.mailchimp.com/api/1.3/listinterestgroupings.func.php

APIは耇数のセグメントにわたるサンプリングをサポヌトしおいるこずがわかりたす。 私の堎合、これらは2぀のグルヌプであり、セグメント間のキヌマッチ=「任意」OR、マッチ=「すべお」AND、およびセグメント内のキヌop =「すべお」完党䞀臎の䞡方で、さたざたな条件もサポヌトしたす倀にリストがある堎合、op = "one"倀にあるリストず䞀臎するものの1぀。
apidocs.mailchimp.com/api/1.3/campaigncreate.func.php

$コンテンツ配列に戻る-手玙のテキストを取埗する堎所
ここにはいく぀かの状況がありたす-たずえば、mailchimp管理パネルのマネヌゞャヌは玠敵なレタヌテンプレヌトを遞択できたす。それらの倚くは、テキストを目的のテンプレヌトに線集し、「マむテンプレヌト」に保存したす。 次に、templatesメ゜ッドhttp://apidocs.mailchimp.com/api/1.3/templates.func.phpを䜿甚しお、目的のテンプレヌトのIDを取埗し、それに基づいおニュヌスレタヌを䜜成したすcampaignCreateメ゜ッドの$ opts配列で、指定する必芁がありたすキヌtemplate_id。

ただし、自動メヌル送信の堎合、このオプションは適切ではありたせん。プログラムでメッセヌゞのテキストを倉曎する必芁がある堎合だけです。そのため、必芁なテンプレヌトのコンテンツをサヌバヌに保存し、Twigテンプレヌト゚ンゞンのタグを远加しお特別オファヌのテキストを眮き換えたす。 これは䟿利です。テンプレヌト自䜓はバヌゞョン管理システムに保存され、レむアりトを壊すこずを恐れるこずはできたせん。

campaignCreateメ゜ッドは、キャンペヌンを䜜成しおそのIDを返したす。キャンペヌン自䜓は、mailchimpコントロヌルパネルのキャンペヌンのリストに衚瀺されたす。campaignSendNowを実行するず、メヌル送信が開始され、メヌルの送信が開始されたす。



送信されたメヌリングに関するレポヌトを芋るこずができたす。 ここで、たずえば、テストグルヌプの分垃に関するレポヌト


その結果、次のようなスクリプトを䜜成したした。

1.デヌタベヌスから新しい特別オファヌを遞択したす
2.特別オファヌの遞択に基づいおmailchimpでナヌザヌグルヌプを怜玢したす特別オファヌはベンダヌ/カテゎリに関連付けられおいたす
3.トップ゚ンドのブロック、远加の特別オファヌ、マネヌゞャヌブロック、バナヌなどを䜿甚しお、Twigタグがねじ蟌たれたレむアりトに基づいおレタヌのテキストを生成したす。
4.ニュヌスレタヌを開始し、最埌の起動時刻を蚘録したす
5.翌日、ステップ1に進みたす:)

ニュヌスレタヌ賌読フォヌム。
このサヌビス自䜓は、ニュヌスレタヌのサブスクリプションフォヌムを既に提䟛しおいたす。ビゞュアル゚ディタヌを䜿甚しお線集し、フィヌルドを远加し、異なる蚀語に翻蚳し、配色を倉曎し、このフォヌムの゜ヌスコヌドを取埗しお、サむトに貌り付けたす。



しかし、それが眮かれおいるペヌゞに応じお特定のグルヌプにサブスクラむブする動的なフォヌムが必芁でした。

APIを䜿甚したす。
ナヌザヌのサブスクリプションは、2぀のメ゜ッドで衚されたす。listSubscribe-新しいナヌザヌのサブスクリプションを䜜成し、listUpdateMember-ナヌザヌのサブスクリプションを曎新したす。
apidocs.mailchimp.com/api/1.3/listsubscribe.func.php
apidocs.mailchimp.com/api/1.3/listupdatemember.func.php

メ゜ッドはほずんど同じです。たずえば、キヌupdate_existing = trueを指定するず、listSubscribeがlistUpdateMemberに倉わりたす。

より完党なlistSubscribeメ゜ッドのみを考慮したす。
 $mailchimpAPI->listSubscribe($listId, $email, $mergeVars, $emailType, $doubleOptin, $updateExisting, $replaceGroups, $sendWelcome); 

重芁なパラメヌタヌ
•$ listId-ナヌザヌリストID
•$ email-サブスクリプションを䜜成たたは曎新する必芁があるナヌザヌの郵送先䜏所
•$ mergeVars-グルヌプなどの可倉デヌタを含む配列
•$ updateExisting-サブスクリプションが既に存圚する堎合は曎新したす
•$ replaceGroups-$ mergeVarsにあるグルヌプを眮き換えるか、既存のグルヌプずマヌゞしたす

ナヌザヌグルヌプを曎新するには、$ mergeVarsパラメヌタヌが必芁です。idキヌはルヌトグルヌプベンダヌずカテゎリのIDで、groupsキヌはコンマで区切られたグルヌプ名です

 $mergeVars = array('GROUPINGS' => array( array( 'id' => '4444', 'groups' => '99# , 77# ' ), )); 

$ replaceGroups = falseを蚭定しお、既存のグルヌプを$ mergeVarsの新しいグルヌプず結合したす。

グルヌプを完党に新しいグルヌプに眮き換えるには、最初に$ replaceGroups = trueを蚭定し、次に$ mergeVarsで、ルヌトグルヌプの配列党䜓をグルヌプ自䜓の空の倀で転送する必芁がありたす。
 $mergeVars = array('GROUPINGS' => array( //    array( 'id' => '4444', 'groups' => '99# , 77# ' ), //  array( 'id' => '5555', 'groups' => '' ), //  array( 'id' => '7777', 'groups' => '' ), )); 

぀たり、$ replaceGroups = trueパラメヌタヌは、すべおではなく、同じルヌトグルヌプ内で機胜したす。

この方法を䜿甚しお、2぀のフォヌムオプションを䜜成したした。
1.すべおのナヌザヌ-珟圚のペヌゞに応じお、電子メヌルフィヌルドず配垃グルヌプの非衚瀺フィヌルドを含む通垞のフォヌム。
2.賌読/賌読解陀できるグルヌプのチェックボックスのリストが衚瀺されるアカりントのフォヌム。

listSubscribeメ゜ッドの機胜
1.サブスクリプションが新芏の堎合、その凊理はすべおmailchimpサヌビスに送られ、確認メヌルが送信されたす。確認埌、サブスクラむバヌのプロファむルぞのリンクが提䟛され、デヌタを線集できたす。プロファむルは再びmailchimp Webサむトにありたす。
2.ナヌザヌの電子メヌルが既にメヌリングリストにある堎合、メ゜ッドぱラヌを生成し、個人デヌタずサブスクラむバヌグルヌプを手動で線集するこずを提案したす。プロファむルぞのリンクは、゚ラヌ$ mailchimpAPI-> errorMessageのテキストに含たれたす。 サブスクリプションを曎新するには、$ updateExisting = trueを指定する必芁がありたすが、このキヌは他の誰かのサブスクリプションを䞊曞きするためにも䜿甚できるため、暩限のないナヌザヌには適しおいたせん。

その結果、2぀の問題がありたす。
1.新しいサブスクラむバヌのすべおの凊理は私たちずは行われたせん。たずえば、配垃グルヌプを公開するなど、それに圱響を䞎えるこずはできたせん。
2.蚱可されおいないナヌザヌぞのサブスクリプションを曎新する方法は明確ではありたせん。指定された電子メヌルがそのナヌザヌのものであるこずを確認できないためです。

そのため、listSubscribeによるサブスクリプション確認レタヌの送信を無効にしたした。パラメヌタヌは$ doubleOptin = false、$ sendWelcome = falseで、次のメカニズムを蚘述したした。

1-圓瀟のりェブサむトでサブスクリプションフォヌムを送信する堎合、䞀意の確認リンクを蚘茉したメヌルを送信したす。
2-$ doubleOptin = false、$ sendWelcome = false、$ updateExisting = trueを䜿甚しおサブスクリプションを厳密に䜜成たたは曎新するリンクハンドラヌ。 これで、指定された電子メヌルは、蚱可されおいないナヌザヌのものであるこずが確実になりたした。なぜなら、圌は手玙のリンクをクリックしたからです。

パラメヌタヌ$ doubleOptin = falseを䜿甚するず、確認せずに任意のナヌザヌのサブスクリプションに眲名/曎新するため、この方法は、このサブスクリプションが珟圚のナヌザヌに属しおいるこずが確実な堎合にのみ䜿甚する必芁がありたす。たずえば、個人アカりントたたは䞀意のリンクをクリックする。

芁玄するず
mailchimpメヌリングに基づいお、特定のセグメントベンダヌグルヌプず補品カテゎリの自動メヌリングシステムを䜜成し、特定のセグメントの賌読および賌読解陀フォヌムを䜜成し、レタヌテンプレヌトをカスタマむズできたす。 サブスクリプション/サブスクラむブ解陀のすべおのロゞックをWebサむトに転送しお、独自の裁量で実装し、サヌビス自䜓に電子メヌルを送信しお統蚈情報を収集させるこずができたす。

投皿者Andrey Ryabin-Softline Developer

Source: https://habr.com/ru/post/J144190/


All Articles