Pregúntele a un desarrollador: Elliott Millar, desarrollador sénior de software de myDNA, sobre la integración de Braze, el aprovechamiento de AWS EventBridge y la priorización de la investigación previa al proyecto

Publicado: 2022-04-30

Los desarrolladores juegan un papel clave para garantizar que nuestros clientes puedan integrarse sin problemas y aprovechar la plataforma Braze para respaldar sus esfuerzos de marketing. Para obtener más información sobre el trabajo que realizan los desarrolladores en relación con Braze y cómo son sus experiencias, me senté con Elliott Millar, desarrollador sénior de software en myDNA, una marca líder en bienestar genético. Esto es lo que tenía que decir*:

¿Puedes contarnos un poco sobre myDNA y tu papel allí?

myDNA es una empresa de bienestar genético con sede en Melbourne, Australia. Damos consejos a las personas en función de sus resultados genéticos. Nuestros clientes simplemente nos envían su frotis bucal y nosotros procesamos sus resultados de ADN y les brindamos sus conocimientos y recomendaciones de ADN para trabajar con su genética.

myDNA comenzó con productos farmacogenómicos, que pueden ayudar a los profesionales de la salud a recetar los medicamentos de sus pacientes con mayor precisión, y esto ha marcado una gran diferencia en muchas vidas. Ahora hay una gran cantidad de investigaciones ricas en ADN que muestran cómo la genética afecta aspectos de nuestro bienestar como la dieta, el ejercicio, el sueño y el envejecimiento de la piel, por nombrar algunos, por lo que myDNA ahora también tiene un producto de bienestar general; ese producto brinda a las personas información y recomendaciones sobre su ADN, además de planes personalizados de alimentación y acondicionamiento físico basados ​​en sus resultados genéticos a través de nuestra aplicación myDNA Unlocked. Aquí es donde entra Braze. Usamos Braze para ofrecer este contenido personalizado a nuestros clientes a través de la aplicación para ayudarlos a cambiar sus comportamientos y lograr sus objetivos de bienestar.

Soy el desarrollador de software sénior en myDNA. Llevo en el cargo desde octubre y uno de los primeros proyectos que lideré fue integrar Braze en myDNA Unlocked. Soy un desarrollador full-stack, por lo que puedo trabajar en prácticamente cualquier cosa en nuestro paquete de software, ya sea accediendo a una base de datos SQL, configurando nuestro backend .net, haciendo cosas con React Native o tratando con Objective-C. Realmente no importa, déjame caer donde sea.

Mencionaste que la integración de Braze fue uno de tus primeros proyectos en myDNA. ¿Puedes hablar sobre cómo fue la línea de tiempo de ese proyecto?

Bueno, lo recogí en noviembre y el proceso terminó demorándose tres meses y pico, sin contar las vacaciones de invierno. Eso es empezar una vez que el proyecto estuvo en mis manos. Antes de involucrarme, hubo un proceso de incorporación en el que trabajaron para configurar qué eventos personalizados y atributos personalizados se recopilarían con Braze, de modo que todo eso estuviera preparado cuando comenzáramos. Creo que eso fue unas seis u ocho semanas antes de que comenzara con el proyecto.

¿Hizo alguna investigación antes de comenzar con el proyecto de integración de Braze?

Hice una cantidad loca de investigación. Vi algo así como 20 horas de videos en LAB [Learning at Braze] y leí tantas páginas de documentación (hay una cantidad asombrosa) porque necesitaba saber todo sobre este software; ¿De qué otra manera podría saber si está funcionando o qué se supone que debe hacer? También necesitaba saberlo todo desde la perspectiva de nuestro equipo de experiencia del cliente (CX), ya que ellos son los principales propietarios de Braze. ¿Cómo vamos a usarlo realmente? ¿Cómo funciona con iOS y Android? Al principio, no estaba muy seguro de quién iba a participar en este proyecto, y si estoy liderando un proyecto, necesito saber todo sobre lo que está pasando para poder asignar trabajo, averiguarlo todo y obtener estimaciones adecuadas.

