

Una campaña es un esfuerzo comercial con fecha de inicio y fecha de final.
Esa acotación en el tiempo no es un detalle administrativo: es lo que permite medirla.
Toda la actividad de marketing que corre de manera permanente puede ser valiosa, pero no se deja evaluar con la misma limpieza que un esfuerzo con principio y fin.
La primera es el público, o sea a quién se le habla y por qué se eligió a ese grupo y no a otro.
La segunda es el mensaje, que tiene que ser específico de esta campaña y no una repetición del discurso general.
La tercera es el canal, que puede ser correo, un evento presencial, un seminario en línea, anuncios pagos o una acción conjunta con socios.
La cuarta es el objetivo medible, escrito antes de arrancar y no después de ver los resultados.
Una campaña nace con un costo presupuestado, que es lo que se pensaba gastar.
Termina con un costo real, que casi nunca coincide con el anterior y por eso vale la pena guardar los dos.
Del otro lado está el ingreso esperado, que es la apuesta explicitada en números.
La comparación entre esas tres cifras y el ingreso que efectivamente llegó es lo que convierte al marketing en una disciplina medible en lugar de un acto de fe.
Atribuir una venta a una campaña es más difícil de lo que parece, porque casi nadie compra después de un solo contacto.
Una misma persona puede haber visto un anuncio, abierto un correo y asistido a un seminario antes de pedir una reunión.
Por eso conviene registrar todas las campañas que tocaron a esa persona, y no solo la última.
La última es la más fácil de identificar y por eso se lleva el crédito injustamente, en un sesgo conocido como atribución al último toque.
Un lanzamiento grande rara vez es una sola acción: suele ser una campaña madre con varias campañas hijas, una por canal.
Esa jerarquía sirve para mirar el resultado en los dos niveles.
En el nivel de arriba se responde si el lanzamiento valió la pena, y en el de abajo qué canal aportó qué.
Antes de que haya ventas hay respuestas, y esa es la señal más temprana de que una campaña funciona.
Responder puede significar abrir, hacer clic, completar un formulario o presentarse a un evento, según el canal.
Medir cuántos respondieron y cuándo permite corregir sobre la marcha, en lugar de esperar al cierre para descubrir que el mensaje no enganchaba.
La Plataforma incluye un objeto Campaña donde se registra cada acción comercial con su nombre, su tipo y su estado.
Cada campaña lleva una fecha de inicio y una fecha de finalización, más una casilla que indica si está activa.
Ese trío de campos es el que separa lo que está corriendo hoy de lo que ya terminó y solo interesa para comparar.
La Campaña tiene una referencia a otra campaña, y con eso se arma la jerarquía.
Un lanzamiento puede quedar como campaña madre y colgar de él una campaña por cada canal, sin duplicar información.
Se registran tres importes: el costo presupuestado, el costo real y el ingreso esperado.
Hay además un campo de respuesta esperada, expresado en porcentaje, que es la hipótesis contra la cual después se compara el resultado.
La Campaña expone ocho totales de solo lectura, que el sistema mantiene sin que nadie los cargue.
Cuatro cuentan personas: candidatos, contactos, candidatos convertidos y respuestas.
Dos cuentan negocio: oportunidades generadas y oportunidades ganadas.
Y dos suman dinero: el importe de todas las oportunidades y el de las oportunidades ganadas.
Con esos dos últimos y el costo real, el retorno de la campaña queda a la vista sin necesidad de armarlo a mano.
La relación entre una campaña y cada persona se guarda en el Miembro de campaña.
Un miembro puede apuntar a un contacto o a un candidato, así que la misma campaña alcanza tanto a los clientes actuales como a los que recién se acercan.
Cada miembro tiene su propio estado, una casilla que indica si respondió y la fecha de la primera respuesta.
Esa fecha es la que permite ver la curva de respuesta en el tiempo y detectar en qué momento la campaña dejó de rendir.
Una lista es un conjunto de personas, y una campaña es una acción con objetivo, presupuesto y plazo.
La misma lista puede recibir varias campañas distintas a lo largo del año, y cada una se mide por separado.
Se compara el costo real contra el importe de las oportunidades ganadas que quedaron vinculadas a ella.
Conviene mirar también el importe de las oportunidades todavía abiertas, porque una campaña puede seguir dando resultado después de haber terminado.
Sí, y de hecho es lo habitual en cualquier recorrido de compra que dure más de unas semanas.
Registrar cada participación por separado es lo que después permite entender qué combinación de acciones fue la que funcionó.
No se borran, porque su valor aparece justamente cuando se comparan entre sí.
Alcanza con desmarcarlas como activas para que dejen de aparecer en el trabajo del día y sigan disponibles para el análisis.
La campaña es el objeto estándar Campaign, y la relación con cada persona vive en CampaignMember.
Existe además CampaignMemberStatus, que define los estados disponibles para los miembros de cada campaña.
El campo Name es Text de 80 y es el único obligatorio del objeto.
La jerarquía se arma con ParentId, un Lookup al propio objeto Campaign.
La vigencia se maneja con StartDate, EndDate e IsActive.
Conviene saber que OwnerId en Campaign es un Lookup a User solamente, de modo que el propietario de una campaña es siempre una persona.
Son BudgetedCost, ActualCost y ExpectedRevenue, los tres de tipo Currency sin decimales.
El campo ExpectedResponse es Percent con dos decimales.
Cuentan registros NumberOfLeads, NumberOfContacts, NumberOfConvertedLeads, NumberOfResponses, NumberOfOpportunities y NumberOfWonOpportunities.
Suman dinero AmountAllOpportunities y AmountWonOpportunities.
Ninguno de los ocho se escribe por API, porque el sistema los mantiene solo.
En Campaign.Type y en Campaign.Status la etiqueta y el valor almacenado son idénticos, y los valores vienen en inglés.
Type ofrece Conference, Webinar, Trade Show, Public Relations, Partners, Referral Program, Advertisement, Banner Ads, Direct Mail, Email, Telemarketing y Other, con Conference por omisión.
Status ofrece Planned, In Progress, Completed y Aborted, con Planned por omisión.
Cualquier filtro por API o por Apex tiene que usar esos valores en inglés, incluso en una organización cuyo idioma sea el español.
El campo LeadOrContactId es un Lookup polímorfo que resuelve a Lead, Contact o Account.
La respuesta se registra con HasResponded, de tipo Checkbox, y FirstRespondedDate, de tipo Date.
Ojo con CampaignMember.Type, que a diferencia del Type de la campaña no es una lista de selección sino un Text de 40.