Skip to content

Automatizaciones para cadencias de ventas en ventas de alta velocidad ☁️

Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .

El enlace a la publicación original, lo encontrarás al final de este artículo.

High Velocity Sales (HVS) es una solución de Sales Cloud para acelerar el proceso de ventas para los equipos de ventas internos. La configuración básica de HVS normalmente la realiza un administrador. Sin embargo, a menudo se necesita a los desarrolladores para implementar automatizaciones más avanzadas. HVS incluye varias funciones, como cadencias de ventas, puntuación de clientes potenciales de Einstein, integración de correo electrónico y marcador de ventas. En esta publicación de blog, cubriremos lo que los desarrolladores necesitan saber sobre las cadencias de ventas y también profundizaremos en cómo implementar automatizaciones comunes, con y sin código.

Antes de comenzar: si no conoce los conceptos básicos sobre HVS, mire esta demostración de 2 minutos .

Automatizar los flujos de trabajo de ventas internas con Sales Cadences

Una cadencia de ventas es una representación de un flujo de trabajo de ventas interno; guía a los representantes de ventas a través de los procesos de prospección y fomento de oportunidades de una venta. Los pasos para una cadencia de ventas se configuran con clics en Sales Cadence Builder. Por ejemplo, esta cadencia de ventas contiene una combinación de correos electrónicos y llamadas que un representante de ventas debe realizar para comunicarse con un posible cliente. Usaremos esta cadencia de ventas para los ejemplos de esta publicación de blog.

Los prospectos se pueden asignar a las cadencias de ventas. Esto se puede hacer manualmente o de forma automatizada, llamando a la acción invocable assignTargetToSalesCadence. Una vez hecho esto, el prospecto entra en la cadencia de ventas y los siguientes pasos a realizar se vuelven visibles para el representante de ventas apropiado.

Modelo de datos de cadencias de ventas

Bajo el capó, la definición de una cadencia de ventas se almacena como datos en un conjunto de nuevos sObjects:

  • ActionCadence : creado cuando usa la aplicación High Velocity Sales para crear una cadencia de ventas
  • ActionCadenceStep : representa un paso; si el paso es un paso de bifurcación, también se crean los registros ActionCadenceRul e y ActionCadenceRuleCondition
  • ActionCadenceRule : representa la lógica que utiliza un paso de rama para tomar decisiones en su cadencia de ventas
  • ActionCadenceRuleCondition : representa la lógica de un paso de bifurcación. Mientras que ActionCadenceRule representa la expresión lógica completa, ActionCadenceRuleCondition representa cada componente de la expresión. Entonces, si la expresión lógica es (A = 2) AND (B = 4), entonces las condiciones de la regla serían (A = 3), (B = 4) y la regla es la combinación de ellas con el operador AND.

Hay dos sObjects adicionales que realizan un seguimiento del paso de la cadencia de ventas en el que se encuentra un cliente potencial:

  • ActionCadenceTracker : creado cuando asigna un cliente potencial a una cadencia de ventas
  • ActionCadenceStepTracker : se crea cada vez que el cliente potencial pasa a un nuevo paso

Esos sObjects están disponibles a través de la API SOAP , lo que significa que también puede consultarlos. Por el momento, la create() no está disponible para los objetos de cadencia de ventas, sin embargo, esto está en la hoja de ruta del producto y será posible pronto. Esto significa que no puede crearlos mediante programación utilizando Apex o API. Solo puede crearlos desde Sales Cadence Builder.

Para comprender mejor el modelo de datos, echemos un vistazo a lo que sucede cuando agrega un cliente potencial a la cadencia de ventas por correo electrónico simple que vimos anteriormente.

Cuando se hace esto, se ActionCadenceStepTracker registros ActionCadenceTracker y ActionCadenceStepTracker. Luego podemos recuperar el ActionCadenceTracker creado ejecutando:

