オファーAPI

オファーAPIは、非公開の招待制ベータプログラムです。プログラムに招待された場合は、Metaの担当者と協力してアクセス権を取得してください。


このAPIを使うことで、オファー情報を商品カタログに追加し、FacebookとInstagramでオファーを商品化することができるようになります。FacebookまたはInstagramのチェックアウトを有効にしている販売者の場合、購入者はMetaの提供する各種アプリ内で直接オファーを利用することができるようになります。

オファーを作成する

オファーの作成にはオファーフィードを使います。もしくは、コマースマネージャから手動で作成することも可能です。

フィード

新しいオファーフィードを作成するには、/{product_catalog_id}/product_feedsエッジにPOSTリクエストを送信し、feed_typeOFFERに設定します。このエッジに投稿すると、product_catalog_idフィールドで指定されたカタログ用にオファータイプの商品フィードが作成されます。

オファーフィードが作成されたら、POSTリクエストを使って、/{product_feed_id}/uploadsエッジにオファーデータをアップロードできます。

フィードコラム

以下に示す利用可能なフィールドのほとんどは、フィードファイル内のコラムとして設定することができます。作成時に設定することができないのは、Read-Only (読み取り専用)となっているフィールドのみです。

用語集

商品セット

商品セットは、商品カタログ内の関連アイテムのグループです。

オファーターゲットアイテム

オファーの対象となる商品です。

オファーの適用条件

オファーが適用されるために必要な前提条件のことです。例えば、商品を一定数購入した場合や、商品の小計の数量や金額が特定の値を超える場合にのみ、オファーを有効にすることができます。現在、この条件の対象となる商品はターゲット商品に基づき設定されます。例えば、靴の購入金額を20%オフにするというオファーの場合、カートに入っている靴の数量、またはその小計金額が最低条件を満たしていなければならないということになります。

オファーの適用タイプ

オファーの適用タイプは、ウェブサイトやFacebookでのチェックアウトの際に、オファーをどのように適用するかを指定します。例えば、チェックアウトの際にオファーが自動適用されるようにするのか、クーポンコードを入力しなければ利用できないようにするのかを決めるために使われます。また、他のオファーとの併用に関する動作も、適用タイプで指定することができます。詳しい情報は、オファーを組み合わせるを参照してください.

基本的なフィールド

以下のフィールドは、すべてのオファータイプの設定に使われます。

フィールド説明

id

型: numeric string

読み取り専用。

このアイテム固有の識別情報 (Facebook ID)。

offer_id

型: string

必須。

販売者が提供するオファーの識別情報。


このフィールドはカタログ内のオファーを一意に識別するために使われます。

title

型: string

任意。

オファーアイテムのタイトル。


現在このタイトルは、コマースマネージャ内でオファーを識別するためだけに使われ、購入者には表示されません。

description

型: string

読み取り専用。

自動生成されたオファーの説明。

application_type

型: enum{SALE, AUTOMATIC_AT_CHECKOUT, BUYER_APPLIED}

必須。

オファーを適用する方法とタイミングを決定します。以下のオプションがあります。

  • SALE: アイテムは自動的に値下げされ、購入者に対して取り消し線付きの価格として反映されます。このオファーには購入者に関する前提条件はなく、チェックアウトの際に他のアイテムに影響されることもありません。また、複数のセールが同時適用されることはないため、常にアイテムの最低価格が選択されます。他のオファータイプとの併用は可能ですが、どのような場合でもセールが最初に適用されます。すでにsale_priceフィールドが設定されている商品の場合、最終的な価格はsale_priceを基準価格として計算されます。
  • AUTOMATIC_AT_CHECKOUT: 購入者が必要な利用条件を満たした場合、オファーがチェックアウト時に自動適用されます。このオファーにはいくつかの設定があり、セールとして扱われないようになっています。セール以外のオファーと組み合わせることはできません。また、一度に有効にできる数量は25件までです。
  • BUYER_APPLIED: このオファーは、購入者がクーポンコードを入力するなど、チェックアウト時に特定のアクションが実行された場合に適用されます。現時点では、このオファーを複数組み合わせることはできません。また、チェックアウト時に自動適用されるオファーとの併用も不可とされています。[public_coupon_codeまたは coupon_codes]のどちらかの提供が必要です。

