見出し画像

【第230回】 ContentBlockById で参照されるコンテンツを変更する方法

Salesforce Marketing Cloud のメール作成において、参照コンテンツブロックや、ContentBlockById、ContentBlockbykey、ContentBlockByName などの AMPscript を使って、再利用可能なブロックを呼び出すことがあります。

例えば、すべてのメールに含まれるような「ヘッダー」や「フッター」だったり、独自にカスタムしたレコメンドパーツを、そのブロックの最新の状態で呼び出すことができる機能になっています。

但し、これらは一度ジャーニーをアクティブ化してメールが送信されると、キャッシュが作成されるため、参照しているコンテンツの中身を Content Builder で変更したとしても、既にジャーニー上で稼働しているコンテンツの中身は変更されないことが知られています。

一度アクティブ化した後に、コンテンツの中身を変更するには「再公開」の作業が必要となります。再公開とは、言い換えると、そのメールアクティビティの「ジョブ ID が変わること」を意味します。そこで今回は、ジョブ ID を変える方法を確認して、どのような作業を行えば、コンテンツの中身を最新の状態に変更できるのか、確認してみましょう。

※ 正確にはキャッシュが作成されるのは、ジョブ ID が変更された時点ではなく、ジョブ ID が変更された後に、最初のメールが送信された時点です。


ジョブ ID を変える方法

今回、ジョブ ID を変える方法として、以下の 4 つを紹介します。


そして、最後の 5 つ目に紹介している方法は、ジョブ ID を変えないで最新の状態に変更する方法です。少しだけ仕込みが必要ですが、この ⑤ を採用すれば、多くの問題は解決しますので、そちらも活用してみてください。

それでは、一つずつ見て行きましょう。


① ジャーニーのメールアクティビティから再公開する

まず、最もシンプルな方法として紹介するのが、ジャーニーのメールアクティビティを開いて、再公開する方法です。

1. Content Builder で中身に変更を加えた後、該当のメールアクティビティをクリックしたら、「アクティビティサマリー」をクリックします。

2. 続いて、すでに Content Builder でコンテンツの中身を変更済みであれば、「完了」ボタンを押すことで、ジョブ ID が変更されます。

先ほども書きましたが、ジョブ ID が変更されることでキャッシュが作成されるわけではありません。あくまで最初のメールが送信された時点でキャッシュが作成されます。よって、アクティブ化が済んでいて、1 ヶ月後に初めて送信されるということであれば、その 1 ヶ月の間は自由に変更が可能ということになります。

また、この方法を採用する時に注意した方が良いのが、保存をする時に画面を落とさないようにすることですね。これを守らず、画面を落としてしまうと、ジョブが停止する仕様になっています。大量に作業することになると焦って次に行きたくなりますが、しっかりと保存されるのを待ちましょう。このことについては、別の記事で書いていますので、参考にしてください。


② Email Studio のインタラクションから再公開する

次に、ヘッダーやフッターのような多くのメールに含まれているブロックの再公開処理をする必要がある場合は、メールアクティビティを一つずつ開いて処理するより、Email Studio のインタラクションから複数のメールを選択して、一気に処理してしまう方が効率的です。

1. Email Studio から「インタラクション」タブを選択して、該当のジャーニーを選択したら、メールをすべて選択します。

2. 「一時停止」をクリックします。

3. 再び、すべてのメールを選択して、「パブリッシュ変更」をクリックします。

4 再び、すべてのメールを選択して、「開始/再開」をクリックします。この「開始/再開」がクリックされた時点で、ジョブ ID が変更されます。「パブリッシュ変更」をクリックしたタイミングではありません。

「開始/再開」するのを忘れてしまうと、このメールアクティビティでは送信が実行されず、「キュー」に留まってしまいますので、注意してください。


③ ジャーニーのバージョンを上げて再公開する

次のジャーニーのバージョンを上げる方法は、状況によって、可能な場合と不可能な場合があるかと思います。ご存じの通り、ジャーニーの途中にいる連絡先を新しいバージョンに移動させることはできませんので、ジャーニーを完全に停止して、新たにバージョンを別で作成するか、ジャーニーの途中にいる連絡先を、引き続き古いバージョンに残したまま、新たにバージョンを別で作成するかを選択する必要があります。

新しいバージョンでは、最新のコンテンツが反映されるようになっていますので、バージョンを作成したら、その新しいバージョンをアクティブ化すれば、最新のコンテンツが表示されます。なお、古いバージョンに連絡先を残す選択をした場合は、その連絡先には、古いコンテンツのまま送信されますので注意して下さい。


④ 自動連絡禁止リストの「既知の問題」を使って再公開する

次の自動連絡禁止リストを使用する方法は、やや裏技的な方法になります。以下の「既知の問題」があるのは御存じでしょうか。

現在、自動連絡禁止リストを作成すると、自動的にジョブ ID が変更されるという「既知の問題」があります。これを逆手に取って、単に自動連絡禁止リストを作成してしまえば、アカウント内のすべてのメールアクティビティの ジョブ ID が一括で変更されるというものです。

