Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SeedRocket - Instrumentación de Producto (101)

Productiza.me
November 15, 2018

SeedRocket - Instrumentación de Producto (101)

Productiza.me

November 15, 2018
Tweet

Other Decks in Technology

Transcript

  1. ¿Por qué querríamos almacenar todas las interacciones de nuestros usuarios?

    •Para consolidar datos de forma única y confiar plenamente en ellos •Actualizar KPIs en tiempo real •Tener insights con los que mejorar nuestro producto •Ver un timeline de las acciones de nuestros usuarios •Crear tareas para ventas y soporte de forma automatizada 2
  2. ¿No tenemos ya hoy esa información en nuestra base de

    datos? •Probablemente no. En tu base de datos guardas principalmente objetos y relaciones entre ellos, pensando más en dar un servicio que en generar informes •Si *dominas SQL*, puedes hacer consultas que te devuelven detalles sobre los objetos, métricas de los mismos, o informes con estados y/o totales… pero no puedes obtener respuestas a consultas complejas de forma directa: • ¿Por qué cayó la conversión la semana pasada? • ¿Cuál es el camino más habitual entre los usuarios que convierten? ¿En qué momento abandonan el resto? • ¿Qué campaña de captación me está dando mayores retornos? etc,etc,etc… 3 Demo
  3. Madurez 4 No se recogen métricas, o los datos no

    son fiables :( Informes básicos bajo demanda. SQL es la principal interfaz Informes dinámicos segmentados y datos unificados en diferentes servicios Tareas y eventos generados automágicamente
  4. 9

  5. Hipótesis •La webapp no les carga •La webapp les carga,

    pero el JS falla en algún punto •La webapp carga, el JS no falla, pero no saben por dónde empezar 10
  6. Hipótesis •La webapp no les carga •La webapp les carga,

    pero el JS falla en algún punto •La webapp carga, el JS no falla, pero no saben por dónde empezar •La webapp carga, el JS no falla, saben cómo crear un widget pero no tenemos servicios que les interesen 10
  7. Hipótesis •La webapp no les carga •La webapp les carga,

    pero el JS falla en algún punto •La webapp carga, el JS no falla, pero no saben por dónde empezar •La webapp carga, el JS no falla, saben cómo crear un widget pero no tenemos servicios que les interesen •La webapp carga, el JS no falla, saben cómo crear un widget, tenemos servicios que les interesan pero no pueden crear una integración con el servicio 10
  8. Hipótesis •La webapp no les carga •La webapp les carga,

    pero el JS falla en algún punto •La webapp carga, el JS no falla, pero no saben por dónde empezar •La webapp carga, el JS no falla, saben cómo crear un widget pero no tenemos servicios que les interesen •La webapp carga, el JS no falla, saben cómo crear un widget, tenemos servicios que les interesan pero no pueden crear una integración con el servicio •… 10
  9. Hipótesis •La webapp no les carga •La webapp les carga,

    pero el JS falla en algún punto •La webapp carga, el JS no falla, pero no saben por dónde empezar •La webapp carga, el JS no falla, saben cómo crear un widget pero no tenemos servicios que les interesen •La webapp carga, el JS no falla, saben cómo crear un widget, tenemos servicios que les interesan pero no pueden crear una integración con el servicio •… •Etc, etc hasta completar el proceso de creación de widgets 10
  10. 11 0 25 50 75 100 Fallo 
 general Error

    
 JS UX 
 botón (+) Servicios 
 interesantes Integración etc… widget
 creado
  11. 11 0 25 50 75 100 Fallo 
 general Error

    
 JS UX 
 botón (+) Servicios 
 interesantes Integración etc… widget
 creado
  12. 11 0 25 50 75 100 Fallo 
 general Error

    
 JS UX 
 botón (+) Servicios 
 interesantes Integración etc… widget
 creado
  13. 11 0 25 50 75 100 Fallo 
 general Error

    
 JS UX 
 botón (+) Servicios 
 interesantes Integración etc… widget
 creado
  14. 11 0 25 50 75 100 Fallo 
 general Error

    
 JS UX 
 botón (+) Servicios 
 interesantes Integración etc… widget
 creado
  15. 11 0 25 50 75 100 Fallo 
 general Error

    
 JS UX 
 botón (+) Servicios 
 interesantes Integración etc… widget
 creado
  16. 11 0 25 50 75 100 Fallo 
 general Error

    
 JS UX 
 botón (+) Servicios 
 interesantes Integración etc… widget
 creado
  17. 11 0 25 50 75 100 Fallo 
 general Error

    
 JS UX 
 botón (+) Servicios 
 interesantes Integración etc… widget
 creado
  18. 12

  19. Pasos a seguir •Definir objetivos •Análisis del estado actual •Especificar

    un esquema de datos •Intrumentar nuestra aplicación •Implementar flujos de datos entre herramientas •Crear tareas automatizadas •Generación de informes y/o paneles 13
  20. Definamos objetivos •¿Qué esperamos conseguir de este proceso? • ¿Tener

    reporting fiable? • ¿Dar inteligencia a producto y/o marketing? • ¿Conocer los principales KPIs? • ¿Automatizar tareas en el backend? • ¿Mejorar el onboarding y el lifecycle? • … 14
  21. Definamos objetivos •¿Tenemos recursos suficientes? • Financieros, para pagar más

    herramientas • Tiempo de desarrollo y **gestión de proyecto** •¿Podemos empezar por las principales KPIs e ir expandiendo? •¿Hay algún quick-win que podamos conseguir fácilmente? •BriConsejo: implementar lo necesario para el AARRR framework 15
  22. Análisis Previo •Inventario de fuentes de tráfico •Inventario de fuentes

    de datos •Inventario de servicios (usados y necesitados) •Revisar el workflow del producto • Sign-up • Activación • Conversión • Principales features • Acciones relevantes •Requisitos para las herramientas a usar •Decidir KPIs y Dashboards 16
  23. Ejemplo: atribuir conversiones por campañas •Hemos de guardar la campaña

    que nos trae a cada usuario (guardar los registros UTM en el momento del sign-up) •Conocer el momento y el importe de la conversión •Conocer el gasto total de la campaña y otros signups y conversiones para calcular el UAC y CAC •Compartir los datos en una herramienta de BI a la que sólo se pueda acceder desde la IP de la empresa •Guardar datos agregados en un spreadsheet que compartir con el board 17
  24. Esquema de Datos •Tenemos (al menos) 2 tipos de objetos:

    eventos y usuarios. Cada uno requerirá de parámetros diferentes. •Los parámetros son, simplificando, parecidos a las columnas de una BBDD. •Hemos de revisar el tipo de datos para simplificarlo/unificarlo (por ej, podemos tener problemas con arrays, con coordenadas, etc). •Hay que tener en cuenta que algunas herramientas: • Permiten extender los parámetros de los eventos, incluyendo los del usuario que los genera • Capturan automáticamente parámetros necesarios (ip, timestamp, device, sessionID, etc) 18
  25. Ejemplo: Esquema de datos - eventos • Event Name: •

    Category: • Event: • Event Type • Src: • Version: • Global params: (además del userId) • Category params: • Event params: 20
  26. Ejemplo: Esquema de datos - eventos • Event Name: Billing

    - UI Error • Category: Billing • Event: UI Error • Event Type: error • Src: android • Version: 4.1.7.stable • Global params: orgId, (userId) • Category params: • Event params: errorMessage, errorTrace 21
  27. Esquema de datos: Recomendaciones •Documéntalo todo •Sólo un grupo pequeño

    de personas debieran poder modificar el esquema (1xProd, 1xDev, 1xMkt). Igual 3 son muchos •Todo despliegue a producción relacionado con la instrumentación, debiera necesitar el sidekick de un responsable •Enlaza desde el esquema a los commits que instrumentan cada evento •Apunta si algún evento debiera disparar otro de forma automática •Recuerda documentarlo todo 23
  28. Flujo de datos entre herramientas •Necesitamos: •Datos estandarizados (oh!) •Un

    servicio para canalizar los datos a múltiples servicios • Se acabaron los procesos nocturnos de hacer ETL entre servicios •Sugerencias: •Escoge servicios que permitan enviar y/o recibir webhooks para automatizar tareas •Guarda todos los eventos en una BBDD 25
  29. 26

  30. 27

  31. Tareas automatizadas: webhooks a Integromat 29 Marcamos el deal como

    cerrado Envíamos por curl un webhook a IFTTT que hace sonar un altavoz en la oficina :) Crea tareas en el CRM asignando la máxima prioridad Avanzamos el deal en el pipeline al estado “Firmando”. Si se mantiene 24h ahí se ejecutan otras tareas
  32. Ej: Daily Check •Daily Check • % visit to sign

    up • New visitors • New users (segmented) • DAUs • Warnings (segmented • Exceptions (segmented) 31
  33. Resumiendo •Empezar a instrumentar en detalle tu servicio es la

    mejor decisión que puedes tomar hoy •Nombra a una persona responsable (en ambos sentidos) para documentar y mantener el esquema de datos •Empieza con quick-wins y tus principales KPIs •Y usa los datos para automatizar todas las tareas que puedas 32