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のSettings > API keysから作成します。 |
| 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 Content Blockに同期する
- サイドバーにBrazeアプリが表示されている公開済みのエントリを開きます。
- サイドバーでCreate Content Blockを選択します。
- 使用するロケールを選択します。選択したロケールごとに1つのContent Blockが作成されます。
- Content Blockに含めるフィールドを選択します。
- Send to Brazeを選択します。Content BlockがBrazeワークスペースに作成され、Content > Content Blockから利用できるようになります。
ステップ2:同期されたコンテンツを最新の状態に保つ
コンテンツの変更頻度に合った方法を選択してください。
- Content Blockの同期は、送信時に安定しており多くのメッセージで再利用されるコンテンツに適しています。外部呼び出しなしでレンダリングされます。
- Connected Contentは、キャンペーンが作成されてから配信されるまでの間にコンテンツが変更される可能性がある場合に適しています。コンテンツは配信時に取得されます。
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の技術的制限を参照してください。
- コンテンツブロックはワークスペース固有です。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インスタンスと一致していることを確認してください。 |
| リファレンスリスト内のフィールドが空の値を返す | リストに複数のコンテンツタイプが含まれているかどうかを確認し、インデックスでアクセスするのではなくリストをループ処理してください。 |