Cotizaciones
Utiliza la API de cotizaciones para crear, gestionar y recuperar cotizaciones de ventas para compartir información sobre precios con compradores potenciales. Una vez configurado, una cotización se puede compartir con un comprador, ya sea en una URL especificada o a través de PDF. Los usuarios también pueden gestionar cotizaciones en HubSpot para agregar detalles, actualizar asociaciones y mucho más.
Ejemplo de caso de uso: debes crear una propuesta de contrato para un cliente que esté interesado en comprar uno de sus paquetes anuales de servicios de auditoría SEO.
A continuación, aprende cómo crear un presupuesto a través de la API y configurar sus diversas propiedades, asociaciones, estados y más.
Nota: la API de cotizaciones no admite la creación de cotizaciones con firma electrónica o el procesamiento de pagos a través de Stripe o HubSpot. Tampoco puedes configurar descuentos, tarifas o impuestos recurrentes a nivel de cotización a través de la API. Para utilizar estas funciones, puedes crear la cotización en HubSpot.
El proceso de creación de cotizaciones se puede dividir en los siguientes pasos:
- Crear una cotización: crea una cotización con algunos detalles, como el nombre y la fecha de vencimiento. También puedes configurar la cotización para habilitar firmas electrónicas.
- Configurar asociaciones: asocia la cotización con otros tipos de objetos de CRM, como elementos de pedido, una plantilla de cotización, un negocio y más. Durante el siguiente paso, la cotización heredará los valores de propiedad de algunos de estos registros asociados, así como la configuración de la cuenta.
- Establecer el estado de la cotización: establece el estado de la cotización para que refleje que está lista para ser compartida con los compradores. Cuando estableces el estado de la cotización, como convertirla en un borrador editable o en una cotización totalmente publicada y de acceso público, heredará ciertas propiedades de sus registros de CRM asociados y de la configuración de la cuenta.
- Compartir la cotización: una vez que se ha publicado una cotización, puedes compartirla con tus compradores.
Para crear una cotización, primero debes configurar sus detalles básicos haciendo una solicitud POST
a/crm/v3/objects/quotes
. Más tarde, harás una llamada por separado para asociar la cotización con otros objetos, como la plantilla de cotización, un negocio y sus elementos de pedido.
En el cuerpo de la publicación, incluye las siguientes propiedades obligatorias para configurar sus detalles básicos:
hs_title string (required)The name of the quote. |
hs_expiration_date string (required)The date that the quote expires. |
The above are just the minimum required properties to get a quote started. To see all available quote properties, make a GET
request to crm/v3/properties/quotes
. Learn more about the properties API.
La respuesta incluirá un id
, que utilizarás para seguir configurando la cotización. Puedes actualizar las propiedades de la cotización en cualquier momento realizando una solicitud de PATCH
a /crm/v3/objects/quotes/{quoteId}
.
Para habilitar firmas electrónicas en la cotización, incluye la propiedad booleana hs_esign_enabled
en el cuerpo de tu solicitud con un valor de true
. Ten en cuenta que no podrás agregar refrendantes a través de la API, por lo que deberán agregarse en HubSpot antes de publicar la cotización. Tampoco puedes publicar una cotización con firma electrónica habilitada si has excedido tu límite mensual de firma electrónica.
Más adelante, tendrás que asociar la cotización con sus firmantes. Si bien los contactos que firman la cotización existen como contactos en HubSpot, se almacenan como un tipo de asociación independiente de los contactos. Más información sobre cómo asociar cotizaciones con firmantes de cotización.
Para crear una cotización completa, deberás asociarla con otros registros de CRM, como elementos de pedido, utilizando la API de asociaciones. La siguiente tabla muestra qué asociaciones de registros de CRM se requieren para una cotización completa y cuáles son opcionales. Sigue leyendo para obtener más información sobre cómo recuperar ID y usarlas para crear las asociaciones necesarias.
Tipo de objeto | Requerido | Descripción |
---|---|---|
Elementos de pedido | Sí | Los bienes y/o servicios que se venden a través de la cotización. Puedes crear elementos de pedido a partir de productos de tu biblioteca de productos o crear elementos de pedido independientes personalizados. |
Plantilla de cotización | Sí | La plantilla que representa la cotización, además de proporcionar algunos ajustes de configuración predeterminados para la cotización, como el idioma. Cada cotización se puede asociar con una plantilla. |
Negocio | Sí | El registro de negocio para el seguimiento de los ingresos y el ciclo de vida de las ventas. Una cotización hereda valores del negocio asociado, incluidos el responsable y la moneda. Cada cotización se puede asociar a un negocio. |
Contacto | No | Compradores específicos a los que te estás dirigiendo en la cotización. |
Empresa | No | Una empresa específica a la que te estás dirigiendo en la cotización. Cada cotización se puede asociar a una empresa. |
Descuentos, cargos e impuestos | No | Todos los descuentos, tarifas e impuestos que se apliquen al momento de pagar. Al determinar la cantidad total de la cotización, HubSpot aplica primero los descuentos, seguidos de las tarifas y los impuestos. Puedes usar el campo hs_sort_order para reordenar objetos del mismo tipo. Se puede establecer en valores o porcentajes fijos estableciendo hs_type en FIXED o en PERCENT . |
Para realizar cada asociación, primero tendrás que recuperar el ID de cada objeto que quieras asociar. Para recuperar cada ID, realizarás una solicitud GET
al punto de terminación del objeto correspondiente, que sigue el mismo patrón en cada objeto de CRM. Al realizar cada solicitud, también puedes incluir un parámetro de consulta de propiedades
para devolver propiedades específicas cuando sea necesario. A continuación se muestran ejemplos de solicitudes GET
para cada tipo de objeto.
Cada llamada exitosa devolverá una respuesta de 200
con detalles para cada tipo de objeto obtenido. Usarás el valor en el campo id
para establecer asociaciones en el siguiente paso.
Con tus ID recuperados, ahora puedes realizar llamadas a la API de asociaciones para crear asociaciones.
Para cada tipo de objeto que desees asociar con una cotización, deberás realizar una llamada por separado haciendo una solicitud PUT
utilizando la siguiente estructura de URL:
/crm/v4/objects/quotes/{fromObjectId}/associations/default/{toObjectType}/{toObjectId}
Parameter | Description |
---|---|
fromObjectId
| El ID de la cotización. |
toObjectType
| El tipo de objeto con el que te estás asociando. Por ejemplo, |
toObjectId
| El ID del objeto con el que asocias la cotización. |
A continuación se muestran ejemplos de solicitudes PUT
para cada tipo de objeto.
As an example, if your quote has an ID of 123456
, the requests to associate the quote might include the following:
- Line items (IDs:
55555
,66666
):/crm/v4/objects/quotes/123456/associations/default/line_items/55555
/crm/v4/objects/quotes/123456/associations/default/line_items/66666
- Quote template (ID:
987654
):/crm/v4/objects/quotes/123456/associations/default/quote_template/987654
- Deal (ID:
345345
):/crm/v4/objects/quotes/123456/associations/default/deals/345345
Cada asociación exitosa devolverá una respuesta de 200
con detalles sobre la asociación. Las llamadas anteriores asociarán los objetos en ambas direcciones, con cada dirección teniendo su propio ID. Por ejemplo, si asocias la cotización con una plantilla de cotización, la respuesta describirá la asociación desde ambos extremos. En la respuesta de ejemplo a continuación, 286
es el ID de tipo de asociación de plantilla de cotización a cotización, y 285
es el ID de tipo de asociación de plantilla de cotización a cotización.
Nota: al asociar una cotización con una plantilla de cotización, ten en cuenta los siguientes límites:
- Las plantillas de cotizaciones deben crearse antes de que puedan asociarse con una cotización.
- Una cotización solo se puede asociar con una plantilla de cotización.
- Esta API no admite cotizaciones preexistentes o propuestas. Solo se puede usar el tipo de plantilla
CUSTOMIZABLE_QUOTE_TEMPLATE
.
Si estás habilitando la cotización para firmas electrónicas, también deberás crear una asociación entre la cotización y los contactos que están firmando mediante el uso de una etiqueta de asociación específica de cotización a contacto.
En lugar de utilizar los puntos de terminación de asociación predeterminados que se muestran arriba, deberás realizar una solicitud PUT
a la siguiente URL:
/crm/v4/objects/quote/{quoteId}/associations/contact/{contactId}
En el cuerpo de la solicitud, deberás especificar associationCategory
y associationTypeId
, como se muestra a continuación:
El siguiente cuerpo de solicitud creará una nueva cotización con asociaciones a una plantilla de cotización, un negocio, dos elementos de pedido y un contacto.
POST
/crm/v3/objects/quote
properties object
Quote details, which can be retrieved through the properties API. Required properties are: |
⮑ hs_title string (required)The name of the quote. |
⮑ hs_expiration_date string (required)The date that the quote expires. |
⮑ hs_status stringThe quote status. Omitting this property on create will prevent users from being able to edit the quote in HubSpot. |
associations array
The quote's associated records. For a quote to be publishable, it must have an associated deal and quote template. Learn more about association type IDs. |
El estado de una cotización describe qué tan avanzado está en el proceso de creación, desde la configuración inicial hasta su publicación y acceso público. El estado de la cotización también puede reflejar el proceso de aprobación de la cotización, si las aprobaciones de cotizaciones están habilitadas para la cuenta. Al establecer el estado de una cotización, HubSpot completará automáticamente ciertas propiedades.
Puedes actualizar el estado de una cotización haciendo una solicitud de PATCH
a /crm/v3/objects/quote/{quoteId}
.
El estado de una cotización se basa en el campo hs_status
. Ciertos estados de cotización permiten a los usuarios editar, publicar y usar la cotización en los workflows de aprobación de cotizaciones. A continuación se muestran los estados de cotización disponibles.
- Sin estado: si no se proporciona ningún valor para el campo
hs_status
, la cotización estará en el estado Mínimo. La cotización aparecerá en la página de índice de la herramienta Cotizaciones, pero no se podrá editar directamente. Las cotizaciones en este estado todavía se pueden usar en la automatización, como la herramienta de secuencias, y también están disponibles para analizar dentro de la herramienta de informes. DRAFT
: permite editar la cotización en HubSpot. Este estado puede ser útil cuando la cotización no está completamente configurada o si prefieres permitir que los representantes de ventas completen el proceso de configuración de la cotización en HubSpot.APPROVAL_NOT_NEEDED
: publica la cotización en una URL de acceso público (hs_quote_link
) sin necesidad de aprobación.PENDING_APPROVAL
: indica que la cotización está a la espera de ser aprobada antes de que pueda ser publicada.APPROVED
: la cotización ha sido aprobada y ahora está publicada en una URL de acceso público (hs_quote_link
).REJECTED
: indica que la cotización ha sido configurada pero no ha sido aprobada para su publicación, y debe editarse antes de que pueda enviarse de nuevo para su aprobación.
Nota: si habilitas firmas electrónicas en la cotización, no podrás publicarla si has superado tu límite mensual de firmas electrónicas.
Nota: por opción predeterminada, HubSpot establecerá la propiedad hs_template_type
de la cotización en CUSTOMIZABLE_QUOTE_TEMPLATE
después de que actualices el estado de la cotización. Este tipo de plantilla es compatible con la API v3, mientras que los siguientes tipos de plantilla son plantillas preexistentes que ya no son compatibles:
QUOTE
PROPOSAL
Actualizar el estado de la cotización actualizará las siguientes propiedades:
hs_quote_amount
: se calcula en función de cualquier elemento de línea asociado, impuesto, descuento y tarifa.hs_domain
: se establece a partir de la plantilla de cotización asociada.hs_slug
: generado aleatoriamente si no se proporciona explícitamente uno.hs_quote_total_preference
: se establece en función de la configuración de tu cuenta. Si no has configurado este ajuste, por opción predeterminada será el valor del campo total_first_payment.hs_timezone
: es la zona horaria predeterminada de tu cuenta de HubSpot.hs_locale
: se establece a partir de la plantilla de cotización asociada.hs_quote_number
: se establece en función de la fecha y hora actuales, a menos que se proporcione una.hs_language
: se establece a partir de la plantilla de cotización asociada.hs_currency
: se establece en función del negocio asociado. Si no has asociado un negocio con la cotización, esta cambiará por opción predeterminada a la moneda predeterminada de tu cuenta de HubSpot.
Además, las propiedades a continuación se calcularán cuando la cotización se establece en un estado publicado:
hs_pdf_download_link
: se rellena con una URL de un PDF para la cotización.hs_locked
: establecido entrue
. Para modificar cualquier propiedad después de haber publicado una cotización, primero debes actualizar elhs_status
de la cotización aDRAFT
,PENDING_APPROVAL
oREJECTED
.hs_quote_link
: la URL de acceso público de la cotización. Esta es una propiedad de solo lectura y no se puede configurar a través de la API después de la publicación.hs_esign_num_signers_required
: si has habilitado firmas electrónicas, muestra el número de firmas necesarias.
Se requieren los siguientes alcances para que una aplicación cree una cotización publicable válida:
crm.objects.quotes.write
,crm.objects.quotes.read
,crm.objects.line_items.write
,crm.objects.line_items.read
,crm.objects.owners.read
,crm.objects.contacts.write
,crm.objects.contacts.read
,crm.objects.deals.write
,crm.objects.deals.read
,crm.objects.companies.write
,crm.objects.companies.read
crm.schemas.quote.read
,crm.schemas.line_items.read
,crm.schemas.contacts.read
,crm.schemas.deals.read
,crm.schemas.companies.read
Gracias por tus comentarios, son muy importantes para nosotros.