現在、モバイルアプリ入札は、一部のパブリッシャーのみが利用できます。

サーバー間入札

自社メディエーションは一般提供されていません

Audience Networkによる自社入札は、現時点で非公開ベータ版であり、一般公開されません。この状況が変化した時点で、アップデートが提供される予定です。

それまでの間、Facebookとパートナー関係にあるいずれかのメディエーションプラットフォームを通してAudience Network入札をご利用になれます。

このページの内容:

Facebook Audience Networkは、モバイルウェブサイトだけでなくモバイルアプリでの入札もサポートしています。モバイルアプリ入札の統合は、モバイルクライアントからFacebookのサーバーへ配信することも、あなたのサーバーからFacebookのサーバーへ配信することもできます。この概要では、アプリ入札の一般的な概念について説明します。

はじめに

アプリ入札とは

アプリ入札とは、パブリッシャーが、それぞれの広告掲載機会を複数のデマンドソースにリアルタイムで提供することによって、自社の広告インベントリーに関して公平でオープンなオークションを構築する方法です。すべてのデマンドソースに、すべてのインプレッションで競い、最も高い値を付けて落札するチャンスがあります。

アプリ入札を使用する理由

  • リアルタイムのオークションは、広告リクエストごとに最適化できる機会となります。
  • 広告インベントリーの真の価値を知ることができます。
  • メンテナンスが簡単で、広告運用リソースを削減できます。

統合アーキテクチャ

アプリ入札は、各インプレッション機会で入札を提供するために、Open Real-Time Bidding (ORTB)プロトコルを実装したエンドポイントを介して提供されます。アプリ入札では、以下の処理のためにAudience Network SDKが必要となります。

  • buyeruid (Audience Network SDKでは bidderToken )を取得する。これは、入札リクエストの必須項目であり、ユーザーごと、アプリごとに固有のもので、他のユーザーやアプリでは無効になります。
  • 入札応答を読み込み、入札者がオークションで落札した時に広告を表示する。
  • インプレッション数とクリック数を記録する。

入札フローにおける主なステップ

  1. 入札者トークンを取得する。Audience Networkで入札リクエストに応答できるようにするために必要な、不透明型の文字列です。
  2. 入札リクエストを送信し、入札応答を取得する。これが、入札エンドポイントとの主なやり取りです。このステップで、ORTB入札のリクエストを送信し、有効な入札応答、またはエラーを受信します。
  3. オークションを実行する。オークションを行い、入札応答の中から落札者を選びます。ほとんどのオークションでは、リアルタイム入札と他のデマンドソースからの推定CPM(過去の平均CPMなど)を比較しています。これは、リアルタイム入札に対応していないデマンドソースがあるためです。オークションは、以下のいずれかによって実行されます。
    • 独自のオークションロジックを実行する自社サーバー
    • サードパーティのオークションサーバー
    • ユーザーのデバイス上のクライアント
  4. 入札応答を含む広告を取得する。Audience Networkがオークションを落札すると、入札応答の adm フィールドをユーザーのデバイス上のAudience Network SDKに渡して広告を読み込みます。 adm フィールドには実際の広告が含まれていないことに注意してください。それに含まれるのは、SDKがAudience Networkサーバーから広告を取得するための情報です。

統合のタイプ

オークションを実行すると(上記の入札フローの3番目のステップ)、クライアント側または サーバー側にホストされます。以下に3つの統合タイプを示します。

サーバー間の統合アーキテクチャ

サーバー間統合では、オークションサーバーはFacebook Audience Network入札エンドポイントとその他すべてのデマンドソースを呼び出して入札応答を取得します。次に、オークションサーバーはオークションを実行して落札者を選定します。このオークションサーバーとして、パブリッシャーが構築したオークションロジックを実行する自社サーバーか、Audience Networkのアプリ入札と統合されたサードパーティのサーバーを使用できます。こうして、サーバーのリソースと使用可能なネットワークを利用し、デマンドソースの入札エンドポイントを呼び出すことができるようになります。また、クライアントを更新せずに、これらのエンドポイント統合に変更を加えることもできます。


外部広告サーバーの統合