coupon_codes

型: Array<string>

購入者がチェックアウト時にオファーを利用するために使う、大文字小文字を区別しないクーポンコードのリスト。許可されるクーポンコードの上限は100件です。例: ["10OFF", "HOLIDAY_SALE"]


クーポンコードは、application_typeBUYER_APPLIEDの場合にのみ指定することができます。


このフィールドが設定されている場合、public_coupon_codeは無効にする必要があります。

public_coupon_code

型: string

任意。

オファーと一緒に商品化される、大文字小文字を区別しない単一のクーポンコード。購入者がオファーの前提条件を満たしている場合、チェックアウト時に自動入力されます。


デフォルトでは、商品詳細ページなどのFacebookやInstagramのショッピング画面上で、クーポンコード付きのオファーが購入者に表示されることはありません。これは、非公開コードやシークレットコードを意図せず購入者に公開してしまわないようにするためです。この動作は、オファーの商品化に使用する公開クーポンコードを指定することにより変更できます。公開コード付きのオファーは、application_typeAUTOMATIC_AT_CHECKOUTのオファーと同じように表示されますが、コードテキストも追加で表示されます。


公開クーポンコードは20文字以内にする必要があります。また、カタログに一度に含められる有効な公開クーポンコード付きオファーの上限は、最大10件です。


公開クーポンコードを設定できるのは、application_typeBUYER_APPLIEDの場合のみです。


このフィールドが設定されている場合、coupon_codesは無効にする必要があります。

start_date_time

型: timestamp

必須。

オファー開始時のUNIXタイムスタンプ(秒単位)。


この入力は、秒単位のUnixタイムスタンプまたはISO-8601形式の日付文字列(例: 2021-09-25T12:34:56Z)のどちらかをとります。

end_date_time

型: timestamp

任意。デフォルトはnull

オファー終了時のUNIXタイムスタンプ(秒単位)。空欄またはnullにした場合、オファーの終了日は設定されません。


この入力は、秒単位のUnixタイムスタンプまたはISO-8601形式の日付文字列(例: 2021-09-25T12:34:56Z)のどちらかをとります。

min_quantity

型: int64

任意。デフォルトは0。


最低購入数を満たした場合のみにオファーを有効にするには、このフィールドを使用してください。


このフィールドは、オファーを有効にするために購入しなければならない商品の数量を表します。例: 「シャツを5枚購入すると20%割引」。


min_quantitymin_subtotalは、いずれか一方しか設定することができません。

min_subtotal

型: string

任意。デフォルトはnull


最低購入金額を満たした場合のみにオファーを有効にするには、このフィールドを使用してください。


オファーが適用されるには、条件商品の小計金額がこの値に達している必要があります。条件商品が具体的に設定されていない場合、対象商品が条件商品として使用されます。


このフィールドには金額と3桁のISO通貨コードを入力します。金額と通貨の間にはスペースを挿入します。例: 「30.99 USD」という文字列は、30.99ドルという小計の条件が満たされて初めてオファーが適用されることを意味します。


min_quantitymin_subtotalは、いずれか一方しか設定することができません。

redeem_limit_per_user

型: int64

任意。デフォルトは0 (無制限)。

該当オファーの利用回数の上限(ユーザー1人あたり)。


1回限りのクーポンコードの場合はこのフィールドを1にします。


このフィールドは、application_typeBUYER_APPLIEDの場合にのみ設定すべきです。

value_type

型: enum {FIXED_AMOUNT, PERCENTAGE}

必須。

オファーが提供する割引の種類。


以下のオプションがあります。

  • FIXED_AMOUNT: fixed_amount_offの数値に対応する金額を割引します。
  • PERCENTAGE: percent_offの数値に対応するパーセンテージを割引します。

fixed_amount_off

型: string

value_typeFIXED_AMOUNTに設定されている場合は必須。

オファーの割引金額。このフィールドには金額と3桁のISO通貨コードを入力します。金額と通貨の間にはスペースを挿入します。例: 「30.99 USD」という文字列は、割引金額が$30.99となることを表しています。


このフィールドは、value_typeFIXED_AMOUNTの場合にのみ設定すべきです。

