Делайте ставки от имени нескольких аккаунтов

Участник торгов может приобрести инвентарь для нескольких покупателей за один ответ на ставку. Например, платформа спроса (DSP) может использовать свое приложение для назначения ставок для покупки инвентаря для нескольких маркетологов или агентств, которые являются покупателями. В этом руководстве объясняется, как запрограммировать систему назначения ставок для обработки одного запроса, отправленного от имени нескольких покупателей.

Фон

В некоторых сценариях рекламная сеть или торговое агентство агентства могут выбрать работу с одним или несколькими DSP. Для покупателей, работающих через DSP, доступны два варианта:

  • DSP закупает инвентарь для маркетологов или агентств, которые не являются покупателями . В этом случае DSP получает один запрос ставки и отвечает одной ставкой. Google выставляет счета DSP напрямую.
  • DSP закупает инвентарь для маркетологов или агентств, которые являются покупателями . DSP получает один запрос ставки, включающий несколько платежных идентификаторов, связанных с подходящими покупателями, и может размещать отдельные ставки для каждого покупателя, от имени которого он намерен делать ставки. В этой модели Google выставляет счет покупателю, а не DSP. Остальная часть данного руководства посвящена этому сценарию.

Настройка и предварительный таргетинг

Google отправит запрос ставки, содержащий один или несколько платежных идентификаторов, связанных с покупателями, и конфигурации предварительного таргетинга, нацеленные на показ. Их можно найти с помощью поля BidRequest.imp.ext.billing_id .

При ответе на BidRequest , который содержит платежные идентификаторы от нескольких покупателей, требуется BidResponse.seatbid.bid.ext.billing_id , чтобы Google знал, какой аккаунт связать со ставкой. Любой ответ, который не устанавливает это поле, фильтруется. Поле остается необязательным для любого BidRequest , который включает только один платежный идентификатор.

Пример предварительного таргетинга

Участник торгов делает ставки от имени двух покупателей, один из которых имеет платежный идентификатор 123, а другой – 124. Участник настраивает одну конфигурацию предварительного таргетинга с платежным идентификатором 213 для таргетинга на английский язык, а другую с платежным идентификатором 231 для таргетинга на персональный язык. компьютеры. Ниже описаны платежные идентификаторы, которые появляются в запросах ставок для различных типов показов.

Описание показа Платежные идентификаторы в запросе ставки
Контент на японском языке на персональном компьютере. 123, 124, 231
Англоязычный контент на мобильном телефоне. 123, 124, 213
Англоязычный контент на персональном компьютере. 123, 124, 213, 231

Пример запросов ставок

Ниже приведены примеры BidRequest . Вы заметите, что в этих запросах присутствует несколько идентификаторов выставления счетов, поскольку запросы применимы к нескольким учетным записям.

OpenRTB Протобуф