SELECT ActionCadence.Name, Target.Name, CurrentStep.StepTitle, LastCompletedStep.StepTitle, State, RelatedToId FROM ActionCadenceTracker

Esto es lo que obtendrás:

ActionCadence.Name Target.Name CurrentStep.StepTitle LastCompletedStep.Title Estado
Cadencia de correo electrónico simple Robert Janzen Correo electrónico de introducción Corriendo

Del mismo modo, podemos echar un vistazo al ActionCadenceStepTracker que se ha creado:

SELECT ActionCadenceName, Target.Name, StepTitle, DueDateTime, IsActionTaken, ActionTakenDatetime, State from ActionCadenceStepTracker

ActionCadenceName Target.Name StepTitle DueDateTime IsActionTaken IsActionTakenDateTime Estado
Cadencia de correo electrónico simple Robert Janzen Correo electrónico de introducción 2021-08-31T21: 59: 59.000 + 0000 FALSO Activo

Llamar a acciones invocables de HVS

Las automatizaciones básicas se pueden implementar mediante clics. HVS tiene la siguiente lista de acciones invocables que puede invocar desde lugares, como Flow, Process Builder, la API REST (como lo hacemos en este ejemplo ) o Apex (como lo hacemos aquí ), para implementar sus automatizaciones:

  • assignTargetToSalesCadence
  • removeTargetFromSalesCadence
  • pauseSalesCadenceTracker
  • resumeSalesCadenceTracker
  • changeSalesCadenceTargetAssignee
  • modifyCadenceTrackerAttributes
  • sendSalesCadenceEvent

Tenga en cuenta que la llamada a acciones invocables desde Apex se puede simplificar utilizando esta función de vista previa para desarrolladores en Winter '22 .

Eche un vistazo a una definición más detallada de las acciones disponibles en la guía de acciones invocables de HVS .

Trabajar con cambios en Action Cadence Tracker

Como se mencionó anteriormente, para automatizaciones más avanzadas, deberá escribir código. Un caso de uso de automatización común es poder reaccionar a los ActionCadenceTracker para ejecutar una acción en función de ciertas condiciones. Por ejemplo, cambie el estado del ActionCadenceTracker a "En funcionamiento" cuando se crea el ActionCadenceTracker por primera vez oa "" Cerrado "cuando se completa. Una limitación que existe a día de hoy es que no puede crear activadores para ActionCadenceTracker y ActionCadenceStepTracker . Sin embargo, la captura de datos modificados (CDC) se puede utilizar para crear automatización. Primero, deberá activar CDC para el objeto ActionCadenceTracker


