
【第618回】 Marketing Cloud Next : 受信者単位でのユニークなクーポン配布
Marketing Cloud Next Growth & Advanced Editions の Winter '27 新機能リリース では、新たに導入された Coupon Management の仕組みを利用して、受信者ごとに異なるユニークなクーポンコードをメールなどのメッセージに差し込めるようになりました。

たとえば、
10% OFF クーポン
初回購入クーポン
カート放棄ユーザー向けクーポン
誕生日クーポン
再購入促進クーポン
などで、同じコードを全員に配布するのではなく、一人ひとりに異なるコードを割り当てることができるようになりました。

なお、Marketing Cloud Next の Coupon Management は、クーポンコードを生成する機能ではありません。EC や基幹システムなどで事前に発行したユニークなクーポンコードを Coupon List に取り込み、受信者ごとに割り当てて配信するための機能 になります。
Coupon Management の仕組み
Marketing Cloud Next の Coupon Management では、複数のユニークなクーポンコードを 1 つの Coupon List に登録します。
たとえば、
ABC001
ABC002
ABC003
ABC004
ABC005
というコードを登録しておくと、メッセージ送信時に受信者ごとに異なるコードを割り当てることができます。
Coupon List を作成する
Marketing アプリから Coupons タブを開きます。Coupons タブが表示されていない場合は、Marketing アプリのナビゲーション項目に追加します。

Coupons タブから New をクリックして新しい Coupon List を作成します。
主な設定項目は次のとおりです。
Name:クーポンリストの名前
Value:割引の内容
Description:説明
Status:有効 / 無効
Business Unit:複数のビジネスユニットがある場合のみ表示
Active Period:利用開始日時と終了日時

Value には、
30% Off
Buy One Get One
など、クーポンの内容を設定できます。
重要:Coupon List を「有効」にしておかないと、受信者へクーポンコードは割り当てられません。
同じ受信者にコードを再利用するか選択できる
また、Coupon List には、
Always assign a new coupon code
という設定があります。

この設定を OFF のままにした場合、同じ受信者に再度別のメッセージを送信すると、以前にその受信者に割り当てたクーポンコードが「再利用」されます。
一方、ON に変更すると、別のメールを送信するたびに新しいクーポンコードが割り当てられます。
たとえば、デフォルトの OFF の場合
1 回目:Customer A → ABC001
2 回目:Customer A → ABC001
というように、同じコードが再利用 されます。
Always assign a new coupon code を有効にすると、
1 回目:Customer A → ABC001
2 回目:Customer A → ABC025
のように、新しいコードが割り当て られます。
これは用途に応じて使い分けると良いと思います。
Coupon Code をアップロードする
Coupon List を保存したら、Coupon List のレコード画面から Upload Coupon Codes ボタンをクリックします。

CSV のサンプルファイルがダウンロードできるので、ダウンロードします。

アップロードする CSV は非常にシンプルで、1 列のみです。ヘッダーには、CouponCode を指定してください。
CouponCode
ABC001
ABC002
ABC003
ABC004
ABC005

CSV をアップロードすると、Coupon List にコードが登録されます。
大量の Coupon Code をアップロードした場合はバッチで処理され、完了するとメールで通知されます。

Coupon List の Coupon Codes タブでは、
Coupon Code
作成日時
割り当て日時
割り当て先
なども確認できます。

メールコンテンツに Coupon List を追加する
作成した Coupon List は、Marketing Cloud Next のコンテンツに Data Source として追加します。
メールを開き、
Data Sources > Add > Data Sources
をクリックします。

Type では、
Coupon Data Provider
を選択します。

その後、
Data Source Name(定義名)
Coupon List
を設定します。

なお、この Coupon List とコンテンツは、同じ Business Unit に属している必要があります。
Data Source として追加すると、Coupon List の項目を Merge Field としてコンテンツ内で利用できます。
利用できる項目には、
Coupon Code
Description
Value
Start Date
End Date
Status
などがあります。

そのため、たとえばメールでは、
Your Coupon Code
20% OFF
ABC001
Valid until October 31
のような表示ができます。
Handlebars から Coupon を割り当てる
Winter ’27 では、Marketing Cloud Next の Handlebars に assignCoupon が追加されています。
assignCoupon を利用すると、Coupon List から現在の受信者に対して Coupon Code を割り当てることができます。