percent_off

型: int64

value_typePERCENTAGEに設定されている場合は必須。

オファーの割引率。0から100の整数を入力する必要があります。例: 「30」は割引率が30%となることを表しています。


このフィールドは、value_typePERCENTAGEの場合にのみ設定すべきです。

target_granularity

型: enum {ITEM_LEVEL, ORDER_LEVEL}

必須。

オファーの割引が適用されるレベル。


以下のオプションがあります。

  • ITEM_LEVEL: カート内の対象アイテムのそれぞれに割引が適用されます。
  • ORDER_LEVEL: カート内のすべての対象アイテムに対して割引が適用されます。例: 「靴30ドル割引」というオファーを設定し、カートに靴が3足入っている場合、ITEM_LEVELでは靴1足ごとに30ドル割引が適用(計90ドル分)されるのに対し、ORDER_LEVELは3足の合計金額に対して30ドルの割引を適用します(最大30ドル分)。

オファーのレベルをORDER_LEVELに設定した場合、チェックアウト時の割引額を、1つの注文に含まれるすべてのアイテムに対して均等に振り分けることができなくなる可能性があります。このように割引額が不均等になった結果、発送や返金の手続きがさらに複雑になることもあります。

offer_terms

型: string

任意。

購入者のオファー利用を規定する追加の規約や条件。最大2500文字。


Facebookでは、オファーの詳細を説明する規約が、当該オファーの設定に基づいて自動生成されます。この規約に、オファーに関する独自の規約を追加したい場合は、offer_termsを使ってその規約を説明する文章を付け加えることができます。追加した規約は、Facebookのオファー規約の下に記載されます。


規約の内容は、Metaのコンテンツポリシーに準拠していなければなりません。

対象商品を指定する

オファーが有効となる対象アイテムと、オファー利用の条件として購入すべき条件商品は、どちらも商品セットによって定義されます。オファーAPIでは複数の方法で商品セットを指定することができますが、1つのオファーにおける商品セットタイプは、同一の方法で指定する必要があります。

フィールド説明

target_selection

型: enum{ALL_CATALOG_PRODUCTS, SPECIFIC_PRODUCTS}

必須。

このフィールドは、商品カタログ全体に適用するオファーと、カタログ内の特定のアイテム群にのみ適用するオファーを区別するために使われます。


以下のオプションがあります。

  • ALL_CATALOG_PRODUCTS: カタログ内のすべての商品に適用できるオファー。
  • SPECIFIC_PRODUCTS: target_filtertarget_product_retailer_idstarget_product_group_retailer_idstarget_product_set_retailer_idsのいずれかで指定された対象商品にのみ適用されるオファー。

target_selectionSPECIFIC_PRODUCTSの場合、target_filtertarget_product_retailer_idstarget_product_group_retailer_idstarget_product_set_retailer_idsのうちのいずれか1つが必須。

target_filter

型: JSON-encoded string

任意。


オファーを適用できる商品を識別するためのルールを絞り込みます。商品セットに商品を追加するために使われるフィルタールールのロジックを使用します。


指定されたフィルタールールが既存の商品セットのフィルターと一致した場合、当該オファーはその商品セットを対象とし、そうでない場合は新たな商品セットが作成されます。


このフィールドは、target_selectionSPECIFIC_PRODUCTSの場合にのみ設定すべきです。

target_product_retailer_ids

型: Array<product_retailer_id>

任意。


オファーが適用できる商品に関する商品アイテム小売店IDのリスト。


このフィールドは、target_selectionSPECIFIC_PRODUCTSの場合にのみ設定すべきです。

target_product_group_retailer_ids

型: Array<product_group_retailer_id>

任意。


オファーが適用できる商品に関する商品グループ小売店IDのリスト。


商品グループに含まれるすべての商品バリエーションがオファーの適用対象となります。


このフィールドは、target_selectionSPECIFIC_PRODUCTSの場合にのみ設定すべきです。

target_product_set_retailer_ids

型: Array<product_set_retailer_id>

任意。


オファーが適用できる商品を含む商品セットの小売店IDのリスト。指定された商品セットを評価することで導き出された全商品の和集合に、オファーが適用されます。

