7 min de lecturaIntegraciones

Seguimiento de clics en enlaces de Salesforce: los clics en el registro del contacto

Salesforce solo rastrea los clics en los correos que envía y nada más. Tres vías para llevar los clics de un enlace corto a un registro, y la única que funciona fuera del correo electrónico.

Marius Voß
DevRel · edge infra
Un clic en un enlace corto que llega como webhook y se convierte en un registro de clic adjunto a un contacto de Salesforce y a un miembro de campaña

Salesforce registra un clic cuando fue Salesforce quien envió el enlace. Account Engagement reescribe las URL de sus propios correos y atribuye el clic a un prospect, y los custom redirects extienden eso a los enlaces que pegas en otros sitios. Eso es todo lo que cubre la historia nativa.

Todo lo demás que envía tu empresa no produce ningún clic en el CRM. El seguimiento de un representante desde su propio buzón, una secuencia de SMS, un código QR en un stand de una conferencia, un anuncio de pago, la newsletter de un partner: todo invisible. Cerrar esa brecha requiere un enlace rastreado que sea tuyo y un webhook que escriba en Salesforce, y las decisiones interesantes están en qué escribir, no en cómo enviarlo. Para el mismo problema en otro CRM, los clics en enlaces de HubSpot en la línea de tiempo del contacto cubre la forma de esa integración.

Lo que cubren las herramientas nativas

Dos mecanismos, ambos limitados a los mensajes que envía Salesforce.

El seguimiento de clics en enlaces de correo de Account Engagement reescribe cada enlace a través de un subdominio de seguimiento, de modo que el clic se registra contra el prospect al que se envió el correo. Funciona bien y solo funciona ahí.

Los custom redirects van un paso más allá: generas una URL rastreada y la usas en un banner, una publicación en redes sociales o un documento, y los clics aparecen como actividad del prospect. Dos limitaciones determinan hasta qué punto es útil. Los clics repetidos del mismo prospect se limitan dentro de una ventana, así que el conteo deliberadamente no es un total en bruto. Y la atribución a un prospect identificado depende de que el visitante ya esté identificado, lo que para tráfico frío significa que el clic se registra sin ninguna persona asociada.

Marketing Cloud tiene su propio modelo de enlaces rastreados con el mismo principio: mide lo que envió.

Nada de esto es una crítica. Es un alcance, y conocer ese alcance te dice exactamente para qué sirve la tercera vía.

La brecha y cómo cerrarla

El patrón es corto. Tu acortador dispara un webhook en cada clic. Un endpoint lo recibe, lo verifica y lo convierte en un registro.

Tres decisiones de implementación determinan si esto es un trabajo de fin de semana o un incidente recurrente.

Publica un platform event en lugar de escribir directamente. Un platform event desacopla la ingesta de la decisión sobre qué significa un clic. La integración publica Link_Click__e; los suscriptores deciden si eso actualiza un campaign member, crea una task o no hace nada para esta campaña. Cuando marketing cambia de idea sobre qué debería disparar un clic, editas un flow en lugar de un consumidor de webhooks.

Verifica la firma antes de confiar en el payload. El endpoint es público por definición. Comprueba el HMAC contra el secreto compartido, rechaza si no coincide, y nunca tomes el identificador del contact desde el cuerpo de la solicitud sin validarlo contra algo que tú mismo emitiste.

Deduplica por el identificador del clic. La entrega de webhooks reintenta tras un timeout, lo que significa que el mismo clic puede llegar dos veces. Guarda el identificador y haz que la escritura sea idempotente; la alternativa es un contact con cuatro registros de clic idénticos por un solo toque. Límites de tasa e idempotencia en una API de enlaces cubre la misma disciplina en el lado de salida.

Un clic en un enlace corto que viaja a través de un webhook firmado y un platform event hasta un registro de clic de Salesforce y una actualización de campaign member

Emparejar un clic con una persona, con honestidad

Aquí es donde las integraciones mienten en silencio, así que vale la pena decirlo claramente.

Un clic lleva lo que llevaba el enlace, y nada más. Si generaste un enlace corto distinto por destinatario, el payload identifica al destinatario y puedes escribir en su registro con confianza. Si cuatrocientas personas recibieron el mismo enlace, tienes cuatrocientos clics y ningún nombre, y ningún join ingenioso los recupera.

Así que decide caso por caso. Las secuencias de outbound y los seguimientos uno a uno justifican un enlace por destinatario, generado mediante la API cuando el mensaje se encola. Las campañas amplias no lo justifican, y los conteos a nivel de campaña son el resultado honesto: clics por campaña, por medio, por enlace, adjuntos al campaign object en lugar de a personas individuales. Acortadores de URL para equipos de ventas B2B cubre cuándo la versión por destinatario se amortiza sola.

Lo único que no hay que hacer es inferir la identidad a partir de una dirección IP o una coincidencia de tiempos. Se equivoca con la frecuencia suficiente como para contaminar un informe de pipeline, y en Europa es una decisión de tratamiento de datos que preferirías no tener que defender.

¿Lo estás implementando ahora? Los webhooks de Elido firman cada entrega y reintentan con backoff, y la referencia de webhooks en la documentación enumera los campos del payload de clic que vas a mapear.

Qué escribir, y dónde

Cuatro destinos, en orden ascendente de cuánta reflexión requieren.

  • Un custom object de clics. Click__c con lookups a Contact y Campaign, más enlace, parámetros de campaña, país, dispositivo y timestamp. Esta es la opción duradera; el reporting se mantiene rápido y el activity feed se mantiene legible.
  • El estado del campaign member. Mover a un miembro de Sent a Responded en el primer clic es la automatización más útil aquí, porque alimenta todos los informes de campaña que ya tienes.
  • Una task, con moderación. Útil para enlaces de alto valor donde un representante debería ver el contacto en su feed. Terrible como opción por defecto, porque unas pocas miles de tasks a la semana sepulta todo lo demás.
  • Un campo de rollup en el contact. La fecha del último clic y un conteo acumulado son baratos de mantener y responden a la mayoría de las preguntas que se hace un representante sin abrir una related list.