id: "n9YFp0D9qE02Q5A49bo68a"
imp {
  id: "1"
  banner {
    w: 320
    h: 50
    pos: ABOVE_THE_FOLD
    api: MRAID_1
    api: MRAID_2
    format {
      w: 320
      h: 50
    }
  }
  displaymanager: "GoogleMobileAds-iOS"
  displaymanagerver: "11.2.0"
  tagid: "2913643481"
  bidfloor: 0.04
  bidfloorcur: "USD"
  secure: true
  exp: 3600
  clickbrowser: true
  metric {
    type: "click_through_rate"
    value: 0.0003642654628492892
    vendor: "EXCHANGE"
  }
  metric {
    type: "viewability"
    value: 0.98
    vendor: "EXCHANGE"
  }
  [com.google.doubleclick.imp] {
    billing_id: 41048190734
    billing_id: 87998475627
    publisher_settings_list_id: 5889715199959683550
    publisher_settings_list_id: 3379823455061055318
    allowed_vendor_type: 566
    allowed_vendor_type: 113
    ampad: AMP_AD_NOT_ALLOWED
    skadn {
      sourceapp: "com.google.testapp"
      skadnetids: "6ZVs3vs4"
      versions: "2.0"
      versions: "2.1"
      fidelities: VIEW_THROUGH_ADS
      fidelities: STOREKIT_RENDERED_ADS
    }
    creative_enforcement_settings {
      policy_enforcement: POLICY_ENFORCEMENT_NETWORK_AND_PLATFORM_POLICY
      publisher_blocks_enforcement: PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES
    }
    auction_environment: SERVER_SIDE_AUCTION
    ae: SERVER_SIDE_AUCTION
  }
}
app {
  name: "Test App"
  bundle: "com.google.testapp"
  publisher {
    id: "pub-6227762759521589"
    [com.google.doubleclick.publisher] {
      country: "US"
    }
  }
  content {
    url: "https://www.google.com"
    livestream: false
    language: "en"
  }
  storeurl: "https://www.google.com"
  [com.google.doubleclick.app] {
    inventorypartnerdomain: "OMITTED"
  }
}
device {
  ua: "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
  ip: "192.168.1.0"
  geo {
    lat: 0.0
    lon: 0.0
    country: "USA"
    region: "TX"
    metro: "623"
    city: "Lewisville"
    type: IP
    utcoffset: -300
    accuracy: 6225
  }
  make: "Apple"
  model: "iPhone13,2"
  os: "iOS"
  osv: "17.4.1"
  connectiontype: WIFI
  devicetype: HIGHEND_PHONE
  lmt: true
  hwv: "iPhone13,2"
  w: 390
  h: 844
  pxratio: 3.0
  sua {
    browsers {
      brand: "Mozilla"
      version: "5"
      version: "0"
    }
    browsers {
      brand: "AppleWebKit"
      version: "605"
      version: "1"
    }
    platform {
      brand: "iPhone"
      version: "17"
      version: "4"
    }
    mobile: true
    bitness: "64"
    model: "iPhone"
    source: USER_AGENT_STRING
  }
  [com.google.doubleclick.device] {
    atts: 2
  }
}
at: FIRST_PRICE
tmax: 1000
cur: "USD"
bcat: "IAB18-5"
bcat: "IAB23-4"
bapp: "359917414"
bapp: "1446254576"
source {
  schain {
    complete: true
    nodes {
      asi: "testssp.com"
      sid: "pub-1111111111111111"
      hp: true
    }
    ver: "1.0"
  }
  [com.google.doubleclick.source] {
    omidpn: "Google"
    omidpv: "afma-sdk-i-v11.2.0"
    schain {
      complete: 1
      nodes {
        asi: "testssp.com"
        sid: "pub-1111111111111111"
        hp: 1
      }
      ver: "1.0"
    }
  }
}
[com.google.doubleclick.bid_request] {
  google_query_id: "ANy-z17251-40u3eXfXPL5j3MDPa7n6Ree92uf7354o71FP67Rk5i3G30Ez7p39Ze1722D8H"
  fcap_scope: FREQUENCY_CAPPING_SCOPE_APP
  privacy_treatments {
    allow_user_data_collection: true
  }
}

OpenRTB JSON