外部のアドサーバーと連携することで、今日のウォーターフォールメディエーションの世界とアプリ入札の橋渡しをすることができます。これは、アプリ入札をサポートするデマンドソースとサーバー間の統合を行い、オークションの落札者をウォーターフォールのメディエーションプラットフォームに渡して、ウォーターフォールを実行し、総合的に落札したデマンドソースを選択するという仕組みです。この統合は、ウォーターフォール型のメディエーションとアプリ入札の世界をつなぐ、暫定的な 橋渡しという意味を持っています。このタイプの統合を行う場合、独自のオークションロジックを作成する必要はありません。

ORTBリクエスト/応答およびサポートされている広告フォーマット

ORTBリクエスト

入札エンドポイントでは、OpenRTBプロトコルv2.5の一部がサポートされています。

注:オークションサーバーのセットアップガイドにあるリクエストの例の全文をご覧ください。

'id' => string, // platform's auction identifier,
'imp' => vec< // slots to bid on
shape(
'id' => string, // platform's identifier for this slot auction
// only for banner impression opportunities
'banner' => shape(
'w' => int, // width
'h' => int, // height
),
// only for native impression opportunities
'native' => shape(
'w' => int, // width 
'h' => int, // height 
),
// only for video impression opportunities
'video' => shape(
'w' => int, // width
'h' => int, // height
'linearity' => int, // 1 = instream, optional
'ext' => shape(
'videotype' => string, // 'rewarded' for Rewarded Video impression opportunities, optional
),
),
'tagid' => string, // Placement ID
'instl' => int, // interstitial flag, 1 = On, 0 = Off, optional
)
>,
// app details (in-app bidding only)
'app' => shape( 
'publisher' => shape(
'id' => string, // publisher app ID
),
),
'device' => shape(
'ua' => string, // device user-agent
'ifa' => string, // ID sanctioned for advertiser use
// Do not send ip or ipv6 if you are requesting bids from the client device.
// For server-side bid requests set ip or ipv6.
'ip' => string, // device IPv4
'ipv6' => string, // device IPv6
'dnt' => int, // "do not track", 1 = On, 0 = Off, optional
'lmt' => int, // "limit ad tracking", 1 = On, 0 = Off
),
'regs' => shape( // regulations object
'coppa' => int, // US FTC regulations for Children's Online Privacy Protection Act, 1 = On, 0 = Off, optional
),
'user' => shape(
'buyeruid' => string, // Audience Network Identity Token, mandatory
),
'ext' => shape(
'platformid' => string, // Mediation partner Platform ID or publisher FB app ID, mandatory
'authentication_id' => string // Authentication token to validate the originator of the request                     
),
'at' => int, // auction type: 1 = First Price, 2 = Second Price
'tmax' => int, // auction timeout in milliseconds
'test' => int, // 0 = normal, 1 = test-mode (we bid $99.99, but don't pay out), optional

サポートされている広告フォーマット

現在、OpenRTBでリクエストできる広告の種類は、バナー、ネイティブ(ネイティブバナー)、ビデオ(動画リワード、インストリーム動画)、インタースティシャルの4種類に対応しています。注: バナー、ネイティブ、ビデオの各オブジェクトは相互に排他的で、いずれかが必要です

入札リクエストでサポートされている広告フォーマットの一覧は次の通りです。

広告フォーマット 入札リクエストのパラメーター

ネイティブ

{'id': ${AUCTION_ID}, 'native': { 'h': -1, 'w': -1 }, 'tagid': ${PLACEMENT_ID}}

ネイティブバナー

{'id': ${AUCTION_ID}, 'native': { 'h': -1, 'w': -1 }, 'tagid': ${PLACEMENT_ID}}

インタースティシャル

{'id': ${AUCTION_ID}, 'banner': { 'h': 0, 'w': 0 }, 'tagid': ${PLACEMENT_ID}, 'instl': 1}

動画リワード

{'id': ${AUCTION_ID}, 'video': { 'h': 0, 'w': 0, 'ext': { 'videotype': 'rewarded' } }, 'tagid': ${PLACEMENT_ID}}

インタースティシャルリワード

{'id': ${AUCTION_ID}, 'video': { 'h': 0, 'w': 0, 'ext': { 'videotype': 'rewarded_interstitial' } }, 'tagid': ${PLACEMENT_ID}}

バナー - 高さ: 50

