Contentful
Contentfulは、チームが構造化されたコンテンツを作成、管理し、あらゆるチャネルに配信できるヘッドレスのコンテンツ管理システムです。Contentful用のBrazeアプリは、そのコンテンツをBrazeのメッセージングに直接接続します。コネクテッドコンテンツを使用して送信時にContentfulのエントリをダイナミックにメッセージへ取り込んだり、選択したフィールドをBraze Content Blocksに同期してキャンペーンやキャンバス全体で再利用したりできます。
この連携はContentfulによって管理されています。
この連携について
このページでは、ContentfulでBrazeアプリを設定する方法と、ContentfulのアセットをBrazeで使用する方法について説明します。この連携により、以下のことが可能になります。
- 公開済みエントリに対してすぐに貼り付けられるBraze Connected Contentコールを生成し、Brazeメッセージ内で各フィールドを参照するために必要なLiquidタグも併せて取得できます。
- エントリから選択したフィールドを、選択したロケールとともにBrazeコンテンツブロックに同期できるため、コンテンツがBrazeダッシュボードでネイティブに利用可能になります。
これにより、コンテンツの信頼できる唯一の情報源が実現します。コンテンツ編集者は既存のレビューやローカライゼーションのワークフローを使ってContentfulで作業を続け、マーケターは承認済みで最新のコンテンツに基づいてBrazeでキャンペーンを構築できます。
前提条件
始める前に、以下が必要です。
| 要件 | 説明 |
|---|---|
| Contentfulアカウント | アプリをインストールするスペースへのSpace Admin アクセス権を持つContentfulアカウント。 |
| Contentful APIキー | 読み取りアクセス権を持つContentful Content Delivery API(CDA)キー。Contentfulで設定 > APIキーから作成します。 |
| Braze REST APIキー | content_blocks.create、content_blocks.update、content_blocks.info、およびcontent_blocks.listの権限を持つBraze REST APIキー。Brazeダッシュボードの設定 > APIキーからこのキーを作成します。コンテンツブロックの同期にのみ必要です。 |
| Braze RESTエンドポイント | Braze RESTエンドポイントURL。エンドポイントは、お使いのインスタンスのBraze URLによって異なります。コンテンツブロックの同期にのみ必要です。 |
連携
ステップ1:ContentfulにBrazeアプリをインストールする
- Contentful Webアプリにログインします。
- Apps > Marketplace を選択します。
- Braze アプリを見つけて選択します。
- Install を選択します。Manage app access ウィンドウが表示されます。
- Environments で、アプリをインストールする環境を選択します。
- Authorize access を選択します。アプリの設定画面が表示されます。
- Contentful API key に、Content Delivery APIキーを入力します。
- コンテンツブロックの同期を有効にするには、Braze REST APIキーを入力し、Braze RESTエンドポイントを選択します。
- Install to selected environments を選択します。