たとえば、次のように利用します。
{{set "coupon" (assignCoupon list="C-000000002")}}
Your coupon code is {{get @root.coupon "Code"}}assignCoupon は、Coupon List の Coupon Row を現在の受信者に対して Claim します。
Coupon List で Always assign a new coupon code を有効にしていない場合は、同じ受信者にすでに Coupon Code が割り当てられていれば、そのコードを返します。
Coupon Code 以外にも、
Status
Description
Value
StartDateTime
EndDateTime
などを取得できます。
たとえば、
{{set "coupon" (assignCoupon list="C-000000002")}}
Coupon Code: {{get @root.coupon "Code"}}
Discount: {{get @root.coupon "Value"}}
Valid until: {{format (get @root.coupon "EndDateTime") "MMMM d, yyyy" "date" "en-US"}}のようなコンテンツを作成できます。
Coupon Code がない場合も考慮する
assignCoupon は、
利用可能な Coupon Code がない
Coupon List が無効
受信者に Individual ID がない
といった場合に例外になります。
そのため、実際のコンテンツでは fallback を利用して、Coupon Code が取得できない場合も考慮するとよいでしょう。
たとえば、
{{fallback
(get (assignCoupon list="C-000000002") "Code")
"Coupon unavailable"
}}のように、Coupon を利用できない場合の表示を用意できます。
Preview と Test Send には注意
Coupon を利用する場合、プレビューとテスト送信の動作にも注意が必要です。
プレビューでは Coupon List からランダムな Coupon Code が表示されますが、使用した Coupon Code は再利用できます。

一方、Test Send で利用された Coupon Code は使用済みとしてカウントされ、本番送信では再利用されません。
テスト送信の場合は、individual_id_abse と表示されます。

そのため、大量にテスト送信すると、本番配信用に用意した Coupon Code を消費してしまう可能性があります。本番用の Coupon List を利用してテストを行う場合は注意してください。
少なくとも Activation Template を使う
Marketing Cloud Next の Coupon Management は Individual ID ベースで管理されます。クーポンが割り当てられると、送信後の Coupon レコードには対象となる Individual ID が保存されます。
また、セグメントフローで Activation Template を利用しない場合、1 つの Unified Individual に複数のメールアドレスが紐づいていると、それぞれのメールアドレスに対して送信されます。これは仕様とされています。
この場合、同じ Unified Individual に紐づくメールアドレスであっても、それぞれ別の Coupon Code が割り当てられて送信されることを確認しました。

よって、複数のメールアドレスが紐づく環境においては、Activation Tempate の利用は必須と言えそうです。

一方で、現時点では仕様なのか不具合なのか判明していませんが、1 回の送信につき 2 つの Coupon Code が消費される挙動も確認しています。
この現象は、
セグメント送信
CRM Record Query 送信
のどちらでも発生しました。
しかし、Actionable List を利用した「リスト送信」では、1 回の送信につき 1 つの Coupon Code のみが割り当てられ、2 つ消費されることはありませんでした。
現時点では、この違いが仕様によるものなのか、不具合によるものなのかは確認できていません。
Coupon Code がなくなると送信が失敗する
もう 1 つ重要なのが、Coupon Code の残数です。
メッセージ送信時に、
Coupon Code をすべて使い切っている
Coupon List の有効期限が切れている
場合、メッセージ送信自体が失敗します。
たとえば 10,000 人へメールを送信する場合、少なくとも対象人数をカバーできる Coupon Code を準備する必要があります。
Business Unit にも注意
Business Unit を利用している場合、Coupon List には Business Unit を割り当てます。
Coupon List を作成した後に、割り当てた Business Unit を変更することはできません。
また、コンテンツで Coupon List を利用する場合は、Coupon List とコンテンツが同じ Business Unit に属している必要があります。
Coupon List を参照しているコンテンツが存在する場合、その Coupon List を削除することもできません。
claimRow との違い
Winter ’27 では、assignCoupon とあわせて claimRow という Handlebars 関数も追加されています。
claimRow は Marketing Object から最初の未使用 Row を取得し、その Row を Claim 済みに変更する関数です。
たとえば、
Coupon Code
シリアル番号
招待コード
引換コード
一意の URL
などを 1 人ずつ割り当てる用途にも利用できます。
assignCoupon が Coupon Management 専用の仕組みなのに対し、claimRow は Marketing Object を利用した汎用的な Row 割り当て機能と考えると分かりやすいでしょう。
Coupon Code を配布するだけであれば、基本的には Coupon List と assignCoupon を利用するのがシンプルです。
いかがでしたでしょうか。
Marketing Cloud Next の Coupon Management を利用すると、受信者ごとに異なるユニークな Coupon Code を管理し、そのコードをメールなどのマーケティングコンテンツへ簡単に差し込むことができます。
これまでもデータを事前に準備して同様の仕組みを作ることはできましたが、Coupon Management では、
Coupon List の作成
Coupon Code のアップロード
受信者へのコード割り当て
割り当て状況の管理
コンテンツからの利用
までを Marketing Cloud Next 上で管理できるようになりました。
一方で、Coupon Code の不足や有効期限切れは送信失敗につながるため、十分なコード数を準備し、残数と有効期間を管理することが重要です。
今回は以上です。