{'id': ${AUCTION_ID}, 'banner': { 'h': 50, 'w': -1 }, 'tagid': ${PLACEMENT_ID}}

バナー - 高さ: 250*

{'id': ${AUCTION_ID}, 'banner': { 'h': 250, 'w': -1 }, 'tagid': ${PLACEMENT_ID}}

*この広告フォーマットでは、Monetization Managerでバナーまたはミディアムレクタングルの配置を作成できます

ORTB応答

入札応答の有効期間は30分です。入札応答を受け取ってから30分以内であれば任意のタイミングで広告をリクエストできます。入札に基づくインプレッションが30分を超えた場合、支払いは行われません。

注: 入札応答で広告をリクエストすると、広告をクライアントでキャッシュできますが、読み込んで60分以内に表示する必要があります。キャッシュされた広告に基づくインプレッションが60分を超えた場合、支払いは行われません。

1  
'id' => string // platform's request identifier
'seatbid' => vec<
    shape(
        'bid' => vec<
            shape(
                'id' => string, // Our identifier for this bid
                'impid' => string, // platform's identifier for this slot auction
                'price' => float, // Our bid price on CPM basis, in USD
                'adm' => string, // Our creative - see Rendering The Ad
                'nurl' => string, // URL to get if we win the impression
                'lurl' => string, // URL to get if we lose the impression
            )
        >,
    ),
>,
'bidid' => string, // Our identifier for this response
'cur' => string, // bid currency: USD

落札/落札失敗/請求可能/タイムアウトの通知

ORTBで定義された適切な落札失敗コードと共に、落札落札失敗請求可能、およびタイムアウトの通知が必要です。ORTBのnurllurl、およびburlは入札レスポンスで通知されます。前のセクションの入札レスポンス例を参照してください。入札がタイムアウトした場合には、別のレポート手段により通知されます。

落札通知

落札nurlは入札レスポンスで通知されます。次のnurlにクリア価格を入力する必要があります。

"https://www.facebook.com/audiencenetwork/nurl/?partner=${PARTNER_FBID}&app=${APP_FBID}&placement=${PLACEMENT_FBID}&auction=${AUCTION_ID}&impression=${IMPRESSION_ID}&request=${BID_REQUEST_ID}&bid=${BID_ID}&ortb_loss_code=0&clearing_price=${AUCTION_PRICE}"
  • ${AUCTION_PRICE}:これは、入札と同じ単位(たとえば、CPMベースのUSD)で表したオークションのクリア価格で置き換える必要があります。

落札失敗通知

落札失敗のlurlには2個のフラグを入力する必要があります。

"https://www.facebook.com/audiencenetwork/nurl/?partner=${PARTNER_FBID}&app=${APP_FBID}&placement=${PLACEMENT_FBID}&auction=${AUCTION_ID}&impression=${IMPRESSION_ID}&request=${BID_REQUEST_ID}&bid=${BID_ID}&ortb_loss_code=${AUCTION_LOSS}&clearing_price=${AUCTION_PRICE}"
  • ${AUCTION_LOSS}:これは、ORTBの落札失敗コードで置き換えます。
  • ${AUCTION_PRICE}:これは、入札と同じ単位(たとえば、CPMベースのUSD)で表したオークションのクリア価格で置き換える必要があります。

様々な落札失敗コードと、対応する落札失敗理由について以下に示します。

落札失敗理由説明ORTB v2.5の落札失敗コード

入札レスポンスが無効

入札が無効です(ただし時間内、入札なしであり、nurlを取り出し可能)

3

入札がタイムアウト*

入札レスポンスを受信しましたが、オークションのカットオフに間に合いませんでした

2

入札なし

入札なしがHTTP 204(つまり、呼び出すnurlなし)として表示されましたが、レスポンスを入札なしとして解釈可能です(統合の問題と考えられます)。さらに複数のインプレッションに入札をリクエストできます。入札は実行されますが、すべてに対してではありません。

9

最高RTBの入札者ではない

統合的入札(たとえば非RTB交換)などの別の入札者が同じオークションに入った場合に、その入札者に負けました。

102

インベントリーが素材化していなかった

入札によりオークションが落札されたが、インプレッションが素材化していませんでした(たとえば、ページが短くてこのスロットを追加できない、キャッシュされた広告が使用される前にユーザーがアプリを閉じたなど)。これはイベントではなく、一部のパートナーのみが使用できるため、使用できない場合は推論により判断されます。

