Blogical

AWS/Salesforceを中心に様々な情報を配信していきます(/・ω・)/

Account Engagement:記念日メールの自動送信

こんにちは、ロジカル・アーツの西田です。
今回はAccount Engagementで毎年特定の日にメールを自動送信する方法をご紹介します。

Salesforceでの作業

「お客様の誕生日にメールを送りたい」と思ってもSalesforceの日付項目は年月日が項目としてまとまっているため、そのままでは「今年の」誕生日にメールを送信することができません。例えば1991年12月12日が誕生日だとすると「今年の12月12日」を示す日付項目が別途必要になります。
さて、前述の目次で

  • 生年月日項目から月日を見て当日Trueになる数式項目を作成
  • スケジュールトリガーで項目がTrueの場合今日の日付を返す

と記載いたしましたが、「今年の12月12日」を示す日付項目が必要なだけであれば数式項目で日付を設定すればよいと考える方もいらっしゃるでしょう。もちろんSalesforce上で使用する項目であれば問題ない方法なのですが、今回はAccount Engagementのオートメーションルールで使用することを目的としています。
Account EngagementとSalesforceの同期は数式項目の変更ではトリガされません。
※Salesforceヘルプ:Account Engagement で項目が同期されない
なので、毎年同期させるためにはフローで日付を返す必要があります。

生年月日項目から月日を見て当日Trueになる数式項目を作成

フローの絞り込み条件になる項目を作成します。
今回はチェックボックス型で作成します(条件になれば何の項目データ型でも大丈夫です)
リードまたは取引先責任者のオブジェクトマネージャを開き > 項目とリレーション > 新規 > [ 数式 ] にチェックを入れ [ 次へ ] > 項目の表示ラベルと項目名を記入し、[ チェックボックス ] にチェックを入れ [ 次へ ] > 高度な数式の記入欄に以下の構文を入れて [ 次へ ]

IF(
  IF(
    AND(
      MONTH(Birthdate)=2,
      DAY(Birthdate)=29,
      OR(
        MOD(YEAR(TODAY()),400)=0,
        AND(
          MOD(YEAR(TODAY()),4)=0,
          MOD(YEAR(TODAY()),100)!=0
          )
        )
      ),
      AND(
        MONTH(Birthdate)=MONTH(TODAY()),
        DAY(Birthdate)=DAY(TODAY())
      ),
      AND(
        MONTH(Birthdate+1)=MONTH(TODAY()),
        DAY(Birthdate+1)=DAY(TODAY())
      )
    ),
  true,false)

項目レベルセキュリティとページレイアウトを設定し保存

構文の意味としては、「誕生日が2/29で今年がうるう年じゃない場合には2/29の次の日(3/1)にtrueを返す、そうでなければ誕生日と今日が同じであればtrueを返す」というものです。
true,falseの部分をデータ型に合うように設定してください。
誕生日項目以外の日付項目を起点とする場合は、Birthdateを起点としたい項目のAPI参照名に変更してご使用ください。
※Salesforceヘルプ:日付数式のサンプル

スケジュールトリガーで項目がTrueの場合今日の日付を返す

フローが動いた際に更新を返す場所としてリードまたは取引先責任者に日付項目を作成します。
その後、スケジュールトリガーフローを作成します。
※前述のAccount EngagementとSalesforceの同期と同様に、フローも数式項目を更新トリガーにすることができません。指定した時間に毎日起動するフローを作成する必要があります。
設定のクリック検索でフローを検索 > [ 新規フロー ] > [ スケジュールトリガーフロー ] を選択し [ 作成 ]

フローの開始条件を設定

◎ スケジュールを設定
頻度を [ 毎日 ] に設定し、開始日・開始時刻を設定し [ 完了 ]
開始時刻はなるべく動作に影響のない時間かつAccount Engagementでオートメーションルールがすぐ動いてしまっても問題ない時間をお勧めしますが条件があるのでそこまで負荷はかからない想定です。

◎ 条件設定
オブジェクトを先ほど項目を作成したオブジェクト(リードまたは取引先責任者)に設定し、条件を以下のように設定します。

項目 演算子
作成したチェックボックス項目 次の文字列と一致する True


要素を追加

開始フローと終了の間の(+)をクリックし、[ レコードを更新 ] 要素を追加します。

更新するレコードを検索してその値を設定する方法の [ $Record グローバル変数を使用 ] にチェックを入れます。

◎ 条件設定
以下のように設定します。

項目 演算子
作成したチェックボックス項目 次の文字列と一致する True

※スケジュールの条件にも入っているのでいらないかもしれません。

◎ 項目値をレコードに設定
以下のように設定します。

項目
作成した日付項目 現在の日付($Flow.CurrentDate)を設定

上記設定で保存してフローを有効化します。
以上でSalesforceでの設定は完了です。

Account Engagementでの作業

作成した日付項目をAccount Engagementに同期

Salesforce上で更新された項目と同期するためのカスタム項目を作成します。
Account Engagement設定 > プロスペクト項目 > [ +カスタム項目を追加 ]

作成画面では以下のように設定します。

設定箇所
Salesforce項目名 作成した日付項目
同期動作 Salesforceでの値を使用する
種別 日付

[ カスタム項目を作成 ] をクリックするとポップアップが表示されますので [ プロスペクトを同期 ] をクリックしてください。

オートメーションルールを作成

作成した項目を元に日数を判断し、アクションを起こすオートメーションルールを作成します。
オートメーション > オートメーションルール > [ +オートメーションルールを追加 ]

設定箇所
ルールの繰り返し チェックを入れる
ルールの一致数を制限 いいえ、無制限の一致を許可します
ルール プロスペクトのカスタム項目 > [ 設定したカスタム項目 ] > 次の日数以内前 > 0
アクション プロスペクトメールを送信 > [ 送信したいメールテンプレート ]

以上で完成です!これで毎年自動でメールが送信されます。
是非ご活用くださいませ。