MARKETING

De Wiki de Vilatec

En esta sección se gestionan los modulos de Contactos, Precontactos, Campañas y Cuentas.

La traducción al idioma de elección correcta de estos módulos sería lo siguiente:

Contactos vendría a ser toda entidad de tipo persona que bien pudiera pertenecer a una Cuenta (Accounts/Empresa) o no.

Pueden estar relacionados con diversos módulos dentro del CRM, como Oportunidades, Eventos de calendario, emails, Incidencias, Campañas, Cotizaciones, Órdenes de venta, Órdenes de compra, Productos, Documentos, Facturas, Recursos, Servicios, Comentarios, Proveedores etc.

Precontacto vendría a ser una entidad débil inicialmente que está en período de transformación... inicialmente se presenta como un POSIBLE y futuro Contacto, pero puede convertirse perfectamente en una Cuenta, o Contacto u Oportunidad dado que el CRM da la posibilidad de convertir este objeto del módulo finalmente en alguno de los 3 mencionados por defecto. Requiere para ello una serie de campos, que pueden ser obligatorios o no y, que, además, como veremos en otro apartado, da la posibilidad de hacer una conversión directa de campos que están relacionados entre estos 3 módulos... campos que pueden existir por defecto en el CRM o que el usuario correspondiente puede crear en estos módulos para tener esa vinculación que ofrece el CRM.

Campañas es lo que su propio nombre indica, se define según la rae como "Conjunto de actos o esfuerzos de índole diversa que se aplican a conseguir un fin determinado" y no es más que lo que la definición nos indica, aplicada al ámbito empresarial. Cuando se crea una campaña en el CRM, hay una serie de campos que en su correspondiente apartado pincelaremos, tales como estado de la campaña, tipo u orientación a quien va dirigida, costes estimados, beneficios estimados, productos relacionados, numero de envíos etc. Cada campaña a su vez, según se verá en la UI de la misma, puede estar relacionada de manera n:m con Contactos, PreContactos, Oportunidades, Actividades de calendario y Cuentas/Empresas ... es lógico pensar que cuando se lanza una campaña por alguno de los canales habituales como pueden ser emails, banners publicitarios, seo, estas entidades pueden ir saliendo y pueden retenerse reflejándose en el CRM. Los detalles los iremos viendo en cada apartado de los módulos.

Cuentas haría referencia a Cuentas o Empresas, una entidad más global que la que puede ser un Contacto. Dentro de Cuentas vemos que se puede definir como un cliente, un integrador, socio, inversor... así el objeto del módulo va tomando más perspectiva... a parte de esto, puede albergar los datos típicos para contactar, su presencia en internet, si está adquirido, activo, cancelado etc. El módulo de cuentas está prácticamente relacionado con todos los módulos internos del CRM, así de un vistazo general podemos ver que se puede relacionar con Contactos, Oportunidades, Cotizaciones, Órdenes de venta/compra, Eventos de calendario, Emails, Documentos etc etc.

Vistazo rápido : Contactos

Entrando al apartado de contactos, se nos presenta una lista de los mismos que se puede administrar dinámicamente.

Vista general lista contactos
Vista general lista contactosEsto es una tabla dinámica desde donde se puede acceder a la vista rápida de cada contacto ubicado en cada fila de la tabla. Por defecto, se muestran todos los contactos sin un filtro, pero el usuario puede crear sus propios filtros para que los contactos salgan en la tabla según los criterios de búsqueda filtrados y así perder menos tiempo. Desde la tabla de puede generar un contacto, importar contactos desde ficheros específicos, o bien personalizar el módulo Contacto desde el botón situado arriba a la izquierda.Desde cada campo que es cabecera de la tabla, se puede iniciar una búsqueda rápida según el texto o valor introducido en el input de búsqueda.


Accediendo a la información de contacto:

Resumen de contacto:

Se presenta pantalla de resumen de contacto, con la iconografía completa para que, de un vistazo rápido, sepamos si hay algún objeto de modulo relacionado con el.Las diferentes pestañas/secciones ubicadas en el menú superior nos permiten acceder a la información relacionada del mismo.En esta pantalla podemos ver los campos clave (que se pueden definir para verse en esta pantalla), las actividades de tipo evento o tarea que tiene el contacto, los comentarios y archivos que el usuario del CRM ha vinculado al contacto, algunas acciones rápidas como enviar email, seguir, editar etc.