4902

広告サーバーに送信済み

決定手順での最後のタッチ点により広告サーバーに高い入札が送信されていると、このコードが送信されます。インプレッションは項目なしのためまだない可能性があり、広告サーバーがオークションを却下しているか、インベントリーが素材化していません。

4900

広告サーバーでRTBの落札者が選定されていない

RTBオークションで落札しましたが、広告サーバーがオークションを却下しました(直接など)。

4903

落札

決定ツリーで完全落札し、タグがページに配置された(ウェブの場合)か、広告オブジェクトがキャッシュされました(アプリの場合)。表示可能なインプレッションはまだない可能性があります。

0

請求可能通知

インプレッションコールバックがAudience Network SDKでトリガーされた場合には、請求可能の通知が必要です。次のburlにクリア価格を入力する必要があります。

"https://www.facebook.com/audiencenetwork/burl/?partner=${PARTNER_FBID}&app=${APP_FBID}&placement=${PLACEMENT_FBID}&auction=${AUCTION_ID}&impression=${IMPRESSION_ID}&request=${BID_REQUEST_ID}&bid=${BID_ID}&ortb_loss_code=0&clearing_price=${AUCTION_PRICE}"
  • ${AUCTION_PRICE}:これは、入札と同じ単位(たとえば、CPMベースのUSD)で表したオークションのクリア価格で置き換える必要があります。

タイムアウト通知

入札がタイムアウトした場合には、別のレポート手段により通知されます。これは、一般nurlと呼ばれ、入札の受信を待たずに呼び出すことができます。形式は次の通りです。

"https://www.facebook.com/audiencenetwork/nurl/?partner=${PARTNER_FBID}&app=${APP_FBID}&auction=${AUCTION_ID}&ortb_loss_code=2"

注意:${PARTNER_FBID}${APP_FBID}、および${AUCTION_ID}には適切な値を入力する必要があります。その値について、次の表で説明します。

パラメーター説明

PARTNER_FBID

Int

Facebookにより発行された広告オークションサーバーIDです。専用の広告オークションパートナーがいない場合にはこのアプリIDを使用します。

APP_FBID

Int

オークションを開始したアプリケーション/ビジネスに対してFacebookが発行したIDです。

AUCTION_ID

String

入札リクエストの発行に使用される、クライアントが生成したオークションのIDです。

支払い、オークション、ビューアビリティ、遅延

価格と支払い

価格はCPMに基づいてUSDで付けられます(たとえば「4.25」は、落札された場合に、1,000インプレッションに対して$4.25支払うことを意味します)。nurl および lurlのクリア価格にも同じ単位を使用する必要があります。支払いは、パブリッシャーに対して直接行われます。

オークションのメカニズム

Facebookでは、常にファーストプライスベースで入札を行います。つまり、入札した金額を支払い、支払う総額を想定して入札します。入札額より少なく支払うことが想定されるため、他の入札者が値段を付けることになるセカンドプライスオークションでは不利な立場に置かれることを意味します。

ビューアビリティ

アプリインプレッションでは、最高入札者であるかどうかにかかわらず、インプレッションが表示された場合にのみ支払われます。

遅延

  • 遅延を最小限にするため、APIの呼び出しごとに1つの入札をリクエストします(つまり、5つのスロットをオークションにかける場合、APIを5回呼び出します。それぞれが1つの入札に対応します)。
  • 地域固有のエンドポイントは提供していません。Facebook のインフラストラクチャは、入札リクエストを最寄りのデータセンターにルーティングします。
  • HTTP/2の永続的な接続を使用します。
  • 入札リクエストのORTB tmaxフィールドにオークションタイムアウトを入力し、遅延とパフォーマンスのバランスを取りながら入札戦略を選択します(tmaxの詳細については、上記の入札リクエストの例 を参照してください)。
  • 遅延の目標を達成するために、時間を表示する一部の処理を先送りすることもできます(つまり、入札を速くすると広告表示が遅くなり、入札を遅くすると広告表示が速くなります)。
  • Facebookでは、遅延の解消に積極的に取り組んでいます。現在、サーバー間の入札に対して800ミリ秒のタイムアウトを設定することをお勧めしています。