Programática

Esta guía es una descripción general de alto nivel sobre cómo usar las funciones de Programmatic Direct a través de la API. Describe cómo crear una propuesta y cómo realizarla negociación.

Primer

Una propuesta programática es similar a un pedido en Google Ad Manager. Propuestas programáticas contienen información general acerca de una transacción propuesta entre tú y un comprador. Una propuesta, junto con sus líneas de pedido, representa una oferta de inventario a comprador.

Si desea obtener más información, consulte el Centro de ayuda.

Cómo crear una propuesta a través de la API

Para crear un objeto Proposal, solo se admiten el nombre y el comprador programático como en los productos necesarios. El ID del comprador programático se puede obtener a través de la IU o el Programmatic_Buyer Tabla de PQL.

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(),
  # ...
}
    

Antes de enviarle la oferta al comprador para que la negocie, deberás configurar campos adicionales. La propuesta debe tener contactos de anunciante, vendedor, coordinador de anuncios y vendedor.

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
    

Dado que las propuestas suelen estar compuestas por ProposalLineItem objetos, el siguiente paso sería agregar líneas de pedido propuestas debajo de la propuesta creada.

Estados de una propuesta programática

La siguiente figura muestra una propuesta programática en varios momentos del el proceso de negociación desde el punto de vista de la API. Cada estado se representa con combinaciones de los siguientes campos:

Para obtener más información, consulta el Centro de ayuda de Ad Manager.

Los estados en los que puede estar una propuesta programática durante su
           interacción con Marketplace.
Figura 1: Estados de una propuesta programática

Explicación de la negociación

Aquí, lo guiaremos para que use la API a fin de completar una negociación para propuesta programática con un comprador. Haremos referencia a los estados en el diagrama arriba.

Prepárate para la revisión o aceptación del comprador

Primero, debes redactar una propuesta programática con líneas de pedido propuestas que que desea enviar a un comprador. Esto es state C en la figura anterior.

Cómo solicitar la revisión o aceptación del comprador

Una vez que tengas todo listo para que el comprador revise la propuesta programática, puedes usar el método ProposalService.performProposalAction para RequestBuyerReview o RequestBuyerAcceptance. Esto te llevará a la fase de negociación.

Negociación

En esta fase, pueden ocurrir varias cosas.

  • El comprador puede aceptar su propuesta programática sin cambios.
  • El comprador puede proponer cambios. En este caso, la propuesta se devolverá a un estado de borrador (state B en la Figura 1). Luego, deberás Abrir la propuesta para su edición realizar los cambios propuestos y devolverlo para que el comprador lo revise.
  • También puedes decidir realizar cambios incluso antes de que el comprador responda. Puedes Para ello, abre la propuesta de edición de state D en la Figura 1.

Esta negociación continúa hasta llegar a un acuerdo con el comprador. Comentarios entre tú y el comprador se pueden recuperar getMarketplaceCommentsByStatement. Puedes enviar un comentario al comprador mientras el estado es state A. Tareas pendientes debes actualizar marketplaceComment en la propuesta usando updateProposals. El comentario se enviará cuando solicites la aceptación del comprador.

Finalizada

Una vez que usted y el comprador hayan aceptado la propuesta programática, esta entra a un estado finalizado (state F en la Figura 1). Luego, Ad Manager crea automáticamente líneas de pedido a partir de esta propuesta programática.

En la mayoría de los casos, ya terminaste con la propuesta programática. Sin embargo, hay hay dos acciones que puedes realizar desde este estado:

  • Edita la propuesta de renegociación para volver a abrir la propuesta programática campos relacionados con la publicación en la propuesta. Para ello, abre la propuesta para editarla (state E to A en la Figura 1), realiza los cambios y, luego, solicita la aceptación del comprador.
  • Puede realizar ediciones que no estén relacionadas con la publicación, como actualizar y el cambio en el pedido de Ad Manager y las líneas de pedido creadas de este acuerdo. Para ello, edita el archivo de state E en la Figura 1 y, luego, realiza la acción UpdateOrderWithSellerData.