Detalle del contacto:

Esta pantalla deja ver todos los campos del contacto. Se administra la misma en bloques de información. Se puede editar haciendo click en cada tipo de input o pulsando al botón Editar para abrir todos los inputs editables.

Detalles contacto
Detalles contacto
En la parte de las actualizaciones se pueden visualizar las acciones que los usuarios del CRM han hecho sobre el contacto mostrado.
Contacto eventos
Navegando por las diferentes tabs que indican la relación con otros módulos, se puede acceder a una lista dinámica para saber por ejemplo, los eventos o tareas en las que aparece este contacto.Podemos visualizar esto en otros elementos relacionados, que se van a obviar temporalmente en este manual ya que solo se presentarán los más significativos por la diferencia sustanciál en las acciones extra permitidas.
Acciones de gestión de contacto se presentan en el botón más. Algunas de estas acciones están también en la presentación de lista general de contactos, donde se pueden seleccionar las filas y ejecutar ciertas acciones sin tener que entrar al detalle.
Otras acciones adicionales se despliegan desde el botón Personalizar del módulo Contacto. Campos y maquetación lleva al editor de campos y bloques de contacto, Flujos de trabajo lleva al gestor de automatización relacionado con este módulo, Picklist Valores lleva a la edición de listas desplegables multiselección ... se hará un resumen más abajo de todo esto.







Vistazo rápido : Precontactos

De la misma manera que sucedía con Contactos, la presentación de la pantalla es una lista dinámica que permite diversas acciones rápidas sobre la fila que ocupa el Precontacto.

Accediendo a la información de precontacto:

Resumen de Precontacto:

Aquí se puede observar la información más relevante (según se configuren los campos del módulo Precontacto) igual a lo que pasaba con Contactos.

Detalle de Precontacto

Análogamente a lo que sucedía con Contacto, se puede desplegar la tab de Detalles además de ir por las tabs de los módulos que pueden tener relación con dicho Precontacto. Las secciones de actividades, comentarios y documentos están activadas por defecto en este módulo.

Un par de temas interesantes con respecto a esto son la conversión de un Precontacto a un Contacto, es decir, una vez un Precontacto a base de comunicarnos con el, avanzando etc nos sugiere tenerlo como un obejto más fuerte en el CRM, podemos clicar en la opción de Convertir Pre-Contacto para convertirlo a un Contacto, Cuenta u Oportunidad, o las 3 al mismo tiempo.

Esto nos llevará a una ventana modal donde saldrán todos los campos que hemos estipulado del tipo "incluir en la conversión de", los cuales hemos vinculado previamente configurando su vinculación, para que al crearlo, el recipiente destino de la conversión de ese módulo, no pierda datos que tenía en Precontactos.

Para llegar a esta pantalla, ir al icono general sidebar de la izquierda del CRM, seleccionar ultimo apartado del mismo "Configuración" > MARKETING Y VENTAS > Conversión de Datos de Asignación de, podemos configurar la correspondencia entre el módulo origen y destino, eligiendo a ser posible el mismo tipo de campo para esta conversión.

Vistazo rápido: Cuentas

Análogamente a los otros módulos, se presenta esta lista como una tabla dinámica.

Resumen de Cuenta

Análogamente a los otros módulos mencionados, se presenta el resumen de la cuenta con todos los posibles accesos en forma de tab

Detalle de Cuenta

Expansión de los datos de las cuentas.
Extra Cuenta y demás módulos de VTiger: Como norma global para la mayoría de los módulos, dentro de las opciones de Diseño de módulo y campos, podemos ver las relaciones por defecto que tiene ese módulo con los demás. La UI de VTiger community opensource no permite añadir o modificar relaciones, pero si que está preparado para efectuarlas manualmente tanto por base de datos como corriendo una serie de comandos en php, puesto que las interacciones entre las clases están creadas.

Vistazo rápido: Campañas

Análogamente a otros módulos, se presenta como una tabla dinámica con las mismas opciones de búsqueda entre sus campos etc, que refresca automáticamente los resultados.

Detalle Campañas

En este caso el módulo Campañas no tiene resumen, presenta directamente la vista detalle del mismo.

Accesos rápidos interesantes Vista general en módulos