prerequisite_filter

型: JSON-encoded string

任意。


オファーの利用条件として購入しなければならない商品を特定するフィルタールール。商品セットに商品を追加するために使われるフィルタールールのロジックを使用します。「Xの購入でYを提供」という形式のオファーによく使われます。


指定されたフィルタールールが既存の商品セットのフィルターと一致した場合、当該オファーはその商品セットを使って条件商品を定義し、そうでない場合は新たな商品セットが作成されます。


このフィールドが定義されている場合、prerequisite_product_retailer_idsprerequisite_product_group_retailer_ids、およびprerequisite_product_set_retailer_idsは必ず nullでなければなりません。

prerequisite_product_retailer_ids

型: Array<product_retailer_id>

任意。


オファーの利用条件として購入しなければならない商品アイテムの小売店ID。このリストに含まれるアイテムはすべて、購入者がオファーを利用するための条件として使うことができます。「Xの購入でYを提供」という形式のオファーによく使われます。


このフィールドが定義されている場合、prerequisite_filterprerequisite_product_group_retailer_idsおよびprerequisite_product_set_retailer_idsnullでなければなりません。

prerequisite_product_group_retailer_ids

型: Array<product_group_retailer_id>

任意。


オファーの利用条件として購入しなければならない商品グループの小売店ID。各グループに含まれる商品バリエーションはすべて、購入者がオファーを利用するための条件として使うことができます。「Xの購入でYを提供」という形式のオファーによく使われます。


このフィールドが定義されている場合、prerequisite_filterprerequisite_product_retailer_idsおよびprerequisite_product_set_retailer_idsnullでなければなりません。

prerequisite_product_set_retailer_ids

型: Array<product_set_retailer_id>

任意。


オファーの利用条件として購入しなければならないアイテムを含む商品セットの小売店ID。これらの商品セットを評価した和集合から導き出されるすべてのアイテムは、購入者がオファーを利用するための条件として使うことができます。「Xの購入でYを提供」という形式のオファーによく使われます。


このフィールドが定義されている場合、prerequisite_filterprerequisite_product_retailer_idsおよびprerequisite_product_group_retailer_idsnullでなければなりません。

exclude_sale_priced_products

型: bool enum {YES, NO}

任意。

カタログにおいてすでに割引価格が設定されている商品にオファーを適用するかどうか(商品アイテムsale_priceフィールドの指定を参照)。


商品に対して二重に割引を適用しないためには、このフィールドをYESに設定します。カタログにおいてさらに低いsale_priceが設定されている商品を含める場合は、このフィールドを設定しないか、NOに設定します。


このフィールドを設定した場合、オファーの対象商品と条件商品の両方に適用されます。

配送オファー

オファーAPIは、購入する商品の価格に対する割引と、その商品の送料に対する割引の両方をサポートしています。商品に対するオファーと同様、配送オファーでも、クーポンコードでの適用にするか自動適用にするか、さらに購入者の前提条件を設けるかどうかを選ぶことができます。

配送オファーを作成するには、target_typeSHIPPINGに設定する必要があります。現在サポートされているのは送料無料のオファーのみです。そのため、value_typeは必ずPERCENTAGEにし、percent_offを100に設定します。

フィールド説明

target_type

型: enum{LINE_ITEM, SHIPPING}

必須。

オファーが適用される対象のタイプ。以下のオプションがあります。

  • LINE_ITEM: オファーが商品アイテム自体に対して適用されます。
  • SHIPPING: オファーが送料に対して適用されます。このオプションを有効にするにはtarget_granularityITEM_LEVELに設定されている必要があります。

target_shipping_option_types

型: Array<shipping_service_tier>

target_typeSHIPPINGの場合、必須。

オファーが適用される配送サービスの種類のリスト(例: STANDARDRUSHEXPEDITED)。


例: 通常配送と速達配送を対象とし、翌日配送は除外する配送オファーを指定したい場合は以下のようにします。

  • target_typeSHIPPINGに設定。
  • target_shipping_option_types["STANDARD", "RUSH"]に設定。

販売者がFacebookまたはInstagramチェックアウトを有効にしている場合、配送プロフィールAPIを使って、自分のコマースアカウントの配送プロフィールを管理することができます。