Así que revisé los tutoriales sobre la personalización de Liquid, el contenido conectado, los atributos personalizados y los eventos personalizados, cómo integrar, qué es el calentamiento de IP y cómo hacerlo, cómo abordar el cebado de inserción, ese tipo de cosas. Aprendí muchas cosas diferentes a tener en cuenta con el contenido conectado, como el riesgo de destruir sus propias API o cómo debe usar deltas, en lugar de masticar 450 millones de puntos de datos solo porque suceden cosas en sus sistemas. Y en la documentación, hay de todo, desde cómo configurar sus webhooks hasta cómo funcionan las API y los SDK de Braze.

Y cuando terminé, fui y creé una sección en nuestra Confluencia para básicamente filtrar toda esta información que estaba recibiendo de Braze en un buen formato consumible para los otros desarrolladores. De esa manera, incluso si necesitaban ponerse al día en 24 horas, toda la información que necesitaban estaba en una ubicación central. Siempre construí un documento masivo que diagramaba nuestra integración con Braze, basado en toda la investigación que había hecho. Entonces, cuando llegó el momento de hacerlo, me sentí preparado.

¿Puede hablar un poco sobre por qué se tomó la decisión de integrar Braze?

Con Braze, el caso de negocios y todo se hizo mucho antes de mi tiempo en myDNA. Pero desde mi perspectiva, hay un gran beneficio en darle las riendas a nuestro equipo de CX y permitirles realmente interactuar con los clientes directamente, sin ninguna interacción o intervención de los desarrolladores. Nuestro antiguo enfoque requería mucho trabajo de desarrollo para implementar y permitir que salieran nuevas funciones, lo que dificultaba que el equipo de CX controlara qué interacciones y contenido se enviaba a los usuarios.

Como parte de ese proceso, básicamente descubrimos que había tres puntos de contacto principales que teníamos que resolver cuando se trataba de aprovechar Braze:

  • Instalación del SDK en nuestra aplicación móvil para respaldar el control del equipo de CX sobre la mensajería

  • Administración de datos sensibles al tiempo y de movimiento rápido mediante la conexión de Braze a AWS EventBridge

  • Manejo de datos menos urgentes mediante el uso de Braze junto con Hightouch, FiveTran y otras tecnologías

¿Puede guiarnos a través de ese primer punto de contacto, el relacionado con el SDK y la mensajería?

Bueno, antes de integrar Braze en nuestra aplicación móvil, habíamos estado usando Expo, que es una herramienta que usamos para empaquetar nuestra aplicación e implementarla en la App Store de Apple y en Google Play. Braze no es compatible con Expo, por lo que antes de que pudiéramos integrarnos con Braze, tuvimos que expulsar Expo y comenzar a usar un flujo de trabajo básico. Eso significó una cantidad decente de deuda tecnológica que tuvimos que manejar, como configurar una tubería de nueva construcción. Además, en nuestro caso, tuvimos que integrar Objective-C para iOS y Java para Android, así como React Native, para que todo funcionara. Fue una gran cantidad de trabajo, pero teníamos un gran equipo interno para ayudar y hacer que todo sucediera. [ Nota: Braze actualizó recientemente nuestros SDK de iOS y Android para aprovechar Swift y Kotlin, respectivamente.]

Implementamos la aplicación móvil y todo funcionó, sin dramas, lo cual fue genial. Y una vez que ejecutamos el SDK de Braze en nuestra aplicación móvil, eso significaba que podíamos usarlo para capturar toda la participación de los usuarios que sucedía allí. Por lo tanto, activa eventos personalizados cuando los usuarios interactúan con el sistema y, obviamente, también recibe ayuda para informar y potenciar todos los diferentes canales de mensajería que utiliza el equipo de CX, como notificaciones automáticas, mensajes en la aplicación, tarjetas de contenido, todos. de esas cosas buenas.

