Condividi tramite


Post invitado: Buscando la rentabilidad de campañas de marketing

Tenemos un nuevo post invitado, en este caso de la mano de José Ángel Fernández Ortiz, programador .NET en Ilitia Technologies. Hace poco, el equipo de José Ángel colaboró con Codere para ayudarles a analizar la rentabilidad de sus campañas de publicidad, para lo cual se apoyaron en Application Insights. En este artículo nos relata cómo fue su experiencia.

Regreso a Ilitia

Mientras subía las escaleras que llevaban a la oficina de Ilitia, repasaba mentalmente los obstáculos a los que nos habíamos enfrentado en el último proyecto. Nada fuera de lo commún: como ocurre a veces, lo que en un principio iba a ser un desarrollo con tecnologí­a interesante y una complejidad de negocio moderada, por muy buenas razones (siempre son buenas razones) se había complicado y habí­a resultado inesperadamente duro. Gracias a la profesionalidad y a la destreza técnica de mis compañeros, las dificultades se sortearon con elegancia, pero yo seguí­a dando vueltas a cómo podríamos haberlas detectado antes, ahorrándonos unos cuantos disgustos y dolores de cabeza. Entonces recordé las palabras de uno de mis mentores, un gran tipo, ante una situación similar: "Jose, si todos los que estamos involucrados en el proyecto, desarrolladores, gestores y cliente, nos pudiésemos instalar una DLL en la cabeza que nos dijera en qué estábamos pensando cada vez que hemos metido la pata, y además nos avisara cada vez que tenemos un derrape mental, otro gallo cantaría. Pero esto no es Matrix, así­ que sólo nos queda solucionarlo a base de sudor y buena voluntad. Pedazo de llorón".

Sumido en este recuerdo y con media sonrisa nostálgica en la cara, llamó al timbre de Ilitia.

Tras los saludos de rigor a compañeros y jefes, busqué un sitio libre, arranqué el ordenador y comencé a buscar cursos para renovarme en alguna tecnologí­a de las que tení­a en el radar: me parecía la mejor forma de recuperarme de las heridas sin tener la sensación de estar perdiendo el tiempo. Estaba en mitad de un vídeo sobre balanceadores de carga en Azure cuando Jon, director general de la empresa, se acercó a mi sitio:

- Jose, ve con Rubén a una de las salas, que te va a hablar de una pequeña colaboración que estamos llevando a cabo en un cliente. ¿Por qué miras a los lados?

Buscaba una escapatoria, pero no la había.

Application Insights

Una vez en la sala, Rubén decidió averiguar si yo estaba familiarizado con las tecnologí­as a utilizar en el proyecto:

- ¿Qué sabes de Application Insights?

Tras tragar saliva y carraspear, contesté con una de mis mejores sonrisas:

- He visto que, cuando creas un nuevo proyecto web en Visual Studio, hay una checkbox que te ofrece incorporar Application Insights a la solución.

- Vamos, que no tienes ni idea.

- Vamos, que no tengo ni idea.

Rubén miró al techo de la sala como quien se encomienda a las alturas, cogió aire, y me dio una introducción:

- Application Insights es un servicio de Microsoft que sirve para monitorizar aplicaciones. Permite medir cosas como número de sesiones y usuarios, peticiones web, tiempos de respuesta, errores... Y también indicadores de rendimiento de los servidores, como el uso de la CPU, de la RAM y del tráfico de red. Mejor que cualquier sistema de logging que hayamos usado hasta ahora, mucho más completo. Además, permite ver las métricas casi en directo: puedes montar dashboards en el portal de Azure con los datos que más te interesen, hacer que se te enví­en avisos cuando ocurran determinados eventos, y hasta puedes hacer consultas en caliente con el lenguaje Analytics, que recuerda un poco a T-SQL y a Linq.

 

- ¿Y es difícil de instalar en una aplicación?

- ¡Para nada! Ya sea en páginas de HTML puro y duro o en vistas de ASP.NET MVC o SharePoint, basta con pegar un código JavaScript que te proporciona el portal de Azure una vez has dado de alta tu aplicación en Application Insights. Y para la parte de servidor, hay un paquete de NuGet, o sea que la instalación es bastante sencilla.

Al oír que se podía instalar tanto en la parte de cliente como en la de servidor, me volvió el recuerdo de la DLL de la que me habló mi mentor:

-O sea, que se puede instalar tanto en cliente como en servidor... ¿Y se podría instalar en la cabeza de la gente?

Con la cara muy seria y mirándome fijamente a los ojos, Rubén me contestó:

-Para algunas personas en concreto vendría muy bien. Por cierto, ¿qué sabes del sector de las apuestas deportivas?

Apuestas deportivas

Al pensar en apuestas deportivas, lo primero que me vino a la cabeza fue lo que había visto en el cine: gangsters, cobradores de deudas, combates de boxeo amañados, ir siempre un paso por delante de la policía. Camino de la primera reunión con el cliente, no podía contener mi excitación:

- ¡No puedo creer que vaya a conocer al mismísimo Al Capone! Cuando lo cuente en casa no se lo van a creer.

Jon apartó por un momento su vista de la carretera para mirarme: yo iba en el asiento del copiloto. Tras un par de segundos de silencio, comenzó a hablar:

- No, Jose, no vamos a conocer a Al Capone. Olvida lo que has visto en las películas : las apuestas deportivas son legales en España, y mueven muchos millones de euros cada año. Gran parte de esos millones se juegan online, a través de aplicaciones web y móviles, y ahí­ es donde entramos nosotros: vamos a ayudar a la gente de Codere a sacar rendimiento a los datos que su aplicación Apuestas Deportivas está guardando en Application Insights.

Anunciarse es una apuesta

Ya en Codere, Carlos Garcí­a Sánchez, jefe de proyecto, y José Antonio Esteban Sánchez, director de tecnología, nos dieron los detalles de qué datos querían explotar. Comenzó José Antonio:

- En el sector de las apuestas deportivas la competencia es feroz. Esto hace que se destine una gran cantidad de dinero a campañas de publicidad. El problema es que es muy difí­cil saber cuánto dinero se ha aprovechado y cuánto se ha tirado a la basura.

- De hecho -apuntó Carlos-, hay una vieja cita al respecto: "La mitad del dinero que gasto en publicidad se desperdicia: el problema está en que no sé qué mitad es ésa".

Dicha cita, famosa en el sector de la publicidad, a menudo se atribuye a John Wanamaker, un hombre de negocios estadounidense que hizo fortuna en el siglo XIX y principios del XX con una cadena de grandes almacenes, y que es considerado uno de los padres del marketing moderno. En la época de Wanamaker se tenía la sensación de estar haciendo una apuesta cada vez que se poní­a un anuncio en el periódico, pues nunca se sabí­a a ciencia cierta qué campañas funcionaban ni por qué. El hecho de que la cita siga siendo célebre se debe a que la sensación de estar "jugándosela" cada vez que se lanza una campaña de publicidad nunca ha abandonado a los anunciantes.

José Antonio siguió exponiendo sus necesidades:

-Lo que nosotros queremos saber es cuál es la mitad buena, es decir, qué campañas están siendo efectivas. Y no nos sirven los informes que nos dan las empresas con las que contratamos la publicidad: ellos calculan el valor y la efectividad de una campaña de forma bastante... esotérica. Y cuando pides explicaciones, no suelen ser transparentes.

-Afortunadamente -prosiguió Carlos-, tenemos los medios para saber si una campaña ha funcionado o no. Nosotros tenemos claro cuándo una campaña es un éxito: cuando hace que se registren nuevos usuarios, y estos usuarios ingresan dinero en sus carteras virtuales para poder empezar a apostar. El flujo es el siguiente: una persona que está fuera de nuestro sistema, navegando por internet, se encuentra con publicidad de una campaña de Codere; pincha sobre la publicidad y es conducido a la landing page de la campaña, que ya está dentro de nuestro sistema; si, una vez en nuestro sistema, se registra y, aún mejor, deposita dinero, y además esto lo hace no una sola persona, sino un gran número de personas, la campaña ha sido un éxito. Si, por el contrario, poca gente llega hasta la landing page, aún menos gente se registra, y menos aún deposita dinero, la campaña ha sido un fracaso.

-¿Y toda esta información la estás guardando en vuestra aplicación? -pregunté.

-Toda esta información la estamos guardando en Application Insights. Por suerte, Application Insights es extensible, por lo que aparte de generar datos de uso y rendimiento predeterminados, podemos guardar nuestros propios datos personalizados mediante custom events. Así­, para cada usuario o, más bien, para cada identificador de sesión, estamos guardando: llegada a una landing page, inicio de registro del usuario, registro completado, y depósito de dinero. Como cada landing page está asociada a una determinada campaña, y cada campaña la contratamos con una agencia, podremos saber si la labor de una agencia ha sido rentable comparando lo que nos ha costado la campaña con el dinero que han depositado los usuarios que han accedido al sistema mediante la landing page de la campaña. Y, yendo un paso más allá, como también se está guardando el URL referrer cada vez que se visita una landing, podrí­amos saber en qué tipos de sites es más rentable colocar anuncios: periódicos, redes sociales, foros, etc.