有効なContentful APIキーが必要というエラーが表示された場合は、そのキーにContent Delivery API(CDA)への読み取りアクセス権があることを確認してください。
ステップ2:コンテンツタイプにBrazeアプリを追加する
- Contentful Webアプリで、Content model タブに移動します。
- 既存のコンテンツタイプを選択するか、新しいコンテンツタイプを作成します。
- Sidebar セクションまでスクロールします。
- 利用可能な項目のリストから Braze を追加します。
- Save を選択します。
Brazeで利用可能にしたいコンテンツタイプごとに、この手順を繰り返します。
ステップ3:エントリをBrazeに接続する
- Content タブに移動し、Add entry を選択して、サイドバーにBrazeアプリが含まれるコンテンツタイプを選びます。既存のエントリを開くこともできます。
- エントリフィールドに入力し、エントリを公開します。Brazeは公開済みのコンテンツのみ取得できます。
- エントリのサイドバーで、Generate Braze Connected Content を選択してConnected Contentの呼び出しとLiquidタグを生成し、Brazeメッセージに貼り付けます。または、Create Content Block を選択して、選択したフィールドをコンテンツブロックとしてBrazeにプッシュします。
Content Blocksを同期する
ステップ1:エントリをBrazeのコンテンツブロックに同期する
- サイドバーにBrazeアプリがある公開済みエントリを開きます。
- サイドバーで、Create Content Block を選択します。
- 使用するロケールを選択します。選択したロケールごとに1つのコンテンツブロックが作成されます。
- コンテンツブロックに含めるフィールドを選択します。
- Send to Braze を選択します。コンテンツブロックがBrazeワークスペースに作成され、Content > Content Block で利用できるようになります。
ステップ2:同期されたコンテンツを最新の状態に保つ
コンテンツの変更頻度に合った方法を選択してください。
- コンテンツブロックの同期は、送信時点で安定しており、多くのメッセージで再利用されるコンテンツに適しています。外部呼び出しなしでレンダリングされます。
- コネクテッドコンテンツは、キャンペーンが作成されてから配信されるまでの間にコンテンツが変わる可能性がある場合に適しています。配信時にコンテンツが取得されるためです。
ContentfulのBrazeアプリの仕組みについて詳しくは、ContentfulのBrazeアプリドキュメントを参照してください。
Connected Contentの使用
ステップ1:Brazeメッセージに Connected Content コールを追加する
- Contentfulで公開済みのエントリを開き、サイドバーで Generate Braze Connected Content を選択します。
- 含めるフィールドを選択し、Next を選択します。
- エントリに複数のロケールがある場合は、含めるロケールを選択し、Next を選択します。
- 生成された Connected Content コールをコピーします。
- Brazeでキャンペーンまたはキャンバスメッセージを作成するか、既存のものを開きます。
- メッセージ本文の先頭に Connected Content コールを貼り付けます。
- コンテンツを表示したい位置にLiquidタグを貼り付けます。
ステップ2:Liquidでフィールドを参照する
JSONドット表記を使用すると、Contentfulからのレスポンスボディのどの部分をメッセージに含めるかを指定できます。これはユースケースによって異なります。アプリは各フィールドに対して正しいLiquidタグを生成します。タグは、エントリがローカライズされている場合はロケールごとに、ローカライズされていない場合はコンテンツタイプごとにネームスペースが設定されます。
| シナリオ | Liquidタグの例 |
|---|---|
| ローカライズされたエントリ (en-US) | {{response.data.enUS.body}} |
| ローカライズされたエントリ (es-AR) | {{response.data.esAR.body}} |
| ローカライズされていないエントリ | {{response.data.blogPost.body}} |
| ショートテキストリスト(結合) | {{response.data.recipe.ingredients | join: ', '}} |
| ショートテキストリスト(単一アイテム) | {{response.data.recipe.ingredients[0]}} |
| ロケーションフィールド | {{response.data.venue.address.lat}} と {{response.data.venue.address.lon}} |
| 単一メディアファイル | {{response.data.blogPost.image.url}} |
| アセットコレクション(単一アイテム) | {{response.data.blogPost.imagesCollection.items[0].url}} |
| 複数リファレンス(単一アイテム) | {{response.data.event.contactList[0].name}} |
| 複数リファレンス(ループ) | {% for contact in response.data.event.contactList %} {{contact.name}} {% endfor %} |
メディアフィールドでは、url に加えて title、description、contentType、fileName、size、width、height も公開されます。
ステップ3:プレビューして送信する
- Brazeの Preview & Test タブを使用して、Connected Contentコールが正しく解決され、Liquidタグが期待どおりの値をレンダリングすることを確認します。
- 自分自身またはテストユーザーにテストメッセージを送信します。
- コンテンツが正しくレンダリングされたら、キャンペーンまたはキャンバスを開始します。
考慮事項
- エントリは公開されている必要があります。BrazeはContent Delivery APIを通じてコンテンツを取得しますが、このAPIは公開済みのエントリのみを返します。下書きや変更が未公開のエントリはレンダリングされません。
- Connected Contentは送信時にリクエストを追加します。コンテンツは各メッセージの配信時に取得されます。リクエストが失敗した場合のキャッシュ、タイムアウト、メッセージの中止については、Connected Contentのガイダンスに従ってください。また、ContentfulプランのAPIレート制限が送信ボリュームに対応できることを確認してください。Contentfulのレート制限については、Contentful technical limitsを参照してください。
- コンテンツブロックはワークスペース固有です。Contentfulから同期されたコンテンツブロックは、設定したREST APIキーに紐づくBrazeワークスペースに作成されます。同じコンテンツを別のワークスペースで使用するには、そのワークスペースでもアプリを設定してください。
- ロケールごとに個別の出力が生成されます。複数のロケールを選択すると、ロケールごとに個別のLiquidタグ(Connected Content)または個別のコンテンツブロック(同期)が生成されます。
トラブルシューティング
| 問題 | 解決方法 |
|---|---|
| インストール中に「A valid Contentful API key is required」と表示される | キーが読み取りアクセス権を持つ Content Delivery API(CDA)キーであること、およびインストール先のスペースに属していることを確認してください。 |
| Brazeのプレビューで Liquidタグが空白で表示される | エントリが公開されていること、フィールドにコンテンツがあること、タグ内のロケールがエントリに設定されたロケールと一致していることを確認してください。 |
| BrazeでConnected Contentの呼び出しがエラーを返す | 生成された呼び出し内のスペースID、環境、アクセストークンを確認し、エンドポイントを直接テストしてください。BrazeはConnected Contentのエラーをメッセージアクティビティログに記録します。 |
| コンテンツブロックがBrazeに表示されない | Braze REST APIキーに必要なコンテンツブロックの権限があること、およびRESTエンドポイントがお使いのBrazeインスタンスと一致していることを確認してください。 |
| 参照リストのフィールドが空の値を返す | リストに複数のコンテンツタイプが含まれていないか確認し、インデックスでアクセスするのではなくリストをループ処理してください。 |