Cómo automatizar procesos con Mybooking y Make (Integromat)
Make, anteriormente Integromat, es una herramienta no code para la automatización de procesos. Con ella puedes conectar diversas aplicaciones, como Mybooking con Google Sheet, Mailchimp o un contacto a Hubspot para llevar determinadas acciones cuando se recibe una nueva reserva en Mybooking. En este artículo te explicaremos cómo añadir o actualizar filas en un Google Sheet con las nuevas reservas recibidas.
Algunos de nuestros clientes llegan a través de Agencias de marketing, freelances o estudios de diseño. En otras ocasiones, nuestros clientes quieren crecer y se ponen en contacto con estas empresas. Estos profesionales están acostumbrados a automatizar ciertas tareas para poder añadir los correos electrónicos a una Newsletter, a una plataforma de Marketing o a un CRM y evitar tener que estar extrayendo la información de forma manual de nuestra plataforma para cargarla en otras. Así fue como conocimos Zapier o Integromat. Nos pedían poder extraer los datos de forma automática de Mybooking para cargarlos en un Google Sheet o para conectarlo con otros sistemas. En Mybooking hemos desarrollado un sistema de Webhooks, que puedes activarlo por petición, que convierte Mybooking en una herramienta más en la cadena de automatización.
1. El escenario (Scenario)
El objetivo de este tutorial es añadir una fila a un Google Sheet cada vez que se crea una reserva en Mybooking.
¿Cómo traducimos este requerimiento a Make?
Es necesario crear un escenario, añadir una serie de componentes y conectarlos.
- Crearemos un Webhook que conectaremos desde Mybooking para notificar la creación/actualización de una reserva a Make.
- Añadiremos un Router que evalúa los datos del webhook y determina si ha de crear o actualizar la fila en un Google Sheet.
- Para añadir una fila a Google Sheet añadiremos el componente Google Sheet > Add Row
- Para actualizar una fila a un Google Sheet añadiremos 2 componentes, el componente para localizar la fila, Google Sheet > Search Rows y el componente para actualizar la fila > Google Sheets > Update Row.
2. Conectando Mybooking con Make
El primer paso es poder conectar Mybooking con Make de forma que Mybooking pueda conectarse con Make cada vez que se reciba una nueva reserva o bien se actualicen sus datos. Para poderlo llevar a cabo vamos a necesitar:
- Añadir un componente Webhook en Make.
- Conectar Mybooking con Make a través de Webhooks.
Una vez tengamos añadido el Webhook necesitamos conectarlo con Mybooking. Para esto copiaremos la dirección del webhook para poder crear una conexión desde Mybooking
A continuación, accederemos a Mybooking y en el menú de desarrolladores abriremos Webhooks. Desde aquí podemos añadir un nuevo punto de conexión y pegar la dirección que copiamos previamente desde Make. De esta forma, cada vez que se cree una nueva reserva o contrato en Mybooking se notificará a Make a través de este Webhook.
3. Añadir una fila a un Google Sheet al recibir una nueva reserva
El objetivo de este paso es poder crear una nueva fila en un Google Sheet cada vez que recibimos una notificación de nueva reserva a través del Webhook. Para esto va a ser necesario:
- Tener un Google Sheet creado en Google Drive
- Determinar cuando se trata de una nueva reserva ya que sólo las nuevas reservas van a generar una nueva fila.
- Conectar con Google Drive
- Hacer un mapping de los campos del webhook a las columnas del Google Sheet. Para ésto vamos a necesitar conocer el formato de los datos que se envían a través de Mybooking. Make es una herramienta muy potente que te va a ayudar.
3.1 Disponer de un Google Sheet o crear uno nuevo
Si no tienes un Google Sheet en el que ya tienes información de las reservas o de los clientes ves a Google Drive y crea uno nuevo. Será el documento con el que se conectará Make para añadir las nuevas filas.
3.2 Discriminar si se trata de una nueva reserva o una actualización
Volveremos a Make y en el Scenario añadiremos una nuevo componente, un Router. De esta forma podremos bifurcar el siguiente paso en función de si se trata de una nueva reserva o la actualización de una reserva existente.
3.3 Añadir una nueva fila a Google Sheet
Para añadir una fila a un Google Sheet se ha de utilizar el componente Google Sheet > Add Row. Podemos hacerlo en dos pasos:
- Primero añadir Google Sheet a favoritos, si no lo tenemos añadido todavía
- Hacer un click para añadir el componente específico. Una vez insertado lo conectaremos con el Router (ver las líneas entre los componentes)
Una vez tenemos los componentes insertados lo siguiente a hacer es configurar el componente:
- Conectar con la cuenta de Google
- Hacer un mapping de los datos del webhook y las columnas del Google Sheet
Al hacer un click sobre el componente Google Sheets podremos seleccionar una conexión existente o crear una nueva conexión con Google. Una vez conectado, podremos escoger el Spreadsheet (hoja de cálculo), el Sheet name (nombre de la página) y los Values (valores). En nuestro caso, la hoja de cálculo que hemos utilizado no tiene una fila con las cabeceras y lo indicaremos.
El último paso es hacer un mapping de los campos de la reserva a las columnas del Excel. Para el ejemplo queremos generar un hoja con la siguiente información :
Columna | Información | Campo Webhook |
---|---|---|
A | Número de reserva | data: object: id |
B | Fecha de inicio | data: object: date_from |
C | Hora de inicio | data: object: time_from |
D | Fecha de fin | data: object: date_to |
E | Hora de fin | data: object: time_to |
F | Lugar de entrega | data: object: pickup_place |
G | Lugar de devolución | data: object: return_place |
H | Importe total | data: object: total_cost |
I | Categoría – Código | data: object: reservation_lines[] : item_id |
J | Categoría – Descripción | data: object: reservation_lines[] : item_description |
K | Código de cliente | data: object: customer_id |
L | Nombre del cliente | data: object: customer_fullname |
M | Correo electrónico del cliente | data: object: customer_email |
N | Teléfono del cliente | data: object: customer_phone |
Por último aplicaremos un filtro en la conexión con Router y Google Sheet > Add Row de forma que procese aquellos mensajes cuyo atributo type reservation.created
4. Actualizar una fila a un Google Sheet al actualizar la información de una reserva en Mybooking
El último paso es poder actualizar una fila de Google Sheet cuando se actualiza una reserva.
- Obtener la fila a actualizar a partir del identificador de la reserva de Mybooking
- Actualizar la fila a partir de los datos del Webhook.
4.1 Buscar la fila a actualizar en Google Sheet
El objetivo es poder localizar la fila del excel por el id de la reserva de Mybooking. En el Google Sheet esta información se encuentra en la columna A.
Para esto añadiremos un componente Google Sheets > Search Rows y configuraremos los siguientes campos:
- Filter: Seleccionaremos la columna A e indicaremos que el valor sea igual al campo data: object: id del Webhook.
- Maximum number of returned rows: 1 ya que sólo habrá una fila por cada reserva
4.2 Actualizar la fila en Google Sheet
El objetivo es poder actualizar las filas de Google Sheet filtradas por el componente de búsqueda.
Para llevarlo a cabo, añadiremos un componente Google Sheet > Update Row, lo conectaremos con el componente de búsqueda y configuraremos los siguiente campos:
- Row Number: Este campo es importante ya que determina la fila a actualizar. Seleccionaremos el Row number de la Google Sheet > Search Rows.
- Table contains headers: En el ejemplo no ya que no tenemos una columna con los nombre de los campos.
- Values: Volver a aplicar los mismos campos que en la creación de una fila
Por último aplicaremos un filtro en la conexión con Router y Google Sheet > Search Rows de forma que procese aquellos mensajes cuyo atributo type reservation.updated
5. Formato de los datos notificados desde Mybooking
A continuación mostramos un ejemplo completo de los datos que se envía Mybooking a través del Webhook. Son todos los campos que pueden utilizarse.
{ "id": 1230, "object": "event", "type": "reservation.created", "data": { "object": { "id": 2197, "object": "reservation", "status": "pending_confirmation", "date_from": "2022-08-30", "time_from": "10:00", "pickup_place": "Aeropuerto de Mahón", "date_to": "2022-08-31", "time_to": "18:00", "return_place": "Aeropuerto de Mahón", "customer_id": 172, "customer_fullname": "Brad Stark", "customer_email": "info@mybooking.es", "customer_phone": "666101010", "rental_location_code": "MAHON", "sales_channel_code": null, "agency_id": null, "agency_reservation_id": null, "customer_language": "es", "days": 2, "hours": 0, "item_cost": "100.0", "extras_cost": "10.0", "time_from_cost": "0.0", "time_to_cost": "0.0", "pickup_place_cost": "10.0", "return_place_cost": "10.0", "driver_age_cost": "0.0", "category_supplement_1_cost": "0.0", "category_supplement_2_cost": "0.0", "category_supplement_3_cost": "0.0", "supplement_1_cost": "0.0", "supplement_2_cost": "0.0", "supplement_3_cost": "0.0", "total_cost": "130.0", "product_deposit_cost": "0.0", "driver_age_deposit": "0.0", "total_deposit": "0.0", "total_paid": "0.0", "total_pending": "130.0", "reservation_lines": [ { "id": 3119, "object": "reservation_line", "item_id": "B", "item_description": "Grupo B", "item_unit_cost_base": "100.0", "item_unit_cost": "100.0", "item_cost": "100.0", "quantity": 1, "product_deposit_unit_cost": "0.0", "product_deposit_cost": "0.0", "category_supplement_1_unit_cost": "0.0", "category_supplement_1_cost": "0.0", "category_supplement_2_unit_cost": "0.0", "category_supplement_2_cost": "0.0", "category_supplement_3_unit_cost": "0.0", "category_supplement_3_cost": "0.0", "reservation_line_resources": [ { "id": 3125, "object": "reservation_line_resource", "reference": null, "stock_plate": null } ] } ], "reservation_extras": [ { "id": 618, "object": "reservation_extra", "extra_id": "SEGURO-EXTRA", "extra_description": "Seguro Extra", "extra_unit_cost": "10.0", "quantity": 1, "extra_cost": "10.0" } ], "charges": [] } } }
6. Otros modelos de datos
Este ejemplo está adaptado al módulo de alquiler/alojamiento. Además, se notifican las reservas y mensajes de contacto recibidos:
Tipo de información | Type |
---|---|
Nueva reserva actividades | order.created |
Actualización reserva actividades | order.updated |
Mensaje de contacto | request_information.created |