データソースとマージタグ
マージタグを使うと、実際のデータで各メールをパーソナライズできます。テキストブロック内のどこにでも{{field}}を記述できます——例:Hi {{first_name}}, your {{plan}} renews soon——そうすると各受信者にはそれぞれ自分の値が表示されます。1つのプロジェクトは複数のデータソースを同時に接続できます。それぞれのデータソースには短いエイリアスが付き、オーディエンス以外のソースのフィールドは{{alias.field}}(例:{{products.name}})という形で記述します。
データソースの種類
データソースはダッシュボードのデータソースセクションで管理します(連絡先リストは連絡先の下にあります)。データソースには2種類あります。
ホスト型テーブル
MailInAppに保存されたテーブルです。列を定義し、ダッシュボードで行を追加すると、各列がマージフィールドになります。現在データがスプレッドシートにある場合に最適です。連絡先リストは、email列が保証されたホスト型テーブルです。
API接続
JSONを返す自分自身のHTTPエンドポイントをMailInAppに指定します。行はサーバーサイド——つまり私たちのサーバーから——取得され、受信者の受信トレイやあなたの訪問者のブラウザから取得されることは一切ありません。
接続の認証方法は3種類あり、設定時に認証のドロップダウンから選びます。
- 静的ヘッダー — 固定値を持つリクエストヘッダー(例:
Authorizationヘッダー)を追加します。最も単純な方法で、トークンが期限切れになるという概念がなかった頃には唯一意味のある選択肢でした。 - OAuth2 Client Credentials — トークンURLとクライアントID・シークレットを使用します。MailInAppはサーバーサイドでこれらをアクセストークンと交換し、キャッシュして、期限切れになる前に自動的に更新します——APIキーとシークレットを使う多くのエンタープライズ統合で使われる一般的なパターンです。
- OAuth2 JWT Bearer — トークンURL、issuer、subject、audience、およびRSA秘密鍵(PEM)を使用します。MailInAppは新しいJWTアサーションに署名してアクセストークンと交換します。対話的なログインも、管理が必要なリフレッシュトークンも不要です——これはSalesforceのサーバー間統合が採用している認証方式で(Salesforce統合ガイドを参照)、Googleのサービスアカウントやこのフローに対応する他のIdPでも同じように機能します。
どのモードを選んでも、生成されたベアラートークンは自動的にAuthorizationヘッダーとして挿入されます——あなたが追加したほかのヘッダーもそれと一緒に送信されます(そこで文字どおりAuthorizationという名前のヘッダーを追加しても、常に生成されたトークンが優先されるため無視されます)。ヘッダーの値、クライアントシークレット、秘密鍵といった認証情報系のフィールドはすべて次のルールに従います。
- サーバーサイドにのみ保存される
- ブラウザには送信されない
- 保存後はすべてのAPIレスポンスでマスクされる
シークレットがマスクされて表示されている接続を編集してこの設定をテストをクリックする場合は、まず実際の値を再入力する必要があります。一方、保存済み接続をテストは、保存されている認証情報に対してそのままチェックを実行し、その値をブラウザに送り返すことはありません。
ソースの接続:データパネル
スタジオのデータパネルは、プロジェクトがどのソースを使うかを宣言する場所です。**+ データソースを追加…**で1つ接続できます(プロジェクトあたり最大10個)。それぞれの接続には3つの要素があります。
- エイリアス — マージタグで使われる短い識別子です。小文字のアルファベット、数字、アンダースコアが使え、先頭は文字である必要があります(例:
contacts、products、open_invoices)。エイリアスの名前を変更すると、それに紐付けられた繰り返しブロックも自動的に更新されます。 - ソース — その背後にあるホスト型テーブル、連絡先リスト、またはAPI接続です。
- 役割 — メールがそのソースをどのように使うかです。
- オーディエンス — メールの送信先となる連絡先リストです。プロジェクトあたり最大1つで、必ず連絡先リストである必要があります。そのフィールドはそのままのタグ——
{{first_name}}、{{email}}——として、送信時に各受信者自身の行から解決されます。オーディエンスは「プレビュー対象」セレクターと、受信者ごとの回答の紐付けも担っています。 - マージフィールド — エイリアスの下で読み取れるフィールドで、
{{alias.field}}として、メールがレンダリングされる際にソースの先頭行から解決されます。受信者ごとのデータではなく、注目商品や今週の統計情報のような共有コンテンツに使います。 - 繰り返し行 — そのエイリアスに紐付けられた繰り返しブロックに行を供給します。繰り返しの外にはマージフィールドを提供しません。同じ
collection役割は、KPI/バー/ライン/円グラフブロックにも行を供給します——チャートを実際のデータに紐付けるを参照してください。
- オーディエンス — メールの送信先となる連絡先リストです。プロジェクトあたり最大1つで、必ず連絡先リストである必要があります。そのフィールドはそのままのタグ——
接続済みのソースはそれぞれ、フィールドをクリック可能なチップとして一覧表示します——クリックすると正確なマージタグがコピーされ、任意のテキストプロパティに貼り付けられます。表示条件エディタのフィールドドロップダウンも同じ方法でグループ化されています。受信者(オーディエンス)のフィールドに加えて、マージソースごとに1つのグループがあります。
組み込みタグ
少数のタグはデータソースではなくプラットフォーム自体によって提供されます——スタジオの左サイドバーにある変数パネルに、あなたが定義した変数と並んで一覧表示され、クリックするとそのタグをコピーできます。
{{recipient_email}}— メールの送信先アドレスです。{{today}}/{{now}}— メールが開封された日付(または日時)です。{{unsubscribe_url}}— 受信者ごとのワンクリック配信停止リンクです。フッタープリセットにはすでに含まれています——連絡先への送信を参照してください。
受信者ごとの1回限りのストア割引コードはマージタグではありません——代わりにEコマース割引ブロック(Shopify/WooCommerce連携済みのオーディエンス限定)をメールに配置すると、自動的に独自のコードを生成して表示します。割引オファーを参照してください。
組み込みタグは実際の送信(手動、スケジュール、または「Backfill」形式のテスト送信)でのみ解決されます——スタジオのプレビューとキャンバスでは、サンプル値のないほかのフィールドと同様に、空またはプレースホルダーとして表示されます。
繰り返しコンテンツ
繰り返しブロックは、紐付けたソースの行ごとに子要素を1回レンダリングします——商品グリッド、記事のダイジェスト、未払いの請求書一覧などです。インスペクターでエイリアスによってソースを選びます。繰り返しの内部では、タグはその繰り返し自身の行に対して解決されます。
実際のデータでプレビューする
スタジオのプレビューデータセレクターは、オーディエンスリストの任意の行でキャンバスをレンダリングします。これにより、送信前に{{first_name}}が実際にAminaのような値になっていて、{{first_name}}のままではないことを確認できます。他のソースのフィールドにもプレビュー用の値を設定できます。
知っておくとよいこと
- 受信者に対して値が欠けているフィールドは空文字列としてレンダリングされます——値が空でも自然に読めるようにデザインしてください。
- ホスティングされたページ(ライブビュー、ホスト型フォーム)は、レンダリング時に受信者ごとにマージタグを解決するため、受信者が受信トレイを離れてもパーソナライズは維持されます。
- 複数ソース対応より前に作られたプロジェクトも変更なく動作し続けます。その1つの接続済みソースはデータパネルに自動的に表示され、そのままの
{{field}}タグは常にオーディエンスに対して解決されます。