คู่มือนี้เป็นภาพรวมระดับสูงเกี่ยวกับวิธีใช้ฟีเจอร์การขายตรงแบบเป็นโปรแกรมผ่าน 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 แต่ละสถานะจะแสดงด้วยชุดค่าผสมต่างๆ ของฟิลด์ต่อไปนี้
- ProposalMarketplaceInfo.hasLocalVersionEdits
- ProposalMarketplaceInfo.negotiationStatus
- Proposal.status
ดูข้อมูลเพิ่มเติมได้ที่ศูนย์ช่วยเหลือของ Ad Manager
คำแนะนำแบบทีละขั้นอย่างละเอียดเกี่ยวกับการเจรจาต่อรอง
ในส่วนนี้ เราจะแนะนำวิธีใช้ 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