Terprogram

Panduan ini adalah ringkasan tingkat tinggi tentang cara menggunakan fitur Direct Terprogram melalui API. Bagian ini menjelaskan cara membuat Proposal dan cara melakukan negosiasi.

Primer

Proposal terprogram mirip dengan pesanan di Google Ad Manager. Proposal terprogram berisi informasi umum tentang transaksi yang diusulkan antara Anda dan pembeli. Proposal, beserta item barisnya, mewakili penawaran inventaris kepada pembeli.

Untuk mengetahui informasi selengkapnya, lihat Pusat Bantuan.

Membuat proposal melalui API

Untuk membuat objek Proposal, hanya nama dan pembeli terprogram yang diperlukan. ID pembeli terprogram dapat diperoleh melalui UI atau tabel PQL Programmatic_Buyer.

Java

Proposal proposal = new Proposal();

// Setting required Marketplace information.
ProposalMarketplaceInfo proposalMarketplaceInfo = new ProposalMarketplaceInfo();
proposalMarketplaceInfo.setBuyerAccountId(programmaticBuyerId);

// Set common required fields for a proposal.
proposal.setName("Proposal #" + new Random().nextInt(Integer.MAX_VALUE));
proposal.setPrimaryTraffickerId(primaryTraffickerId);
proposal.setMarketplaceInfo(proposalMarketplaceInfo);
    

Python

proposal = {
    # Setting required Marketplace information.
    'isProgrammatic': 'true',
    'marketplaceInfo': {
        'buyerAccountId': programmatic_buyer_id,
    },
    # Set common required fields for proposals.
    'name': 'Proposal #%s' % uuid.uuid4(),
    # ...
}
    

PHP

$proposal = new Proposal();
$proposal->setName('Proposal #' . uniqid());

// Set the required Marketplace information.
$proposalMarketplaceInfo = new ProposalMarketplaceInfo();
$proposalMarketplaceInfo->setBuyerAccountId($buyerId);
$proposal->setMarketplaceInfo($proposalMarketplaceInfo);
    

C#

// Create a proposal with the minimum required fields.
Proposal proposal = new Proposal()
{
    name = "Programmatic proposal #" + new Random().Next(int.MaxValue),
    // Set required Marketplace information
    marketplaceInfo = new ProposalMarketplaceInfo()
    {
        buyerAccountId = programmaticBuyerId
    }
};
    

Ruby

# Create proposal configuration object.
proposal = {
  :marketplace_info => {
    :buyer_account_id => buyer_id
  },
  :name => 'Proposal %s' % SecureRandom.uuid(),
  # ...
}
    

Sebelum mengirim ke pembeli untuk negosiasi, kolom tambahan harus ditetapkan. Proposal harus memiliki pengiklan, staf penjualan, pemroses iklan, dan kontak penjual.

Java

SalespersonSplit primarySalesperson = new SalespersonSplit();
primarySalesperson.setUserId(primarySalespersonId);
proposal.setPrimarySalesperson(primarySalesperson);
    

Python

'primarySalesperson': {
    'userId': primary_salesperson_id,
},
'primaryTraffickerId': primary_trafficker_id,
'probabilityOfClose': '100000',
    

PHP

// Create salesperson splits for the primary salesperson.
$primarySalesperson = new SalespersonSplit();
$primarySalesperson->setUserId($primarySalespersonId);
$proposal->setPrimarySalesperson($primarySalesperson);

// Set the primary trafficker on the proposal for when it becomes an
// order.
$proposal->setPrimaryTraffickerId($primaryTraffickerId);

$advertiser = new ProposalCompanyAssociation();
$advertiser->setType(
    ProposalCompanyAssociationType::ADVERTISER
);
$advertiser->setCompanyId($advertiserId);
$proposal->setAdvertiser($advertiser);
    

C#