Mapea los parámetros de campaña a campos en lugar de parsearlos después. utm_campaign en el registro de clic es lo que permite que un informe de sales ops agrupe por campaña sin necesidad de ningún join.

Cuatro pasos de configuración para el seguimiento de clics en Salesforce, desde la creación del platform event, pasando por la verificación de firma, hasta la automatización del campaign member

El volumen es la restricción que nadie planifica

Los clics llegan en ráfagas. Una newsletter a cincuenta mil personas produce miles de clics en los primeros diez minutos, y una integración ingenua convierte cada uno en una llamada de API.

Las orgs de Salesforce tienen asignaciones diarias de API, y la publicación de platform events tiene sus propias cuotas. Vale la pena hacer la cuenta antes del lanzamiento y no durante él: el pico de clics por minuto frente a tu asignación, y la respuesta suele ser que las escrituras por clic no caben.

Tres salidas, en orden de preferencia. Publica solo threshold events, de modo que el CRM se entere del tercer clic y no de cada clic. Agrega en tu lado y escribe resúmenes por hora para el reporting a nivel de campaña. O agrupa por lotes, reteniendo eventos brevemente e insertando en bloque. Webhooks frente a polling para el seguimiento de clics cubre la disyuntiva cuando el volumen apunta enteramente en la otra dirección.

He visto que esto falla exactamente una vez, a las 9 de la mañana de un día de lanzamiento, y el arreglo bajo presión siempre es más tosco que el arreglo diseñado con antelación.

Probarlo antes de confiar en ello

Cinco comprobaciones. Envía un clic de prueba firmado y confirma que se convierte en un registro con la campaña adjunta. Envía el mismo clic dos veces y confirma que hay un solo registro. Envía un clic para un contact desconocido y confirma que aterriza como una fila sin atribuir en lugar de fallar. Reproduce un payload con una firma incorrecta y confirma un rechazo. Luego ejecuta una campaña real a bajo volumen y concilia el conteo del acortador con el conteo de registros para la misma ventana; una diferencia de unos pocos puntos porcentuales es la resolución de reintentos de entrega, una diferencia del treinta por ciento es un bug.

Lee la serie cornerstone

Este artículo forma parte del cluster de integraciones. Acortadores de URL para marketers es el cornerstone para el lado del reporting, y webhooks para eventos de enlace cubre las formas del payload en detalle.

Relacionado en el blog

Preguntas frecuentes

¿Salesforce rastrea los clics en enlaces de forma nativa?

Rastrea los clics en los enlaces que envió. Account Engagement reescribe los enlaces de sus correos a través de un subdominio de seguimiento y registra el clic en el prospect, y los custom redirects extienden eso a los enlaces que colocas en otros sitios. Cualquier cosa enviada fuera de esas herramientas, incluido el buzón propio de un representante, una campaña de SMS o un código impreso, no produce ningún clic en Salesforce.

¿Qué es un custom redirect en Account Engagement?

Un enlace rastreado generado dentro de Account Engagement que registra un clic como actividad en el registro del prospect. Funciona bien para anuncios en banner, publicaciones en redes sociales y archivos alojados en otro lugar. En la práctica importan dos límites: los clics repetidos del mismo prospect se limitan dentro de una ventana corta, y el enlace solo identifica a una persona cuando el visitante ya tiene cookie.

¿Cómo llevo los clics de un enlace corto a Salesforce?

Envía un webhook desde el acortador a Salesforce y escribe un registro. El patrón limpio es publicar un platform event y dejar que un suscriptor decida qué hacer con él, de modo que el clic termine como una fila de un custom object, una task o un cambio de estado de campaign member sin que tu integración sepa cuál. Verifica la firma, deduplica por el identificador del clic y agrupa por lotes bajo carga.

¿Se puede atribuir un clic a un contacto específico?

Solo si el enlace era exclusivo de ese contacto. Un único enlace de campaña en el que hacen clic cuatrocientas personas produce cuatrocientos clics anónimos, y nada en el payload cambia eso. Genera un enlace por destinatario cuando la atribución a nivel de persona importa, y acepta el reporting a nivel de campaña cuando no.

¿Los clics deben ser tasks o un custom object?

Un custom object, en cuanto el volumen sea real. Las tasks son cómodas porque aparecen en la activity timeline, y se convierten en ruido a partir de unas pocas miles de filas a la semana, además de inflar el almacenamiento. Un custom object de clics con un lookup a contact y campaign mantiene el reporting rápido y permite acumular conteos sin tocar el activity feed.

¿El volumen de clics agotará los límites de la API de Salesforce?

Puede hacerlo, y rápido. Una campaña con mucho tráfico produce más clics por hora que la asignación diaria de API de una org pequeña, así que escribir una llamada de API por clic es el error que hay que evitar. Agrega antes de enviar, publica threshold events en lugar de cada clic, o agrupa por lotes en un horario.

Prueba Elido

Pega una URL, obtén un enlace corto

Sin registro. El enlace vive 30 días. Crea una cuenta para conservarlo.

Gratis, sin registro · 2 por día

Prueba Elido

Acortador de URL alojado en la UE: dominios personalizados, análisis profundo y API abierta. Plan gratuito - sin tarjeta de crédito.

Etiquetas
salesforce link tracking
click tracking crm
platform events
custom redirects
webhooks
campaign member

Seguir leyendo