Luego, puede escuchar eventos de CDC en Apex, creando un disparador de Apex Async . Por ejemplo, implementemos una automatización que cambia el estado de un cliente potencial a "En funcionamiento" cuando se agrega a una cadencia de ventas:

 desencadenar UpdateLeadWhenAddedToCadenceTrigger en ActionCadenceTrackerChangeEvent (después de insertar) { Establecer <Id> leadIds = new Establecer <Id> (); para (evento ActionCadenceTrackerChangeEvent: Trigger.New) { Encabezado EventBus.ChangeEventHeader = event.ChangeEventHeader; // Si se creó el rastreador (el cliente potencial se agregó a la cadencia de ventas), cambie el estado del cliente potencial a 'Trabajando' if (header.changeType == 'CREATE') { // Es posible que el Id no sea un leadId, pero en ese caso la consulta no lo devolverá leadIds.add (event.TargetId); } } Enumere <Lead> leadsToUpdate = [SELECCIONE Estado DESDE el Lead DONDE ID IN: leadIds]; para (LeadToUpdate: leadsToUpdate) { if (leadToUpdate.Status! = 'Trabajando') { leadToUpdate.Status = 'Trabajando'; } } actualizar leadsToUpdate;
}

Desafortunadamente, no es posible escuchar eventos de CDC en Flow o Process Builder. Tendrá que crear un disparador de Apex Async que transforme el evento de CDC en un evento de plataforma personalizado y luego escuchar el evento de plataforma personalizado.

Por ejemplo, digamos que el evento de plataforma personalizado se llama SalesCadenceTrackerEvent__e . Así es como implementaría el disparador CDC:

 / ** * Este disparador escucha eventos de cambio en ActionCadenceTracker y publica una plataforma * evento (SalesCadenceTrackerEvent__e) siempre que un rastreador se inicia por primera vez y cuando se * completado. A continuación, puede utilizar Flows o Process Builder para escuchar el evento de la plataforma. * /
desencadenar ActionCadenceTrackerChangeEventTrigger en ActionCadenceTrackerChangeEvent (después de insertar) { List <SalesCadenceTrackerEvent__e> cadenceEvents = new List <SalesCadenceTrackerEvent__e> (); List <String> trackerIdsToQuery = new List <String> (); para (evento ActionCadenceTrackerChangeEvent: Trigger.New) { Encabezado EventBus.ChangeEventHeader = event.ChangeEventHeader; List <String> recordIds = event.ChangeEventHeader.getRecordIds (); String trackerId = recordIds.get (0); // Si se completó Tracker, deberíamos enviar un evento if (header.changeType == 'ACTUALIZAR') { if (event.State == 'Complete') { // Los eventos de actualización no tienen toda la información que necesitamos, así que tenemos que consultar trackerIdsToQuery.add (trackerId); } } // Si se creó Tracker, deberíamos enviar un evento if (header.changeType == 'CREATE') { SalesCadenceTrackerEvent__e cadenceEvent = new SalesCadenceTrackerEvent__e (); cadenceEvent.TrackerId__c = trackerId; cadenceEvent.CadenceId__c = event.ActionCadenceId; cadenceEvent.State__c = event.State; // Esto será 'Corriendo' cadenceEvent.TargetId__c = event.TargetId; // Este será el cliente potencial, el contacto, la identificación de la cuenta de la persona cadenceEvents.add (cadenceEvent); } // Consulta la información de los rastreadores para ACTUALIZACIONES if (trackerIdsToQuery.size ()> 0) { Lista <ActionCadenceTracker> trackers = [SELECT ID, ActionCadenceId, State, TargetId de ActionCadenceTracker DONDE ID en: trackerIdsToQuery]; para (ActionCadenceTracker tracker: trackers) { SalesCadenceTrackerEvent__e cadenceEvent = new SalesCadenceTrackerEvent__e (); cadenceEvent.TrackerId__c = tracker.Id; cadenceEvent.CadenceId__c = tracker.ActionCadenceId; cadenceEvent.State__c = tracker.State; // Esto será 'Completo' cadenceEvent.TargetId__c = tracker.TargetId; // Este será el cliente potencial, el contacto, la identificación de la cuenta de la persona cadenceEvents.add (cadenceEvent); } } } // Publique los eventos para que Flow o Process Builder los escuchen EventBus.publish (cadenceEvents);
}

Tenga en cuenta que el código anterior solo lanza el evento cuando el rastreador de cadencia se crea por primera vez o cuando se completa (estado = Completo). Luego, esos SalesCadenceTrackerEvent__e recién creados se pueden detectar desde Flow o Process Builder para implementar las automatizaciones deseadas.

Aquí tienes un diagrama que representa uno de los posibles flujos en esta automatización:


Si desea obtener más información, consulte este documento que contiene instrucciones detalladas sobre cómo implementar esta automatización.

Trabajar con cambios de ActionCadenceStepTracker

Del mismo modo, si desea reaccionar a los ActionCadenceStepTracker , tendrá que usar CDC. Luego, puede escuchar los eventos de CDC desde un disparador e implementar las automatizaciones requeridas con código (como lo hacemos en este ejemplo ). Alternativamente , puede convertir el evento CDC en un evento de plataforma personalizado, al igual que hicimos con Action Cadence Tracker. A quí tiene el código para hacerlo:

 / ** * Este disparador escucha eventos de cambio en ActionCadenceStepTracker y publica una plataforma * evento (SalesCadenceStepTrackerEvent__e) siempre que un rastreador de pasos se inicia por primera vez y cuando se * completado. A continuación, puede utilizar Flows o Process Builder para escuchar el evento de la plataforma. * / desencadenar ActionCadenceStepTrackerChangeEventTrigger en ActionCadenceStepTrackerChangeEvent (después de insertar) { List <SalesCadenceStepTrackerEvent__e> cadenceEvents = new List <SalesCadenceStepTrackerEvent__e> (); List <String> stepTrackerIdsToQuery = new List <String> (); para (evento ActionCadenceStepTrackerChangeEvent: Trigger.New) { Encabezado EventBus.ChangeEventHeader = event.ChangeEventHeader; List <String> recordIds = event.ChangeEventHeader.getRecordIds (); String stepTrackerId = recordIds.get (0); // Si se completó StepTracker, deberíamos enviar un evento if (header.changeType == 'ACTUALIZAR') { if (event.State == 'Completed') { // Los eventos de actualización no tienen toda la información que necesitamos, así que tenemos que consultar stepTrackerIdsToQuery.add (stepTrackerId); } } // Si se creó StepTracker, deberíamos enviar un evento if (header.changeType == 'CREATE') { SalesCadenceStepTrackerEvent__e cadenceEvent = new SalesCadenceStepTrackerEvent__e (); cadenceEvent.StepTrackerId__c = stepTrackerId; cadenceEvent.CadenceId__c = event.ActionCadenceId; cadenceEvent.CadenceStepId__c = event.ActionCadenceStepId; cadenceEvent.State__c = event.State; // Esto será 'Activo' cadenceEvent.StepType__c = event.StepType; // Este será SendAnEmail, MakeACall, etc. cadenceEvent.TargetId__c = event.TargetId; // Este será el cliente potencial, el contacto, la identificación de la cuenta de la persona cadenceEvent.StepTitle__c = event.StepTitle; cadenceEvents.add (cadenceEvent); } } // Consulta de los rastreadores de pasos if (stepTrackerIdsToQuery.size ()> 0) { Lista <ActionCadenceStepTracker> stepTrackers = [SELECT ID, ActionCadenceId, ActionCadenceStepId, State, StepTitle, StepType, TargetId de ActionCadenceStepTracker DONDE ID en: stepTrackerIdsToQuery]; para (ActionCadenceStepTracker stepTracker: stepTrackers) { SalesCadenceStepTrackerEvent__e cadenceEvent = new SalesCadenceStepTrackerEvent__e (); cadenceEvent.StepTrackerId__c = stepTracker.Id; cadenceEvent.CadenceId__c = stepTracker.ActionCadenceId; cadenceEvent.CadenceStepId__c = stepTracker.ActionCadenceStepId; cadenceEvent.State__c = stepTracker.State; // Esto será 'Completado' cadenceEvent.StepType__c = stepTracker.StepType; // Este será SendAnEmail, MakeACall, etc. cadenceEvent.TargetId__c = stepTracker.TargetId; // Este será el cliente potencial, el contacto, la identificación de la cuenta de la persona cadenceEvent.StepTitle__c = stepTracker.StepTitle; cadenceEvents.add (cadenceEvent); } } // Publique los eventos para que Flow o Process Builder los escuchen EventBus.publish (cadenceEvents);
}

Tenga en cuenta que el código anterior solo lanza el evento cuando el rastreador de pasos de cadencia se crea por primera vez (estado = Activo) o cuando se completa (estado = Completado).

Aquí tienes otro diagrama que representa uno de los posibles flujos en esta automatización:

Eche un vistazo a este otro documento para leer instrucciones detalladas sobre cómo implementar esta automatización.

Próximos pasos

En esta publicación de blog, hemos cubierto los puntos más importantes para implementar con éxito automatizaciones para cadencias de ventas en ventas de alta velocidad.

Si desea ver más ejemplos, eche un vistazo a esta página de documentación en la que se explican algunas ideas de automatización más. También hemos subido todos los ejemplos de código a este repositorio de GitHub , para un consumo más fácil.

Finalmente, recomiendo abordar este sendero Trailhead , en el que podrá aprender los conceptos funcionales de HVS más importantes para mejorar sus implementaciones.

Sobre el Autor

Alba Rivas trabaja como defensora principal de desarrolladores en Salesforce. Se centra en los componentes web Lightning y la estrategia de adopción de Lightning. Puedes seguirla en Twitter @AlbaSFDC .

Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2021/10/automations-for-sales-cadences-in-high-velocity-sales.html

Últimas novedades 
de EGA Futura
1954
Desde hace más de 25 años potenciamos a las Empresas de Iberoamérica
🎬 Video de EGA Futura » Conceptos de Seguridad (EGA Futura ERP / Salesforce)

🎬 Video de EGA Futura » Conceptos de Seguridad (EGA Futura ERP / Salesforce)

🎬 Video de Juan Manuel Garrido » Claves para tu Productividad diaria 🙌✅

🎬 Video de EGA Futura » Facturación Electrónica en Uruguay » Conceptos básicos con EGA Futura Windows

🎬 Video de EGA Futura » Facturación Electrónica en Uruguay » Configuración de EGA Futura Windows

🎬 Video de EGA Futura » Facturación Electrónica en Uruguay » Funcionamiento con EGA Futura Windows

🎬 Video de EGA Futura » Configuración de la Plataforma EGA Futura

🎬 Video de EGA Futura » Configuración de usuario en EGA Futura

🎬 Video de EGA Futura » Como automatizar la publicación en Redes Sociales?

🎬 Video de Juan Manuel Garrido » Cómo restaurar la configuración de fábrica de EGA Futura Windows sin perder la información

🎬 Video de Juan Manuel Garrido » Factura electrónica: Prueba de Factura Electronica previa a la activacion

🎬 Video de EGA Futura » Como se registran los Beneficios de cada Empleado en la base de datos de EGA Futura

🎬 Video de EGA Futura » EGA Futura Time Clock » Reloj de Control horario y asistencia

🎬 Video de EGA Futura » Como registrar Observaciones en un Empleado dentro de EGA Futura People?

🎬 Video de EGA Futura » Cómo registrar la Educación de cada Empleado en EGA Futura People?

🎬 Video de EGA Futura » Como hacer la Desvinculación de un Empleado? (Offboarding)

🎬 Video de EGA Futura » Como registrar Habilidades o Skills de empleados dentro de EGA Futura

🎬 Video de EGA Futura » Como hacer el Onboarding o Proceso de Incorporación de un Empleado?

🎬 Video de EGA Futura » Cómo administrar Turno de trabajo dentro de EGA Futura

🎬 Video de EGA Futura » Que es un Ticket interno dentro de la Plataforma EGA Futura

🎬 Video de EGA Futura » Que son los Entrenamientos de Empleado en EGA Futura people?

🎬 Video de EGA Futura » Qué son los Epics dentro de EGA Futura

🎬 Video de EGA Futura » Qué es EGA Futura People?

🎬 Video de EGA Futura » EGA Futura People » Asistencias

🎬 Video de EGA Futura » Soporte EGA Futura » Software de Gestión Windows vs Software de Gestión Nube 🤩

🎬 Video de EGA Futura » ツ Comparando un Objeto con un Fichero

Automatizaciones para cadencias de ventas en ventas de alta velocidad ☁️
Automatizaciones para cadencias de ventas en ventas de alta velocidad ☁️