-¿Y los datos los vamos a consultar directamente en Application Insights?

-En principio no. Application Insights permite exportar los datos de forma continua, y nosotros hemos creado un proceso que hace que dichos datos acaben en una base de datos de Azure SQL. La tenemos abierta para que la puedan consultar las agencias, y la idea es que extraigáis los datos de ahí­. El problema está en que el rendimiento de la base de datos no está siendo bueno, y no tenemos tiempo de analizar por qué está siendo así­.

Con las cosas mucho más claras gracias a José Antonio y Carlos, y con un riesgo en el radar, volvimos a Ilitia para ponernos manos a la obra.

Solución técnica

El planteamiento técnico del proyecto estaba claro: mediante un webjob que se ejecutaría periódicamente extraeríamos la información de la base de datos que contenía la información de Application Insights, y los agregaríamos de modo que, para cada campaña, supiésemos cuántos usuarios habían llegado a la landing page, cuántos habí­an comenzado el registro, cuántos habían llegado a completarlo, y cuántos habí­an depositado dinero; dichos datos agregados se guardarían en una base de datos secundaria, y se mostrarían a los interesados mediante una aplicación web. Como en Codere ya disponían de un dashboard con numerosas gráficas hechas con Canvas.js, nosotros decidimos utilizar en nuestra aplicación una librería de JavaScript similar, Chart.js, montando un widget integrable en el dashboard de Codere, y una página accesible desde el widget con la información desglosada.

Con la ayuda de nuestro talentosísimo diseñador Isaac, hicimos algunas pruebas de concepto con Chart.js, y comenzamos a avanzar a muy buen ritmo con la extracción de datos y su representación. Solventamos unos cuantos problemas menores, contando con la ayuda incondicional de José Antonio y Carlos, que siempre estuvieron dispuestos a resolvernos cualquier duda. Por desgracia, a medida que se acercaba la fecha de entrega, comprobamos que las consultas contra la base de datos que contenía la información de Application Insights eran cada vez más lentas, hasta llegar a un punto insostenible.

-Carlos, tenemos un problema.

-La base de datos, ¿verdad?

-Eso es.

Tal y como nos tenía acostumbrados ante cualquier dificultad, Carlos teí­a preparado un capote:

-Sabíamos que teí­na que pasar, así­ que he hecho una prueba de concepto contra la API REST de Application Insights. Se le pueden enviar consultas escritas en Analytics, y devuelve al instante la información que nuestra base de datos, por alguna extraña razón, tarda minutos en devolver. Lo mejor va a ser cambiar la capa de acceso a datos para que deje de atacar la base de datos y empiece a consumir la REST API. Te enví­o un ejemplo.

Cambiamos la extracción de datos para consumir la API, y los tiempos de ejecución del webjob se redujeron considerablemente, por lo que desplegamos el proyecto en la cuenta de Azure del cliente, y acabamos con la impresión de haber resuelto un problema considerable con una solución relativamente sencilla.

-Esto va a sernos muy útil -se despidió Carlos.

-Por fin vamos a saber qué mitad del gasto en publicidad es la mitad buena -puntualizó José Antonio.

De vuelta en Ilitia, tuvimos una pequeña reunión para hablar del proyecto.

Conclusiones

-¿Qué has sacado de todo esto? me preguntó Jon.

-Para empezar, me he familiarizado un poco con el mundo de las apuestas deportivas, lo cual no viene mal. No sabí­a que fuese un negocio tan instaurado ni que moviese tanto dinero. Y hemos desarrollado una solución para valorar la rentabilidad de una campaña de marketing, que es un problema que siempre han tenido los anunciantes, por lo que dirí­a que el proyecto aporta bastante valor. Además, he tenido ocasión de familiarizarme con tecnologí­as que no había tocado hasta ahora: Chart.js es una librería fácil de utilizar, por lo que deberemos tenerla en cuenta en el futuro; pero lo que ha sido una pasada es la potencia y la versatilidad de Application Insights. Además, es muy, muy fácil de instalar en las aplicaciones, tanto en la parte de servidor como en la de cliente. Sin embargo, hay una cosa que no me ha quedado clara.

-¿El qué?

-¿Se puede o no instalar en la cabeza de las personas?

-Vete a estudiar Azure.

-Asusórdenes.

 

José Ángel Fernández Ortiz

Ilitia Technologies