自動連絡禁止リストを作成する際は、何も構成する必要はありません。名前だけ決めて「保存」するのみです。

この方法について、もう少し詳しく解説すると、自動連絡禁止リストを作成しただけでは、まだメールアクティビティのジョブ ID は変更されません。自動連絡禁止リスト作成後に、そのメールアクティビティから 1 通目のメールが送信されるタイミングで、自動連絡禁止リストが増えているという評価がなされ、ジョブ ID が新たに作成される仕組みになっています。

また、自動連絡禁止リストを「削除」した場合も、同様に ジョブ ID は発行されます。つまり、前回の送信時以降に、自動連絡禁止リストが作成されるか、削除されるかすると、それ以降の初めての送信のタイミングでジョブ ID が発行される仕組みになります。よって、自動連絡禁止リストを作成して、すぐにそれを削除したとしてもジョブ ID は発行されることになります。

< 注意点 >

  • ジョブ ID の変更タイミング
    自動連絡禁止リストを作成した時点でジョブ ID が変更されるわけではありません。各メールアクティビティで最初の送信が行われるタイミングでジョブ ID が発行されます。例えば、1 ヶ月後に最初の送信が予定されている場合、そのジョブ ID の変更には 1 ヶ月待つ必要があります。

  • 既知の問題の解消リスク
    この方法は、現在の「既知の問題」を利用しているため、Salesforce がこの問題を解消した場合、この仕組みは動作しなくなる可能性があります。

  • レコードの追加は不要
    自動連絡禁止リストにレコードを追加する必要はありません。リストを作成するだけで十分です。


ジョブ ID を変えない方法

⑤ AMPscript の Lookup を使うことでコンテンツを切り替える

最後に紹介するのは、ジョブ ID を変えなくても変更できる方法です。個人的にはこの方法をオススメします。

方法としては、以下のように ContentBlockById の中に Lookup を組み込みます。この時、向き先となるデータエクステンションは?と言うと、送信マスターデータエクステンションのようなすべての送信対象者が含まれるようなデータエクステンションが良いでしょう。

この送信マスターデータエクステンションに「Header」や「Footer」のような項目を持たせて、そこに該当のコンテンツブロック ID を格納します。

%%=ContentBlockById(Lookup("Master_DE", "Footer", "Id", _SubscriberKey))=%%

少しだけ具体的に説明しますと、「Master_DE」というデータエクステンションの項目に、購読者キー用の「Id」、ヘッダー用の「Header」、フッター用の「Footer」という項目を作成します。

このような送信マスターデータエクステンションは、普通、SQL で作成していることが多いと思うのですが、この「Header」や「Footer」に、ヘッダーやフッターを作成しているコンテンツブロック ID を固定で差し込みます。

以下のような Footer ブロックが存在するのであれば、以下の赤枠の箇所にそのコンテンツ ID の記載があります。

固定で差し込む場合の SQL サンプルとしては、以下のような形になります。

SELECT	Id,
	Email,
	'30159098' AS [Header],
	'30159099' AS [Footer]
FROM DataExtension

これで、すべての「Footer」の項目値として「30159099」という数字が固定で入るようになります。

設定自体は以上で完了となります。後は、Lookup を含む ContentBlockById をメールに仕込んで送信します。

%%=ContentBlockById(Lookup("Master_DE", "Footer", "Id", _SubscriberKey))=%%

もし、フッターを変更したくなった場合は「30159099」のコンテンツを編集するのではなく、この「30159099」を元にした 別のコンテンツ「Footer2」を複製機能で作成し、そちらを編集するようにします。

そして、仮に複製された「Footer2」のコンテンツ ID が「30159100」であれば、SQL を以下のように変更します。

SELECT	Id,
	Email,
	'30159098' AS [Header],
	'30159100' AS [Footer]
FROM DataExtension

この SQL が実行されて、配信マスターデータエクステンションに値が反映されれば、その後に送信されるメールのフッターが新しい「30159100」の方に変更されます。

ここでは、Lookup を使って、向き先を変えることがポイントになります。元になっている「30159099」の中身を変更しても、依然としてキャッシュは残っており、古いコンテンツが表示されますので注意してください

また、Lookup で参照している送信マスターデータエクステンションの中に送信対象の購読者キーが含まれていることが前提となっています。もし含まれずに送信した場合は、ヘッダーやフッターが表示されずに送信されるのではなく、内部エラーとなり送信自体されません


いかがでしたでしょうか。

単純に 1 つのメールで使用されているコンテンツブロックを変更する場合は、① の方法であるべきだと思いますが、100 も 1,000 も変更する必要があると大変ですので、④ や ⑤ の方法を活用してみてはいかがでしょうか。

ちなみに、この ④ に関しては、正式運用としては「禁断」かと思いますので、Salesforce 本体の方にお叱りを受けそうな方法ですが、個人的には、良い意味でのハック(工夫)だと思っていますので、皆さんの会社で許容されるのであれば、ご活用ください。

今回は以上です。


Click here for English version

次の記事はこちら

前回の記事はこちら

私の note のトップページはこちら

いいなと思ったら応援しよう!