フィールドの変更履歴をフィールドに残す
こんにちは。マルケトの下村です。
しばしばこの質問を頂いて、どなたかの記事を案内していたような気がするのですが...私も書いてみました(重複していたらごめんなさいっ!)
フィールドのデータ値変更の履歴を見たいとき、アクティビティログでも確認することができますが、今回は別のフィールドに残しておくというスマートキャンペーンを作ってみたいと思います。
例えば、コンタクト日がどう遷移しているのかをフィールドに記録されるようなものを作りたい...としまして、トリガーキャンペーンを作りたいと思います。

まずは、履歴を残しておくフィールドを新規に作成します。

フィールドが出来たらトリガーキャンペーンを作成します。
トリガー条件

フローアクション

フローアクションでは、コンタクト履歴が空欄だったときのことを考慮して「選択肢」を使って条件制御しています。
既にコンタクト履歴が入っているリードレコードに対しては、「これまでに入っていた値」+「新しく入った日付」をセットするようにします。
ここで注意が一つ。
トリガー条件は「データ値変更」となっています。もし、このコンタクト日がリードの新規作成と同時にセットされる場合にはこのトリガーアクションは動作しません(データ値変更は既に登録されているリードに対し、フィールドの変更がかかった場合に動作します)。新規リードについてもこのトリガーを動作させたいという場合は、新規リード作成時に「コンタクト日の履歴」をセットするキャンペーンを用意します。
さらに注意がもう一つ。
リード作成と同時に動作するトリガーキャンペーンをセットする場合、フォーム入力のように1件ずつデータが来るという場合はよいのですが、インポートで一度に大量に投入する場合はご注意ください。リードの件数が多いとシステムは「リードの作成」と「コンタクト日履歴」という2つの仕事をせねばならなくなるため、どうしても「リードの作成」だけを行うより時間を要してしまいます。
よって、インポートが終わった後にバッチキャンペーンで「履歴」のフィールドに値をセットするか、最初からインポートで「履歴」のフィールドに値をセットするのがよいと思います。
そして有効化する前に、クオリフィケーションルールで毎回リードがこのキャンペーンを通るようにしたら有効化します。

さて、ここまできてこれを応用しようと思った皆様。ご注意事項が更にあります。
例えば、「フォーム入力を記録していきたいな~」と思ったとします。管理上、1つのキャンペーンで出来たらなと思って次のように選択肢を使ってフローアクションを制御しようと考えました。しかし、残念ながら期待通り動作しない可能性が高いです。なぜなら、選択肢の「フォーム入力完了」の条件が評価されるとき、トリガーされた時点ではなく、すべてのアクティビティログ(=リードが作成された以降すべて)が評価されます。今回入力したフォームが「ES_Sampleメルマガ配信」であっても、過去に「ERISHIMO_TEST Form」を既に入力したというアクティビティログがあると、”選択肢1"に合致してしまい、「最後の入力フォーム」フィールドには”ERISHIMO_TEST Form”が記録されてしまうことでしょう。

よって、このような場合にはフォームごとにトリガーを作ります。ただ、出来るだけ設定を共通にして管理を楽にしたいので、トリガートークンを使います。
トリガーキャンペーンはそれぞれのフォームごとに作り、フローアクションは共通にしておいて、フォームが増えても簡単に複製できるようにしておきます。
ERISHIMO_TEST Form用のトリガーキャンペーン

ES_Sampleメルマガ配信用のトリガーキャンペーン

フローアクションではトリガートークンを使っておくことで、複製してもフローアクションを修正する必要はありません。

なお、ここでも「フォーム入力の履歴」というテキストエリアのフィールドを作成しておき、「{{system.date}}-{{trigger.Name}}| {{lead.フォーム入力の履歴}}」というトークンの組み合わせで記録されるようにしています。
これにより、こんな感じでリードのフィールドは記録されていきます。

最後に...データ値の変更はアクティビティログに残っています(90日後にはアーカイブされますが...)。
なので、アクティビティログで変更を確認することができるので敢えてこの方法をする必要はないのですが、例えば「最後にフォーム入力した日付」をこの先のキャンペーンに使いたい!というプランがある場合は、この方法を検討いただければと思います。
それでは、また。