Mautic: la revolución Open Source en Email Marketing

Uno de los campos en los que decididamente la presencia de soluciones Open Source era casi inexistente es el de la automatización del marketing. En un sector dominado por gigantes como Marketo, Pardot (de SalesForce), Eloqua (de Oracle) y que HubSpot vino a revolucionar allá por 2006, cuando prácticamente introdujo el concepto de Inbound Marketing, se echaba decididamente en falta una alternativa Open Source.

Y no sólo por los costes. Es cierto que soluciones como las arriba citadas son extremadamente caras, dificultando así su adopción por pequeñas y medianas empresas y organizaciones sociales. Pero lo peor es que estas plataformas de marketing automatizado obligaban a las empresas a adaptar sus procesos internos al propio funcionamiento de las herramientas.

Fundador

David Hurley supo ver esto con claridad cuando fundó Mautic en 2013.  Como él mismo dice, “como empresario y emprendedor me quedé profundamente impactado al comprobar que no existían herramientas Open Source de relevancia en los campos del marketing y de la automatización del marketing”. Esta impresión fue la que le movió a fundar una comunidad Open Source en torno al concepto de la automatización del marketing que hoy es, sin duda, la base de toda una revolución en el sector.

Mautic es una plataforma de código abierto que sorprende por su madurez y completitud. Hasta ahora, en el mercado existían herramientas que destacaban por ser intuitivas y fáciles de usar, pero con funcionalidad limitada. Otras herramientas ofrecían una funcionalidad avanzada, pero con la desventaja de ser extremadamente difíciles de implementar. Mautic ha venido a revolucionar este panorama.

Moderna arquitectura

Está desarrollada con una moderna arquitectura, con APIs abiertas que permiten su facilísima integración con cualquier otro tipo de herramientas (CRMs, gestores de contenido, etc). La combinación de facilidad de uso con la más sofisticada tecnología es lo que lo diferencia. Y, al ser Open Source, permite que cada organización pueda adaptarlo y/o extenderlo exactamente de acuerdo a sus necesidades.

Funcionalidades

Resumiendo mucho, algunas de las funcionalidades de Mautic son:

  1. Captación de oportunidades (leads)
  2. Creación y gestión de campañas
  3. Creación, gestión y seguimiento de correos electrónicos
  4.  Formularios
  5.  Cualificación de oportunidades (Lead Scoring)
  6.  Landig pages
  7.  Integraciones. Con todo tipo de herramientas: Facebook, Twitter, Word Press, MS Dynamics, Salesforce… La lista completa está aquí: https://www.mautic.org/integrations/
  8.  Informes

Instalación en Ubuntu 16.04

Quien quiera usar Mautic como servicio, puede hacerlo en https://mautic.com/, que es gratuita hasta cierta cantidad de oportunidades y usuarios. Si queremos instalarla en nuestro propio servidor, teniendo por tanto pleno control de la plataforma, podemos hacerlo de la siguiente forma (instrucciones para Ubuntu Server 16.04):

    1. Descargamos la última versión de Mautic (a día de hoy, la 2.9.2). En nuestro ejemplo la descargaremos en el directorio /var/www:
      cd /var/www
      wget --level=0 https://www.mautic.org/download/latest
    2. Descomprimimos el fichero y, para nuestro ejemplo, creamos un directorio llamado “mautic”:
      unzip latest -d mautic
    3. Cambiamos los permisos de la carpeta recién creada y de su contenido:
      sudo chown -R www-data:www-data /var/www/mautic
    4. Creamos una base de datos para Mautic (en nuestro ejemplo se llama “mautic”)
      mysql -u root -p
      CREATE DATABASE mautic DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
      GRANT ALL ON mautic.* TO ‘mauticuser’@’localhost’ IDENTIFIED BY ‘password’;
      FLUSH PRIVILEGES;
      EXIT
    5. Creamos un Virtual Host (en nuestro caso, en Apache):
      sudo gedit /etc/apache2/sites-available/mautic.conf
    6. Ponemos el siguiente contenido en el fichero creado (cambiando rutas y parámetros por los nuestros propios):
      <VirtualHost *:80>
      ServerAdmin mi@correo.com
      ServerName mi.sitio.mautic
      DocumentRoot /var/www/mautic
      <Directory />
      Options FollowSymLinks
      AllowOverride All
      </Directory>
      <Directory /var/www/mautic>
      Options FollowSymLinks MultiViews
      AllowOverride All
      Order allow,deny
      allow from all
      </Directory>
      php_value date.timezone “America/Mexico_City”
      </VirtualHost>
    7. Lo habilitamos:
      sudo a2ensite mautic.conf
    8. Instalamos php5-intl
      sudo apt-get install php5-intl
    9. Reiniciamos Apache:
      sudo systemctl restart apache2.service
    10. Configuramos las tareas programadas necesarias (Cron Jobs):
      crontab -e

      De las siguientes líneas, la 1, 2 y 3 son necesarias. La 4 sólo si quieres programar el envío de emails. La 5 si quieres procesar los emails rebotados. La 6 se necesita si quieres enviar webhooks en lotes y la 7 es para automatizar la descarga de la base de datos de geolocalizacón:

      * * * * * /ruta/al/ejecutable/php /var/www/mautic/app/console mautic:segments:update >/dev/null 2>&1
      * * * * * /ruta/al/ejecutable/php /var/www/mautic/app/console mautic:campaigns:update >/dev/null 2>&1
      * * * * * /ruta/al/ejecutable/php /var/www/mautic/app/console mautic:campaigns:trigger >/dev/null 2>&1
      * * * * * /ruta/al/ejecutable/php /var/www/mautic/app/console mautic:email:process  >/dev/null 2>&1
      * * * * * /ruta/al/ejecutable/php /var/www/mautic/app/console mautic:fetch:email >/dev/null 2>&1
      * * * * * /path/to/php-binary/php /var/www/mautic/app/console mautic:webhooks:process >/dev/null 2>&1
      * 2 10 * * /ruta/al/ejecutable/php /var/www/mautic/app/console mautic:iplookup:download >/dev/null 2>&1
    11. Ya lo único que nos queda es acceder a nuestra instancia de Mautic (en la url definida en el Virtual Host, en el ejemplo “mi.sitio.mautic”) a través de cualquier navegador y completar el proceso de instalación guiado.