{
  "id": "pu96xf0D7otnT4Q317588G",
  "imp": [
    {
      "id": "1",
      "banner": {
        "w": 320,
        "h": 50,
        "pos": 1,
        "expdir": [
          1,
          2,
          3,
          4
        ],
        "api": [
          3,
          5
        ],
        "format": [
          {
            "w": 320,
            "h": 50
          },
          {
            "w": 320,
            "h": 100
          }
        ]
      },
      "displaymanager": "GoogleMobileAds-iOS",
      "displaymanagerver": "10.5.0",
      "tagid": "1077633402",
      "bidfloor": 0.01,
      "bidfloorcur": "USD",
      "secure": 1,
      "exp": 3600,
      "clickbrowser": 1,
      "metric": [
        {
          "type": "viewability",
          "value": 0.74,
          "vendor": "EXCHANGE"
        },
        {
          "type": "session_depth",
          "value": 1,
          "vendor": "EXCHANGE"
        }
      ],
      "ext": {
        "billing_id": [
          "77621228638",
          "75301362736"
        ],
        "dfp_ad_unit_code": "/9041646/google/test",
        "ampad": 2,
        "buyer_generated_request_data": [
          {
            "source_app": {
              "id": "com.google.ads.mediation.test.TestAdapter"
            },
            "data": "Test Data"
          }
        ],
        "excluded_creatives": [
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          },
          {
            "buyer_creative_id": "EXCLUDED_BUYER_CREATIVE_ID"
          }
        ],
        "creative_enforcement_settings": {
          "policy_enforcement": 1,
          "publisher_blocks_enforcement": 2
        },
        "billable_event_rate_adjustment": 1,
        "auction_environment": 0,
        "ad_unit_mapping": [
          {
            "keyvals": [
              {
                "key": "OMITTED",
                "value": "OMITTED"
              },
              {
                "key": "OMITTED",
                "value": "OMITTED"
              }
            ],
            "format": 1
          }
        ],
        "ae": 0
      }
    }
  ],
  "app": {
    "name": "Test App",
    "bundle": "com.google.testapp",
    "publisher": {
      "id": "pub-3858090347872942",
      "ext": {
        "country": "JP"
      }
    },
    "content": {
      "url": "https://www.google.com",
      "livestream": 0,
      "language": "ja"
    },
    "storeurl": "https://www.google.com",
    "ext": {
      "installed_sdk": [
        {
          "id": "com.google.ads.mediation.test.TestAdapter",
          "sdk_version": {
            "major": 5,
            "minor": 2,
            "micro": 6
          },
          "adapter_version": {
            "major": 5,
            "minor": 2,
            "micro": 600
          }
        }
      ],
      "inventorypartnerdomain": "OMITTED"
    }
  },
  "device": {
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
    "ip": "192.168.1.0",
    "geo": {
      "lat": 0.0,
      "lon": 0.0,
      "country": "JPN",
      "region": "JP-11",
      "city": "Wako",
      "type": 2,
      "utcoffset": 540,
      "accuracy": 1656
    },
    "make": "Apple",
    "model": "iPhone13,2",
    "os": "iOS",
    "osv": "17.4.1",
    "connectiontype": 2,
    "devicetype": 4,
    "ifa": "644t6oo9K5630T4P55UhH3U6QwBvyR8434j1",
    "lmt": 0,
    "hwv": "iPhone13,2",
    "w": 390,
    "h": 844,
    "pxratio": 3,
    "sua": {
      "browsers": [
        {
          "brand": "Mozilla",
          "version": [
            "5",
            "0"
          ]
        },
        {
          "brand": "AppleWebKit",
          "version": [
            "605",
            "1"
          ]
        }
      ],
      "platform": {
        "brand": "iPhone",
        "version": [
          "17",
          "4"
        ]
      },
      "mobile": 1,
      "bitness": "64",
      "model": "iPhone",
      "source": 3
    },
    "ext": {
      "atts": 3
    }
  },
  "user": {
    "id": "wr62bT596f06jhZ1V77n3I1b63h",
    "data": [
      {
        "id": "pub-9226299926337762",
        "name": "Publisher Passed",
        "segment": [
          {
            "name": "TEST_NAME",
            "value": "TEST_VALUE"
          },
          {
            "name": "TEST_NAME",
            "value": "TEST_VALUE"
          }
        ]
      }
    ],
  },
  "at": 1,
  "tmax": 1000,
  "cur": [
    "USD"
  ],
  "source": {
    "schain": {
      "complete": 1,
      "nodes": [
        {
          "asi": "testssp.com",
          "sid": "pub-1111111111111111",
          "hp": 1
        }
      ],
      "ver": "1.0"
    },
    "ext": {
      "omidpn": "Google",
      "omidpv": "afma-sdk-i-v10.5.0",
      "schain": {
        "complete": 1,
        "nodes": [
          {
            "asi": "testssp.com",
            "sid": "pub-1111111111111111",
            "hp": 1
          }
        ],
        "ver": "1.0"
      }
    }
  },
  "ext": {
    "google_query_id": "ANy-z3D398-yn1l2uC2D50Bl9f19AQ3nSQAI82307LmCWc646P925n10EqSpUdQ1wt1IxQj7",
    "fcap_scope": 1
  }
}

Google