En ese momento, pudimos trasladar nuestro viaje posterior a la comprensión a Braze. Así es como llamamos al flujo que ocurre después de que uno de nuestros clientes obtiene sus resultados de ADN. Queremos que nuestro equipo de CX pueda interactuar con esos clientes, felicitarlos realmente cuando están haciendo un buen trabajo en la planificación de sus comidas, su planificación de ejercicios, todas esas cosas buenas. El equipo de CX está creando algunos lienzos increíbles para iniciar diferentes viajes de usuario a través de mensajes push en la aplicación, tarjetas de contenido y correos electrónicos.

Tuvimos algunos problemas con las notificaciones automáticas al principio, relacionados con la eyección de la Expo, pero logramos encontrar una forma realmente increíble de solucionarlos mediante AWS EventBridge. Por lo tanto, en lugar de enviar notificaciones automáticas a través de Expo, simplemente las canalizamos a nuestra canalización de EventBridge, de modo que cuando Braze dice, hey, tengo un evento personalizado para enviar con nuestro impulso, el mensaje se envía con contenido dinámico. Eso evitó el problema relacionado con Expo, porque tan pronto como un usuario tenga una actualización relevante, Braze tomará el token de inserción y se irá. Pero antes de que esos viajes previos y posteriores a Insight se migraran a Braze, todo pudo seguir funcionando como estaba a través del CRM.

Hablando de EventBridge, ¿puede hablar un poco sobre cómo lo está usando en relación con Braze?

Bueno, todo comenzó cuando estaba pensando en qué tipo de datos íbamos a necesitar para obtener cuando se trataba de Braze. En esencia, hay dos subconjuntos diferentes de datos que tuvimos que averiguar. Están las cosas realmente críticas que deben ingresar a Braze lo antes posible: esos son sus datos oportunos y de rápido movimiento. Por otro lado, también hay datos adicionales que realmente no son tan sensibles al tiempo, pero aún deben transferirse a Braze. Para las cosas de movimiento lento, puede pasar por nuestra sincronización de datos Hightouch, que abordaré más adelante. Pero para los datos que se mueven rápidamente, decidimos aprovechar EventBridge.

¿Qué son los datos de rápido movimiento? Bueno, cuando alguien se registra para nuestro producto, necesitamos que reciba un correo electrónico de bienvenida de Braze lo antes posible. Tenemos una función de paso de registro que maneja todo este proceso de diferentes cosas que podrían activarse para un nuevo usuario que se está registrando. Como parte de eso, cuando el usuario está configurado en nuestro CRM, necesitamos que toda esa información vaya a Braze, para que el usuario pueda comenzar a recibir contenido, como ese correo electrónico de bienvenida. Así que tenemos que encontrar una manera de transmitir esos datos.

Al final resultó que, EventBridge funciona muy bien para ese caso de uso. Creamos un nuevo repositorio de eventos que aloja esa arquitectura de AWS, y debido a que usamos AWS CDK [Cloud Development Kit] para toda nuestra configuración e implementación, hacerlo fue muy fácil. Acabamos de crear un bus de eventos myDNA en AWS, y dijimos que si desea suscribirse a él, todo lo que tiene que hacer es escribir una nueva regla en su CDK para el servicio particular que está ejecutando, adjuntarla a ese bus. , y luego, para cualquier cosa que llegue a ese bus, haremos el mapeo de patrones estándar.

Con este enfoque, tenemos un servicio de Braze en ejecución que dice, oye, quiero escuchar los eventos clave de los usuarios, como actualizaciones de pedidos, registros de clientes y un puñado de otras cosas específicas, y quiero que esos datos lleguen a Braze, pero sin que todos esos diferentes microservicios estén vinculados a Braze. EventBridge lo hace posible. Además, tenemos una calle de doble sentido en marcha. Entonces, ya sea que estemos moviendo datos a Braze o que se activen webhooks desde Braze, todos pueden pasar por la arquitectura principal de EventBridge.