Instalar Odoo en Ubuntu 16.04

Toda empresa necesita apoyarse en herramientas que den cobertura a sus necesidades de negocio. Existen en el mercado multitud de sistemas de información que cubren esta necesidad. Los llamados ERP ayudan a la gestión de las actividades de ventas, entregas, pagos, producción, administración de inventarios, contabilidad, recursos humanos , etc.

En nuestro caso, necesitábamos una herramienta para gestionar ventas, selección, contabilidad y facturación. Entre las muchas opciones existentes, nos decantamos por Odoo (aquí su página oficial), que es quizá el software para negocios más instalado en el mundo, con más de 2 millones de usuarios. Nació en el 2004 como Tiny ERP, posteriormente OpenERP y desde 2013 se presenta con su actual nombre.

Odoo tiene tres versiones distintas: Enterprise, Online SaaS y Community version. Esta última es la que nos resulta especialmente interesante, se trata de una aplicación plenamente OpenSource. Es una suite que consta de 34 aplicaciones principales creadas por Odoo, pero que además tiene más de 5,500 aplicaciones desarrolladas por su muy activa comunidad y que dan cobertura a la mayor parte de las necesidades de cualquier negocio. Y con la ventaja de que, al ser modular, puedes instalarte sólo aquello que necesites.

A continuación detallo los pasos que seguimos para su instalación en un servidor con Ubuntu 16.04.

Prerrequisitos

Antes de instalar Odoo realizamos los siguientes pasos:

  1. Actualizar el sistema
    sudo apt update && sudo apt upgrade
  2. Si no tenemos instalado ninguno, instalaremos un servidor web. En nuestro caso, Apache:
    sudo apt-get install apache2
  3. Hay que configurar el firewall para dejar abierto, tanto para acceso ssh como tcp, el puerto utilizado por defecto por Odoo (8069). Este puerto puede personalizarse (aunque no es recomendable configurarlo en el puerto 80, el utilizado por Apache), pero en nuestro caso será el que utilicemos. Lo habilitamos en UFW:
    sudo ufw allow ssh
    sudo ufw allow 8069/tcp
    sudo ufw enable
  4. Odoo está desarrollado en Python. Instalamos sus dependencias:
    sudo apt-get install python-dateutil python-docutils python-feedparser python-jinja2 python-ldap python-libxslt1 python-lxml python-mako python-mock python-openid python-psycopg2 python-psutil python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz python-unittest2 python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi poppler-utils python-pip python-pypdf python-passlib python-decorator gcc python-dev mc bzr python-setuptools python-markupsafe python-reportlab-accel python-zsi python-yaml python-argparse python-openssl python-egenix-mxdatetime python-usb python-serial lptools make python-pydot python-psutil python-paramiko poppler-utils python-pdftools antiword python-requests python-xlsxwriter python-suds python-psycogreen python-ofxparse python-gevent
  5. La base de datos que utiliza Odoo es PostgreSql. La instalamos y creamos un usuario (en nuestro ejemplo, ‘odoo’):
    sudo apt-get install postgresql
    su -- postgres
    createuser odoo
  6. Ahora creamos el directorio donde vamos a instalar Odoo (en nuestro caso, /opt/odoo):
    sudo mkdir /opt/odoo
  7. Creamos el usuario y grupo ‘odoo’ en nuestro sistema:
    sudo adduser --system --home=/opt/odoo --group odoo