// Set fields that are required before sending the proposal to the buyer.
proposal.primaryTraffickerId = primaryTraffickerId;
proposal.sellerContactIds = new long[] { primarySalespersonId };
proposal.primarySalesperson = new SalespersonSplit()
{
    userId = primarySalespersonId,
};
proposal.advertiser = new ProposalCompanyAssociation()
{
    type = ProposalCompanyAssociationType.ADVERTISER,
    companyId = advertiserId
};
    

Ruby

:primary_salesperson => {
  :user_id => primary_salesperson_id
},
:primary_trafficker_id => primary_trafficker_id
    

Karena proposal umumnya terdiri dari objek ProposalLineItem, langkah berikutnya adalah menambahkan item baris proposal di bawah proposal yang baru dibuat.

Status proposal terprogram

Gambar berikut menggambarkan proposal terprogram di berbagai titik selama proses negosiasi dari sudut pandang API. Setiap status diwakili oleh berbagai kombinasi kolom berikut:

Untuk mengetahui informasi selengkapnya, lihat Pusat Bantuan Ad Manager.

Status proposal terprogram selama interaksinya dengan Marketplace.
Gambar 1: Status proposal terprogram

Panduan negosiasi

Di sini, kami akan memandu Anda menggunakan API untuk menyelesaikan negosiasi terkait proposal terprogram dengan pembeli. Kita akan mereferensikan status dalam diagram di atas.

Mempersiapkan peninjauan atau persetujuan pembeli

Pertama, Anda harus membuat draf proposal terprogram dengan item baris proposal yang ingin Anda kirimkan kepada pembeli. Ini adalah state C dalam gambar di atas.

Meminta peninjauan atau persetujuan pembeli

Setelah Anda siap agar pembeli meninjau proposal terprogram, Anda dapat RequestBuyerReview atau RequestBuyerAcceptance menggunakan metode ProposalService.performProposalAction. Tindakan ini akan membawa Anda ke fase negosiasi.

Negosiasi

Pada fase ini, sejumlah hal dapat terjadi.

  • Pembeli dapat menyetujui proposal terprogram Anda tanpa perubahan.
  • Pembeli dapat mengusulkan perubahan. Dalam hal ini, proposal akan dikembalikan ke status draf (state B pada Gambar 1). Kemudian, Anda harus membuka proposal untuk diedit, melakukan perubahan yang diusulkan, dan mengirimkannya kembali untuk ditinjau oleh pembeli.
  • Anda juga dapat memutuskan untuk melakukan perubahan bahkan sebelum pembeli membalas. Anda dapat melakukannya dengan membuka proposal untuk diedit dari state D pada Gambar 1.

Negosiasi ini berlanjut hingga Anda mencapai kesepakatan dengan pembeli. Komentar antara Anda dan pembeli dapat diambil menggunakan getMarketplaceCommentsByStatement. Anda dapat mengirim komentar kepada pembeli saat dalam state A. Untuk melakukannya, Anda harus memperbarui kolom marketplaceComment pada proposal menggunakan updateProposals. Komentar tersebut kemudian akan dikirim saat Anda meminta persetujuan pembeli.

Diselesaikan

Setelah Anda dan pembeli menyetujui proposal terprogram, proposal tersebut akan memasuki status selesai (state F dalam Gambar 1). Kemudian, Ad Manager akan otomatis membuat item baris dari proposal terprogram ini.

Biasanya, Anda telah selesai membuat proposal terprogram; namun, ada dua tindakan yang dapat Anda lakukan dari status ini:

  • Anda dapat membuka kembali proposal terprogram untuk negosiasi ulang dengan mengedit kolom terkait penayangan di proposal. Anda dapat melakukannya dengan membuka proposal untuk diedit (state E to A pada Gambar 1), melakukan perubahan, lalu meminta persetujuan pembeli.
  • Anda dapat melakukan pengeditan yang tidak terkait penayangan, seperti memperbarui nama proposal, dan mencerminkan perubahan ini dalam pesanan dan item baris Ad Manager yang dibuat dari kesepakatan ini. Anda melakukannya dengan mengedit dari state E pada Gambar 1, lalu melakukan tindakan UpdateOrderWithSellerData.