id: "\330\334\201\343\345\\jN\3313`V^\214\207\003\345\022GP\023\323\251"
user_agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
url: "https://www.google.com"
detected_language: "it"
adslot {
  id: 1
  width: 414
  width: 320
  height: 50
  height: 50
  excluded_attribute: 15
  excluded_attribute: 22
  allowed_vendor_type: 489
  allowed_vendor_type: 550
  excluded_sensitive_category: 36
  excluded_sensitive_category: 4
  matching_ad_data {
    billing_id: 97713609660
    billing_id: 60373602214
    minimum_cpm_micros: 40000
  }
  matching_ad_data {
    billing_id: 84882034591
    billing_id: 74365219129
    minimum_cpm_micros: 520000
  }
  slot_visibility: ABOVE_THE_FOLD
  ad_block_key: 4252652432
  publisher_settings_list_id: 8511095895255592384
  excluded_creatives {
    buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
  }
  excluded_creatives {
    buyer_creative_id: "EXCLUDED_BUYER_CREATIVE_ID"
  }
  viewability: 89
  click_through_rate: 0.0027791813
  allowed_ad_types: ALLOWED_AD_TYPE_BANNER
  is_amp_page: DIALECT_HTML
  amp_ad_requirement_type: AMP_AD_NOT_ALLOWED
  consented_providers_settings {
    consented_providers: 196
    consented_providers: 153
    additional_consent_string: "OMITTED"
  }
  regs_gdpr: true
  api: OMID_1
  api: MRAID_1
  omidpn: "Google"
  omidpv: "afma-sdk-i-v9.0.0"
  creative_enforcement_settings {
    policy_enforcement: POLICY_ENFORCEMENT_NETWORK_AND_PLATFORM_POLICY
    publisher_blocks_enforcement: PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES
  }
  auction_environment: SERVER_SIDE_AUCTION
  impression_expiration_seconds: 3600
  supported_auction_environment: SERVER_SIDE_AUCTION
  display_manager: "GoogleMobileAds-iOS"
  display_manager_version: "9.0.0"
}
is_test: false
timezone_offset: 120
mobile {
  app_id: "116395214"
  is_app: true
  app_name: "Test App"
}
postal_code: "10011"
geo_criteria_id: 20524
publisher_settings_list_id: 9033154688577085139
publisher_type: PUBLISHER_OWNED_AND_OPERATED
partner_id: 8689962800479104672
device {
  device_type: HIGHEND_PHONE
  platform: "iphone"
  brand: "Apple"
  model: "iPhone9,4"
  os_version {
    major: 15
    minor: 8
    micro: 2
  }
  carrier_id: 0
  screen_width: 414
  screen_height: 736
  screen_pixel_ratio_millis: 3000
  screen_orientation: PORTRAIT
  hardware_version: "iPhone9,4"
  limit_ad_tracking: true
  app_tracking_authorization_status: DENIED
  connection_type: WIFI
}
publisher_country: "IT"
publisher_id: "pub-1111111111111111"
response_deadline_ms: 1000
google_query_id: "ANy-z17d1Q-rs050w92ve6V2Lm2820pMZ0517u12jT7m02AURu7dw0XbsQ0pK5EAd173Cm1Q"
auction_type: FIRST_PRICE
geo {
  lat: 42.85
  lon: 13.7
  country: "ITA"
  region: "IT-AP"
  zip: "63082"
  utcoffset: 120
  accuracy: 19730
}
user_agent_data {
  platform {
    brand: "iPhone"
    version: "15"
    version: "0"
  }
  mobile: true
  model: "iPhone"
  browsers {
    brand: "Mozilla"
    version: "5"
    version: "0"
  }
  browsers {
    brand: "AppleWebKit"
    version: "605"
    version: "1"
  }
  bitness: "64"
  source: USER_AGENT_STRING
}
supply_chain {
  complete: true
  nodes {
    advertising_system_identifier: "testdomain.com"
    seller_identifier: "pub-1111111111111111"
    handles_payment: true
  }
  version: "1.0"
}
frequency_capping_scope: FREQUENCY_CAPPING_SCOPE_NONE
privacy_treatments {
  ip: IP_REDACTED
  user_agent: USER_AGENT_COARSENED
  non_personalized_ads_reason: PUBLISHER_DECLARED_NPA
  allow_user_data_collection: false
  device_storage_restriction_reason: INSUFFICIENT_USER_CONSENT
}
inventory_partner_domain: "OMITTED"