Instalación de Odoo

  1. Clonamos los ficheros de Odoo en la ubicación elegida (en nuestro caso, /opt/odoo/):
    sudo git clone https://www.github.com/odoo/odoo --depth 1 --branch 10.0 --single-branch /opt/odoo
  2. Instalamos las dependencias necesarias para las App de Odoo. Wkhtmltopdf, necesario para la generación de informes en PDF, así como NPM y su paquete less:
    wget http://download.gna.org/wkhtmltopdf/0.12/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb
    sudo dpkg -i wkhtmltox-0.12.1_linux-trusty-amd64.deb
    sudo cp /usr/local/bin/wkhtmltopdf /usr/bin
    sudo cp /usr/local/bin/wkhtmltoimage /usr/bin
    sudo apt-get -yq install npm
    sudo ln -s /usr/bin/nodejs /usr/bin/node
    sudo npm install -g less less-plugin-clean-css
  3. Instalar las dependencias de Python (si la ruta donde instalaste Odoo es diferente, tienes que cambiar /opt/odoo/odoo-10.0 por tu ruta personalizada):
    sudo pip install -r /opt/odoo/odoo-10.0/doc/requirements.txt
    sudo pip install -r /opt/odoo/odoo-10.0/requirements.txt

Configuración

  1. Copiar el fichero de configuración que viene de ejemplo a una ubicación más conveniente. Si utilizaste una ruta personalizada, tienes que sustituir ‘/opt/odoo/odoo-10.0’ por la tuya propia:
    sudo cp /opt/odoo/odoo-10.0/debian/odoo.conf /etc/odoo.conf
  2. Modificar el fichero de configuración con tus propios datos:
    [options]
    admin_passwd = tupasswordpersonalizadoyfuerte
    db_host = False
    db_port = False
    db_user = odoo
    db_password = False
    addons_path = /opt/odoo/odoo-10.0/addons (modificar si instalaste en otra ruta)
    xmlrpc_port = 8069
    logfile = /var/log/odoo/odoo.log
    log_level = error
    SECURITY_EMAIL_SENDER = ‘tu@mail.com’

Configurar Odoo como servicio

  1. Creamos un fichero llamado odoo.service en /etc/systemd/system, con un contenido como este (de nuevo, si utilizaste rutas diferentes en la instalación, tendrás que personalizarlas aquí):
    [Unit]
    Description=Odoo
    Documentation=http://www.odoo.com/
    [Service]
    # Ubuntu/Debian convention:
    Type=simple
    User=odoo
    ExecStart=/opt/odoo/odoo-10.0/odoo-bin -c /etc/odoo.conf[Install]
    WantedBy=default.target
  2. Cambia propietario y permisos del fichero de configuración para que lo lance el usuario que hemos creado (‘odoo’) :
    sudo chown odoo: /etc/odoo.conf
    sudo chmod 640 /etc/odoo.conf
  3. Arrancamos el servicio:
    sudo systemctl start odoo.service
  4. Comprobamos que funciona:
    sudo systemctl status odoo.service
  5. Si todo está bien, habilitamos el servicio, con lo que se iniciará cada vez que arranque el sistema:
    sudo systemctl enable odoo.service

Configuración de Apache

  1. Para poder acceder a Odoo desde tu propio dominio y sin necesidad de añadir el puerto 8069 en la URL, configuramos un Proxy Reverso en Apache. Primero, habilitamos los siguientes módulos:
    sudo a2enmod proxy
    sudo a2enmod proxy_http
  2. Creamos un archivo de configuración para tu dominio:
    sudo gedit /etc/apache2/sites-available/tu-dominio.com.conf
  3. Añadimos el siguiente contenido:
    <VirtualHost *:80>
    ServerName tu-dominio.com
    ServerAlias www.tu-dominio.com
    ProxyRequests Off
    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>
    ProxyPass / http://tu-dominio.com:8069/
    ProxyPassReverse / http://tu-dominio.com:8069/
    <Location />
    Order allow,deny
    Allow from all
    </Location>
    </VirtualHost>
  4. Una vez guardado el contenido del fichero de configuración, lo habilitamos:
    sudo a2ensite tu-dominio.com.conf
  5. Reiniciamos Apache:
    sudo service apache2 restart

Iniciando Odoo

  1. Si todo ha ido bien hasta ahora, ya podemos acceder a Odoo simplemente introduciendo en un navegador la direccón de nuestro dominio:
    http://tu-dominio.com
  2. Debe aparecer una pantalla como la siguiente:
  3. Sólo debemos proporcionar el nombre de la base de datos que creamos en un paso anterior, nuestro e-mail y el password. Con esto ya está Odoo completamente instalado y funcional… ahora sólo queda (pero eso ya no es objeto de este post) instalar los módulos deseados, así como configurar e implementar los procesos de nuestra empresa.