InicioHelpAutomatizar procesos con Mybooking y Make

Automatizar procesos con Mybooking y Make

Make es una herramienta no code para la automatización de procesos con la que puedes conectar Mybooking y Google Sheet para guardar los datos cuando se recibe una nueva reserva

Sisio web de Make, antes llamado Integromat

Make es una herramienta para automatizar procesos que no requiere saber programación y que tiene una cuenta gratuita que podemos usar para mejorar nuestra operativa de reservas conectándola con un proceso automatizado.

Algunos de nuestros clientes llegan a través de agencias de marketing, freelances o estudios de diseño. 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. Mybooking proporciona un sistema de webhooks, que puedes activarlo por petición, que te permite conectarlo con Make.

El objetivo de este tutorial es mostrarte cómo añadir una fila a un Google Sheet cada vez que se crea una reserva en Mybooking.

Crear el escenario


El escenario es un área de trabajo dentro de Make donde añadimos los componentes necesarios para la automatización que queremos desarrollar.

Es necesario crear un escenario, añadir una serie de componentes y conectarlos.

  1. Creamos un escenario
  2. Creamos un webhook que conectaremos desde Mybooking para notificar la creación/actualización de una reserva a Make
  3. 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
  4. Añadimos el componente Google Sheet -> Add Row
  5. Añadimos Google Sheet -> Search Rows y Google Sheets -> Update Row para buscar y actualizar las filas

Conectar Mybooking con Make


El primer paso es conectar Mybooking con Make para que cada vez que se reciba una nueva reserva se actualicen los datos que queremos guardar en nuestro documento de Google Sheets. Para poderlo llevar a cabo vamos a necesitar:

  • Añadir un componente webhook en Make.
  • Crear un punto de conexión en Mybooking

Una vez añadido el webhook debemos copiar la dirección para conectarlo con Mybooking:

5-escenario-make-espera-webhook
Copiar la dirección para conectarlo para poder configurar el webhook en Mybooking

A continuación, accederemos a Mybooking y nos dirigimos a Desarrolladores -> Webhooks, añadimos un nuevo punto de conexión y pegamos la dirección que copiamos previamente desde Make.

Añadir punto de conexión con un webhook en mybooking
Creando un punto de conexión en Mybooking para notificar a 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.

Conectar Google Sheet


El siguiente paso es un documento en Google Sheet donde crear una nueva fila cada vez que recibimos una notificación de nueva reserva. Los pasos que seguiremos son los siguientes:

  • Crear un documento Google Sheet en tu cuenta de Google Drive
  • Determinar cuando se trata de una nueva reserva
  • Conectar Make con Google Sheet
  • Replicar los campos del webhook a las columnas del Google Sheet

1- Crear un documento de Google Sheet

Entra en tu cuenta de Google Drive y crea un nuevo documento de Google Sheets, este será el documento con el que se conectará Make para añadir las nuevas filas.

2- Discriminar si se trata de una nueva reserva o una actualización

Volveremos a Make y en el Scenario añadiremos un nuevo 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.

7-anadir-router-make
Añadir un Router para determinar si se trata de una nueva reserva o una actualización

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:

  • 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 Google Sheet. Para el ejemplo queremos generar un hoja con la siguiente información :

14-formato-make-google-sheet-columnas
Google Sheet con los datos
15-formato-make-google-sheet-columnas
Mapping de campos del Webhook con Google Sheet
ColumnaInformaciónCampo Webhook
ANúmero de reservadata: object: id
BFecha de iniciodata: object: date_from
CHora de iniciodata: object: time_from
DFecha de findata: object: date_to
EHora de findata: object: time_to
FLugar de entregadata: object: pickup_place
GLugar de devolucióndata: object: return_place
HImporte totaldata: object: total_cost
ICategoría – Códigodata: object: reservation_lines[] : item_id
JCategoría – Descripcióndata: object: reservation_lines[] : item_description
KCódigo de clientedata: object: customer_id
LNombre del clientedata: object: customer_fullname
MCorreo electrónico del clientedata: object: customer_email
NTeléfono del clientedata: object: customer_phone
Mapping de columnas con el Google Sheet

Por último aplicaremos un filtro en la conexión entre el router y Google Sheet -> Add Row de forma que procese aquellos mensajes cuyo atributo sea type: reservation.created

16-make-router-connection-filter
Aplicando el filtro en el Router para procesar sólo los mensajes de creación de reserva

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.

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
17-make-google-sheet-search-rows
Google Sheet > Search Rows filtrando por el ID de la reserva

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
18-make-google-sheet-update-rows
Google Sheet > Actualizar filas resultantes de la búsqueda a partir de un Webhook

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

19-make-google-route-filter-webhook
Aplicando el filtro en el Router para procesar sólo los mensajes de creación de reserva

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": []
    }
  }
}

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ónType
Nueva reserva actividadesorder.created
Actualización reserva actividadesorder.updated
Mensaje de contactorequest_information.created

Arriba