「Xの購入でYを提供」形式のオファー

「Xの購入でYを提供」形式のオファーは、指定された「商品X」を所定数購入すると、「商品Y」が任意の数だけ無料または割引価格で購入できるようになるというオファーです。割引を受けるには「商品X」を所定の最低金額以上購入することが条件となる「Xの使用でYを提供」形式のオファーもサポートされています。「Xの購入でYを提供」形式のオファーを作成するには、target_quantityフィールドに加えて、min_quantitymin_subtotalのどちらか一方を設定します。

よく見られる「1つの購入で1つ無料で提供」などのように、オファーによってはXとYが同じ商品セットを指すこともあります。ただし、prerequisite_filterprerequisite_product_retailer_idsprerequisite_product_group_retailer_idsprerequisite_product_set_retailer_idsを使って、対象の「商品Y」とは別に「商品X」のセットを指定することもできます。該当するフィールドの設定方法については、対象商品を指定するを参照してください。

フィールド説明

target_quantity

型: int64

任意。デフォルトは0 (無制限)。

オファーの利用1回ごとに割引が適用される商品の数。target_quantityを0より大きい数にすると、「Xの購入でYを提供」形式のオファーになります。


このフィールドを使って、購入者が利用条件を満たした場合に、割引が適用される商品の数を管理することができます。例えば、「2個の購入で3個目が50%オフ」というオファーでは対象個数は1に、「5個の購入で2個無料で提供」というオファーでは対象個数は2になります。

redemption_limit_per_order

型: int64

任意。デフォルトは0 (無制限)。

注文1回あたりのオファー利用回数の上限。


このフィールドを使って、1回の購入で商品に対してオファーを適用できる回数を制限します。例えば、「シャツ1枚の購入で1枚を無料で提供」というオファーの場合、デフォルトではシャツを6枚買うと3枚は通常価格での購入、3枚は無料になります。ただし、この同じ例でredemption_limit_per_orderが2に設定されている場合、2枚が無料、4枚は通常価格での購入となります。


このフィールドが設定されている場合、target_quantityは0よりも大きくする必要があります。

オファーを組み合わせる

FacebookまたはInstagramでのチェックアウトが有効になっている販売者の場合、1回の取引で複数のオファーを組み合わせる機能のサポートは限られています。特定のオファーを別のオファーと組み合わせられるかどうかは、主にそのオファーの適用タイプと対象タイプによって決まります。現在、販売者がこの動作を設定することはできません。以下のルールはオファーのスタッキング動作を要約したものです。

  • ある商品について、セール価格(application_type = SALE)を適用するオファーが複数存在する場合は、最も商品価格が低くなるオファーが適用されます。これは、購入者のカート内のすべてのアイテムに対して繰り返されます。その時点以降、すべての前提条件の計算は、そのアイテムの新たな割引価格を使って行われます。
  • 購入者は1回の注文で、target_type (LINE_ITEMまたはSHIPPING)ごとに、BUYER_APPLIEDのオファーまたはAUTOMATIC_AT_CHECKOUTのオファーのどちらか1つを利用できます。例えば、送料無料クーポンと「1つ購入で1つ無料で提供」のクーポンを同時に使うことはできますが、商品価格が割引になる2つのオファーを併用することはできません。
  • 販売者がコストをかけずに新規顧客やリターン顧客を引き付けられるよう、Metaがオファーを提供することもあります。Metaが提供するオファーはすべて、販売者が提供するオファーと併用することができます。

ユーザーを限定してオファーを提供する

現在、オファーAPIで作成するオファーについては、特定のユーザーグループだけに限定してオファーを商品化することはできません。コマースマネージャで作成されたオファーは、ユーザーの利用資格を設定することができます。オファーAPIで作成された商品化済みオファーはすべての購入者に表示され、FacebookまたはInstagramのチェックアウトでオファーの前提条件(クーポンコードの入力など)を満たした購入者は全員そのオファーを利用することができます。

将来的には、オファーAPIが、複数の国で販売を行う販売者向けにオファーを提供する国を限定する機能や、オファーの利用対象を初回購入者や販売者のFacebookページのフォロワーだけに限定する機能をサポートするようになるかもしれません。