Accesos rápidos interesantes: Toolbar superior en módulos

  • Creación rápida
    • Despliega una serie de opciones en cualquier pantalla para la creación rápida de un objeto de un módulo. Lleva al modal de creación rápida, con una serie de campos limitados (esto se define en la maquetación del módulo para que salgan en este formulario). Además presenta la opción de ir al formulario completo si se quieren introducir más datos específicos y no tener que pasar por la edición del objeto del módulo una vez creado con "creación rápida".
  • Tarea calendario
  • Informes
  • Task manager

WebForms

Una parte importante de la captación de clientes son los webforms que VTiger permite generar automáticamente para poder incrustarlos en un sitio web y que VTiger pueda hacer la conversión a objeto del tipo Módulo seleccionado para este formulario.

VTiger 8 por defecto tiene un bug, y es que viene sin las tablas vtiger_webforms y vtiger_webforms_field sin crear, y por ello tendremos que crearlas para poder guardar permanentemente y editar.

CREATE TABLE `vtiger_webforms` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `publicid` varchar(100) NOT NULL,
  `enabled` int NOT NULL DEFAULT '1',
  `targetmodule` varchar(50) NOT NULL,
  `description` text,
  `ownerid` int NOT NULL,
  `returnurl` varchar(250) DEFAULT NULL,
  `captcha` int NOT NULL DEFAULT '0',
  `roundrobin` int NOT NULL DEFAULT '0',
  `roundrobin_userid` varchar(256) DEFAULT NULL,
  `roundrobin_logic` int NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `webformname` (`name`),
  UNIQUE KEY `publicid` (`id`),
  KEY `webforms_webforms_id_idx` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3;
