แบบเป็นโปรแกรม

คู่มือนี้เป็นภาพรวมระดับสูงเกี่ยวกับวิธีใช้ฟีเจอร์การขายตรงแบบเป็นโปรแกรมผ่าน API โดยจะอธิบายวิธีสร้างข้อเสนอและวิธีเจรจาต่อรอง

Primer

ข้อเสนอแบบเป็นโปรแกรมคล้ายกับคำสั่งซื้อใน Google Ad Manager ข้อเสนอแบบเป็นโปรแกรมมีข้อมูลกว้างๆ เกี่ยวกับธุรกรรมที่เสนอระหว่างคุณกับผู้ซื้อ ข้อเสนอและรายการโฆษณาของข้อเสนอแสดงถึงข้อเสนอพื้นที่โฆษณาที่ส่งให้ผู้ซื้อ

ดูข้อมูลเพิ่มเติมได้ที่ศูนย์ช่วยเหลือ

การสร้างข้อเสนอผ่าน API

หากต้องการสร้างออบเจ็กต์ Proposal คุณต้องระบุเฉพาะชื่อและผู้ซื้อแบบเป็นโปรแกรมเท่านั้น คุณดูรหัสผู้ซื้อแบบเป็นโปรแกรมได้ผ่าน UI หรือตาราง 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(),
  # ...
}
    

คุณจะต้องตั้งค่าช่องเพิ่มเติมก่อนส่งให้ผู้ซื้อเพื่อเจรจาต่อรอง ข้อเสนอต้องมีผู้ลงโฆษณา พนักงานขาย ผู้ดูแลการแสดงโฆษณา และรายชื่อติดต่อของผู้ขาย

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
    

เนื่องจากโดยทั่วไปแล้วข้อเสนอจะประกอบด้วยออบเจ็กต์ ProposalLineItem ขั้นตอนถัดไปคือการเพิ่มรายการโฆษณาข้อเสนอไว้ใต้ข้อเสนอที่สร้างขึ้นใหม่

สถานะของข้อเสนอแบบเป็นโปรแกรม

ภาพต่อไปนี้แสดงข้อเสนอแบบเป็นโปรแกรม ณ จุดต่างๆ ในระหว่างกระบวนการเจรจาต่อรองจากมุมมองของ API แต่ละสถานะจะแสดงด้วยชุดค่าผสมต่างๆ ของฟิลด์ต่อไปนี้

ดูข้อมูลเพิ่มเติมได้ที่ศูนย์ช่วยเหลือของ Ad Manager

สถานะที่ข้อเสนอแบบเป็นโปรแกรมสามารถอยู่ได้ในระหว่างการโต้ตอบกับมาร์เก็ตเพลส
รูปที่ 1: สถานะของข้อเสนอแบบเป็นโปรแกรม

คำแนะนำแบบทีละขั้นอย่างละเอียดเกี่ยวกับการเจรจาต่อรอง

ในส่วนนี้ เราจะแนะนำวิธีใช้ API เพื่อเจรจาต่อรองข้อเสนอแบบเป็นโปรแกรมกับผู้ซื้อให้เสร็จสมบูรณ์ เราจะอ้างอิงสถานะในแผนภาพด้านบน

กำลังเตรียมพร้อมสำหรับการตรวจสอบหรือการยอมรับของผู้ซื้อ

ก่อนอื่น คุณต้องร่างข้อเสนอแบบเป็นโปรแกรมที่มีรายการโฆษณาข้อเสนอที่ต้องการส่งให้ผู้ซื้อ ซึ่งก็คือ state C ในรูปด้านบน

กำลังขอให้ผู้ซื้อตรวจสอบหรือยอมรับ

เมื่อพร้อมให้ผู้ซื้อตรวจสอบข้อเสนอแบบเป็นโปรแกรมแล้ว คุณสามารถRequestBuyerReviewหรือRequestBuyerAcceptanceโดยใช้เมธอด ProposalService.performProposalAction ซึ่งจะนำคุณเข้าสู่ขั้นตอนการเจรจาต่อรอง

การเจรจาต่อรอง

ในระยะนี้ อาจมีหลายสิ่งเกิดขึ้น

  • ผู้ซื้ออาจยอมรับข้อเสนอแบบเป็นโปรแกรมของคุณโดยไม่มีการเปลี่ยนแปลง
  • ผู้ซื้ออาจเสนอการเปลี่ยนแปลง ในกรณีนี้ ข้อเสนอจะถูกส่งกลับไปยังสถานะฉบับร่าง (state B ในรูปที่ 1) จากนั้นคุณจะต้องเปิดข้อเสนอเพื่อแก้ไข ทำการเปลี่ยนแปลงที่เสนอ และส่งกลับไปให้ผู้ซื้อตรวจสอบ
  • คุณอาจตัดสินใจทำการเปลี่ยนแปลงก่อนที่ผู้ซื้อจะตอบกลับก็ได้ คุณสามารถทำได้โดยเปิดข้อเสนอเพื่อแก้ไขจาก state D ในรูปที่ 1

การเจรจาต่อรองนี้จะดำเนินต่อไปจนกว่าคุณจะบรรลุข้อตกลงกับผู้ซื้อ คุณสามารถเรียกดูความคิดเห็นระหว่างคุณกับผู้ซื้อได้โดยใช้ getMarketplaceCommentsByStatement คุณส่งความคิดเห็นถึงผู้ซื้อได้ขณะอยู่ในสถานะstate A โดยคุณจะต้องอัปเดตช่อง marketplaceComment ในข้อเสนอโดยใช้ updateProposals จากนั้นระบบจะส่งความคิดเห็นเมื่อคุณขอให้ผู้ซื้อยอมรับ

สรุปผลแล้ว

เมื่อทั้งคุณและผู้ซื้อยอมรับข้อเสนอแบบเป็นโปรแกรมแล้ว ข้อเสนอจะเข้าสู่สถานะสรุปผล (state F ในรูปที่ 1) จากนั้น Ad Manager จะสร้างรายการโฆษณาจากข้อเสนอแบบเป็นโปรแกรมนี้โดยอัตโนมัติ

ในกรณีส่วนใหญ่ คุณจะดำเนินการกับข้อเสนอแบบเป็นโปรแกรมเสร็จแล้ว แต่คุณสามารถดำเนินการ 2 อย่างต่อไปนี้ได้จากสถานะนี้

  • คุณสามารถเปิดข้อเสนอแบบเป็นโปรแกรมอีกครั้งเพื่อเจรจาต่อรองใหม่ได้โดยแก้ไขช่องที่เกี่ยวข้องกับการแสดงโฆษณาในข้อเสนอ ซึ่งทำได้โดยเปิดข้อเสนอเพื่อแก้ไข (state E to A ในรูปที่ 1) ทำการเปลี่ยนแปลง แล้วขอให้ผู้ซื้อยอมรับ
  • คุณสามารถทำการแก้ไขที่ไม่เกี่ยวข้องกับการแสดงโฆษณาได้ เช่น การอัปเดตชื่อข้อเสนอ และแสดงการเปลี่ยนแปลงเหล่านี้ในคำสั่งซื้อและรายการโฆษณาของ Ad Manager ที่สร้างจากดีลนี้ ซึ่งทำได้โดยแก้ไขจาก state E ในรูปที่ 1 แล้วดำเนินการ UpdateOrderWithSellerData