Tenemos un punto de entrada específico para Braze utilizado por un webhook de Braze, que simplemente envía un evento a EventBridge y dice, oye, quiero iniciar este evento en particular para este usuario con estos parámetros. Y luego, sean cuales sean los servicios que tenemos sentados allí, pueden escuchar eso, luego suscribirse y luego iniciar lo que quieran.

Así que ahora tenemos esta increíble arquitectura configurada donde podemos enviar cosas a Braze que están desvinculadas de todo lo demás. Entonces, nuestra función de paso de registro se activará y dirá, hey, creé un nuevo usuario, y nuestro servicio Braze lo recibirá. Y ejecuta una función de paso que dice, hey, voy a hacer XYZ y luego enviarlo a Braze. Como parte de eso, tenemos un patrón de devolución de llamada; después de todo, si la configuración de Braze falla, es una falla crítica, ya que no podemos completar con éxito el registro sin que Braze cree ese usuario. De esta forma, si la tarea Braze falla, la función de paso para el registro general falla. Y AWS se encarga de todo bajo el capó, lo cual es genial.

Algo que no he mencionado es que necesitábamos un punto de entrada para Braze. Estábamos buscando entregar las llaves al equipo de CX para que puedan tener control sobre qué acciones se activan en nuestra aplicación. Una de esas acciones fue la publicación de ideas. Ese viaje estaba realmente ligado a nuestro CRM; diría, básicamente, aquí están nuestros eventos de participación, en este día publique esta información, tres días después publique esta información, etc. Y queríamos cambiar ese viaje para que sea más dinámico para los usuarios. .

Para que eso sucediera como parte de una campaña de Braze o Canvas, necesitábamos poder mostrar ideas de manera individual a los usuarios, y eso significaba encontrar una manera de llegar a algún punto final en nuestro servicio para transferir la información correcta. Afortunadamente, Braze tiene dos características increíbles para que eso suceda: webhooks y contenido conectado.

Durante la integración, estuvimos garabateando, tratando de descubrir cómo hacerlo. Y me topé con este video de AWS que era, literalmente, nuestro caso de uso exacto: ¿cómo se activa un webhook desde un servicio externo que desencadenará un evento en EventBridge? Terminó siendo un video tutorial paso a paso que literalmente lo guía a través de cómo crear la puerta de enlace API y configurar la plantilla de mapeo correcta. Y si lo sigue, este enfoque le permitirá tomar la entrada del cuerpo, asignarla a un objeto de detalle de EventBridge y luego enviarla a su bus y eso es todo; ahora está fuertemente protegido con una clave API. Ahora tiene un punto de entrada al que cualquiera puede enviar datos en el formato que desee con esa autenticación, y se disparará a su bus de eventos. Y dijimos: "Esto es perfecto".

¿Qué puede decirnos sobre el punto de contacto tres y cómo está usando Braze y su sincronización de datos Hightouch?

El tercer punto de contacto es súper simple. Solo usa Hightouch, Fivetran y algunas otras tecnologías para recopilar datos de otras ubicaciones, transformarlos en un buen formato compatible con el almacén de datos y luego canalizarlos a Braze de manera continua.

Esto realmente está destinado a los datos de movimiento lento de los que hablé anteriormente; es decir, cosas que es importante tener pero que no se vuelven menos importantes con el tiempo, o metadatos adicionales, ya sabes, como el grupo de edad de un usuario, que se usarán en algún momento pero no son necesarios en el momento. Debido a que la información no es urgente, la configuramos para que la sincronización se inicie y solo pregunte, básicamente, ¿ha cambiado algo? ¿Sí? Genial, aquí están los deltas. ¿No? Entonces no hagas nada.

Pensamientos finales

¿Está interesado en profundizar en el aspecto técnico de la plataforma Braze? Obtenga historias, aprendizajes y conocimientos exclusivos directamente de nuestra organización de productos, diseño e ingeniería (PDE) en el blog del producto Building Braze y explore los entresijos de nuestro producto con la documentación de Braze .

*Esta conversión ha sido editada por motivos de extensión y claridad.