CREATE TABLE `vtiger_webforms_field` (
  `id` int NOT NULL AUTO_INCREMENT,
  `webformid` int NOT NULL,
  `fieldname` varchar(50) NOT NULL,
  `neutralizedfield` varchar(50) NOT NULL,
  `defaultvalue` text,
  `required` int NOT NULL DEFAULT '0',
  `sequence` int DEFAULT NULL,
  `hidden` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `webforms_webforms_field_idx` (`id`),
  KEY `fk_1_vtiger_webforms_field` (`webformid`),
  KEY `fk_2_vtiger_webforms_field` (`fieldname`),
  CONSTRAINT `fk_1_vtiger_webforms_field` FOREIGN KEY (`webformid`) REFERENCES `vtiger_webforms` (`id`) ON DELETE CASCADE,
  CONSTRAINT `fk_3_vtiger_webforms_field` FOREIGN KEY (`fieldname`) REFERENCES `vtiger_field` (`fieldname`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3;

Con estas 2 tablas incluidas en la base de datos, ya se puede trabajar correctamente en los formularios.

Iríamos a Configuración, Automatización > Formularios web Agregamos Formulario web con el botón ubicado arriba a la derecha.

Una vez empezado el proceso, debemos de poner un nombre al formulario, seleccionar un módulo al formulario, que será el objeto que se creará con los datos introducidos una vez hecho submit. Podemos habilitar captcha. Este formulario es asignado a un usuario del CRM. Por defecto el módulo seleccionado es Contactos, pero conforme se seleccione un módulo aparecerán los campos básicos relacionados con ese módulo para poder escoger un conjunto de los mismos y posicionarlos como inputs del formulario. Las variables recogidas se nombran automáticamente. Una vez rellenado los campos se puede acceder al código fuente del formulario para incrustarlo en tu sitio web. Esto sucede cuando se pulsa el botón Mostrar Formulario en la vista detalle de formulario, pulsando desde uno ya creado.

La ventana emergente muestra el código a incrustar en un sitio web.

Podemos copiar este código y analizarlo antes de incrustarlo por ejemplo en un fichero .html

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<form id="__vtigerWebForm" name="PruebasLocal"
    action="http://localhost:8888/VTIGER-PERSONAL/modules/Webforms/capture.php" method="post" accept-charset="utf-8"
    enctype="multipart/form-data"><input type="hidden" name="__vtrftk"
        value="sid:898e3d94d0f10f724acd7369e74bca9807e6ee47,1705654439"><input type="hidden" name="publicid"
        value="092e777f081f7aaac549ab4a1449795c"><input type="hidden" name="urlencodeenable" value="1"><input
        type="hidden" name="name" value="PruebasLocal">
    <table>
        <tbody>
            <tr>
                <td><label>Nombre</label></td>
                <td><input type="text" name="firstname" data-label="" value="Nombre"></td>
            </tr>
            <tr>
                <td><label>Apellido*</label></td>
                <td><input type="text" name="lastname" data-label="" value="Apellidos" required=""></td>
            </tr>
            <tr>
                <td><label>De Correo Electrónico Principal</label></td>
                <td><input type="email" name="email" data-label="" value="email@example.com"></td>
            </tr>
            <tr>
                <td><label>Descripción*</label></td>
                <td><textarea name="description" required="">Notas</textarea></td>
            </tr>
        </tbody>
    </table><input type="submit" value="Submit">
</form>
<script
    type="text/javascript">window.onload = function () { var N = navigator.appName, ua = navigator.userAgent, tem; var M = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); if (M && (tem = ua.match(/version\/([\.\d]+)/i)) != null) M[2] = tem[1]; M = M ? [M[1], M[2]] : [N, navigator.appVersion, "-?"]; var browserName = M[0]; var form = document.getElementById("__vtigerWebForm"), inputs = form.elements; form.onsubmit = function () { var required = [], att, val; for (var i = 0; i < inputs.length; i++) { att = inputs[i].getAttribute("required"); val = inputs[i].value; type = inputs[i].type; if (type == "email") { if (val != "") { var elemLabel = inputs[i].getAttribute("label"); var emailFilter = /^[_/a-zA-Z0-9]+([!"#$%&()*+,./:;<=>?\^_`{|}~-]?[a-zA-Z0-9/_/-])*@[a-zA-Z0-9]+([\_\-\.]?[a-zA-Z0-9]+)*\.([\-\_]?[a-zA-Z0-9])+(\.?[a-zA-Z0-9]+)?$/; var illegalChars = /[\(\)\<\>\,\;\:\"\[\]]/; if (!emailFilter.test(val)) { alert("For " + elemLabel + " field please enter valid email address"); return false; } else if (val.match(illegalChars)) { alert(elemLabel + " field contains illegal characters"); return false; } } } if (att != null) { if (val.replace(/^\s+|\s+$/g, "") == "") { required.push(inputs[i].getAttribute("label")); } } } if (required.length > 0) { alert("The following fields are required: " + required.join()); return false; } var numberTypeInputs = document.querySelectorAll("input[type=number]"); for (var i = 0; i < numberTypeInputs.length; i++) { val = numberTypeInputs[i].value; var elemLabel = numberTypeInputs[i].getAttribute("label"); var elemDataType = numberTypeInputs[i].getAttribute("datatype"); if (val != "") { if (elemDataType == "double") { var numRegex = /^[+-]?\d+(\.\d+)?$/; } else { var numRegex = /^[+-]?\d+$/; } if (!numRegex.test(val)) { alert("For " + elemLabel + " field please enter valid number"); return false; } } } var dateTypeInputs = document.querySelectorAll("input[type=date]"); for (var i = 0; i < dateTypeInputs.length; i++) { dateVal = dateTypeInputs[i].value; var elemLabel = dateTypeInputs[i].getAttribute("label"); if (dateVal != "") { var dateRegex = /^[1-9][0-9]{3}-(0[1-9]|1[0-2]|[1-9]{1})-(0[1-9]|[1-2][0-9]|3[0-1]|[1-9]{1})$/; if (!dateRegex.test(dateVal)) { alert("For " + elemLabel + " field please enter valid date in required format"); return false; } } } var inputElems = document.getElementsByTagName("input"); var totalFileSize = 0; for (var i = 0; i < inputElems.length; i++) { if (inputElems[i].type.toLowerCase() === "file") { var file = inputElems[i].files[0]; if (typeof file !== "undefined") { var totalFileSize = totalFileSize + file.size; } } } if (totalFileSize > 52428800) { alert("Maximum allowed file size including all files is 50MB."); return false; } }; }</script>


Una vez incrustado esto en un archivo html, podemos ver el resultado el mismo. Se recomienda al menos generar las etiquetas <html></html> <head></head> y <body></body> si no existía un documento donde incrustar, aunque no es obligatorio, esto ya queda al gusto del usuario.

Este es el resultado básico del WebForm... lógicamente se recomienda darle una serie de estilos al formulario para que sea más atractivo a la hora de utilizarlos.