Documentación BOT Clientify SuiteCRM

Entidades a conectar

La integración permite sincronizar las siguientes entidades entre Clientify y SuiteCRM:

  • Contactos (Contacts) ↔ Contactos Clientify
  • Leads (Leads) ↔ Contactos Clientify (como leads)
  • Empresas (Accounts) ↔ Empresas Clientify
  • Productos (AOS_Products) ↔ Productos Clientify
  • Oportunidades (Opportunities) ↔ Deals Clientify
  • Presupuestos (AOS_Quotes) → Presupuestos Clientify (solo de SuiteCRM a Clientify)
  • Llamadas (Calls) → Llamadas Clientify (solo de SuiteCRM a Clientify)
  • Reuniones (Meetings) → Check-ins Clientify (solo de SuiteCRM a Clientify)
  • Notas (Notes) → Notas Clientify (solo de SuiteCRM a Clientify)

Sincronización bidireccional

  • Contactos: SuiteCRM ↔ Clientify
  • Leads: SuiteCRM → Clientify (se sincronizan como contactos con estado de lead)
  • Empresas: SuiteCRM ↔ Clientify
  • Productos: SuiteCRM ↔ Clientify
  • Oportunidades: SuiteCRM → Clientify

Sincronización unidireccional

  • Presupuestos: SuiteCRM → Clientify
  • Llamadas: SuiteCRM → Clientify
  • Reuniones: SuiteCRM → Clientify
  • Notas: SuiteCRM → Clientify

Webhooks

  • Contactos: Clientify → SuiteCRM (cuando se crean o modifican contactos en Clientify)

Campos por entidad

Contactos SuiteCRM ↔ Contactos Clientify

Se utiliza el campo id de SuiteCRM almacenado en integrations[].integration_id de Clientify para vincular de manera única los registros.

Campo SuiteCRMCampo ClientifyObservaciones
first_namefirst_nameNombre
last_namelast_nameApellido
email1emails[0].emailEmail principal (tipo 1)
phone_mobilephones[0].phoneTeléfono móvil (tipo 1)
phone_workphones[1].phoneTeléfono trabajo (tipo 2)
primary_address_streetaddresses[0].streetDirección (tipo 5)
primary_address_cityaddresses[0].cityCiudad
primary_address_stateaddresses[0].stateProvincia/Estado
primary_address_countryaddresses[0].countryPaís
primary_address_postalcodeaddresses[0].postal_codeCódigo postal
descriptionsummaryDescripción/Resumen
titletitleCargo
assigned_user_idownerPropietario (se mapea por email del usuario)
idintegrations[].integration_idID de SuiteCRM
status (Leads)statusEstado del lead (se mapea según estado de SuiteCRM)
statusPara Contacts siempre se establece como ‘client’
contact_typeSe establece según el tipo (client o lead)
tagsSe añade automáticamente la etiqueta ‘suitecrm’

Mapeo de estados de Leads:

  • newcold-lead
  • assignedwarm-lead
  • in processwarm-lead
  • recycledwarm-lead
  • convertedclient
  • deadlost-lead

Leads SuiteCRM → Contactos Clientify

Los Leads de SuiteCRM se sincronizan como contactos en Clientify con estados de lead. Solo se sincronizan leads que no estén en estado converted.

Campo SuiteCRMCampo ClientifyObservaciones
first_namefirst_nameNombre
last_namelast_nameApellido
email1emails[0].emailEmail principal
phone_mobilephones[0].phoneTeléfono móvil
phone_workphones[1].phoneTeléfono trabajo
statusstatusEstado del lead (mapeado según tabla anterior)
idintegrations[].integration_idID de SuiteCRM

Empresas SuiteCRM ↔ Empresas Clientify

Se utiliza el campo id de SuiteCRM almacenado en integrations[].integration_id de Clientify para vincular de manera única los registros.

Campo SuiteCRMCampo ClientifyObservaciones
namenameNombre de la empresa
namebusiness_nameRazón social
account_typestatusTipo de cuenta
typecontact_typeTipo de contacto (por defecto ‘client’)
phone_officephones[0].phoneTeléfono principal (tipo 1)
email1emails[0].emailEmail principal (tipo 1)
websitewebsite[0].websiteSitio web
billing_address_streetaddresses[0].streetDirección de facturación (tipo 2)
billing_address_cityaddresses[0].cityCiudad de facturación
billing_address_stateaddresses[0].stateProvincia/Estado de facturación
billing_address_countryaddresses[0].countryPaís de facturación
billing_address_postalcodeaddresses[0].postal_codeCódigo postal de facturación
shipping_address_streetaddresses[1].streetDirección de envío (tipo 3)
shipping_address_cityaddresses[1].cityCiudad de envío
shipping_address_stateaddresses[1].stateProvincia/Estado de envío
shipping_address_countryaddresses[1].countryPaís de envío
shipping_address_postalcodeaddresses[1].postal_codeCódigo postal de envío
descriptionsummaryDescripción/Resumen
assigned_user_idownerPropietario (se mapea por email del usuario)
idintegrations[].integration_idID de SuiteCRM
tagsSe añade automáticamente la etiqueta ‘suitecrm’

Productos SuiteCRM ↔ Productos Clientify

Se utiliza el campo part_number de SuiteCRM (o id si no existe) y sku de Clientify para vincular de manera única los registros.

Campo SuiteCRMCampo ClientifyObservaciones
namenameNombre del producto
descriptiondescriptionDescripción
pricepricePrecio (redondeado a 2 decimales)
part_number o idskuCampo clave para vinculación
product_imageproduct_picture_urlImagen del producto (solo si es URL válida)

Nota: Si el producto no tiene part_number, se utiliza el id de SuiteCRM como SKU.

Oportunidades SuiteCRM → Deals Clientify

Se utiliza el campo id de SuiteCRM almacenado en el campo personalizado suitecrm_deal_id de Clientify para vincular de manera única los registros.

Campo SuiteCRMCampo ClientifyObservaciones
namenameNombre de la oportunidad
amountamountImporte
account_idcompanySe sincroniza primero la empresa asociada
date_closedactual_closed_dateFecha de cierre real
date_closedexpected_closed_dateFecha de cierre esperada
probabilityprobabilityProbabilidad (dividida entre 10)
sales_stagepipeline_stageEtapa del pipeline (se crea pipeline ‘suitecrm’ si no existe)
opportunity_typecustom_fields[].valueTipo de oportunidad (campo personalizado ‘suitecrm_type’)
campaign_namecustom_fields[].valueCampaña (campo personalizado ‘suitecrm_campaign’)
lead_sourcecustom_fields[].valueOrigen del lead (campo personalizado ‘suitecrm_lead_source’)
idcustom_fields[].valueID de SuiteCRM (campo personalizado ‘suitecrm_deal_id’)
date_enteredcreatedFecha de creación
tagsSe añade automáticamente la etiqueta ‘suitecrm’

Etapas del pipeline SuiteCRM:

  • Prospecting
  • Qualification
  • Needs Analysis
  • Value Proposition
  • Identifying Decision Makers
  • Perception Analysis
  • Proposal/Price Quote
  • Negotiation/Review
  • Closed Won
  • Closed Lost

La integración crea automáticamente un pipeline llamado «suitecrm» en Clientify con estas etapas si no existe.

Presupuestos SuiteCRM → Presupuestos Clientify

Se utiliza el campo number de SuiteCRM con prefijo «SUITE-» y budget_code de Clientify para vincular de manera única los registros.

Campo SuiteCRMCampo ClientifyObservaciones
namenameNombre del presupuesto
date_enteredcreatedFecha de creación
expirationexpiration_dateFecha de expiración
descriptiondescriptionDescripción
approval_issuenotesNotas de aprobación
stagestatusEstado (mapeado: ‘closed lost’ → ‘rejected’, ‘closed accepted’ → ‘accepted’, otros → ‘expired’)
subtotal_amountsubtotalSubtotal (redondeado)
discount_amountdiscountDescuento (redondeado)
total_amttotalTotal (redondeado)
numberbudget_codeCódigo del presupuesto (con prefijo «SUITE-«)
billing_contact_idcontactSe sincroniza primero el contacto asociado
billing_account_idcompanySe sincroniza primero la empresa asociada
opportunity_iddealSe sincroniza primero la oportunidad asociada

Líneas de presupuesto:

  • AOS_Products_Quotesitems[] en Clientify
  • Cada línea incluye: nombre, cantidad, precio unitario, descuento, descripción, impuestos

Llamadas SuiteCRM → Llamadas Clientify

Las llamadas de SuiteCRM se sincronizan como llamadas en el timeline de contactos/empresas en Clientify.

Campo SuiteCRMCampo ClientifyObservaciones
date_startcall_dateFecha de la llamada
date_start y date_endcall_timeDuración calculada
directiontypeTipo: ‘inbound’ → ‘incoming’, otros → ‘outgoing’
statusoutcomeResultado: ‘held’ → ‘connected’, otros → ‘no_answer’
descriptioncommentDescripción con información de SuiteCRM

Reuniones SuiteCRM → Check-ins Clientify

Las reuniones de SuiteCRM se sincronizan como check-ins en el timeline de contactos/empresas en Clientify.

Campo SuiteCRMCampo ClientifyObservaciones
date_startdateFecha y hora de la reunión
namecommentAsunto de la reunión
descriptioncommentDescripción con información de SuiteCRM
statusoutcomeResultado: ‘held’ → ‘completed’, otros → ‘scheduled’
typeSiempre se establece como ‘virtual’

Notas SuiteCRM → Notas Clientify

Las notas de SuiteCRM se sincronizan como notas en el timeline de contactos/empresas en Clientify.

Campo SuiteCRMCampo ClientifyObservaciones
namenameTítulo de la nota
name y descriptioncommentContenido con información de SuiteCRM

Mecanismo de sincronización

Proceso de vinculación

La integración utiliza diferentes estrategias para vincular registros:

  1. Por campo de integración: Se busca primero si existe un campo de integración que contenga el ID de SuiteCRM.
  2. Por SKU (productos): Para productos, se busca por el SKU (part_number o id).
  3. Por código de presupuesto: Para presupuestos, se busca por el budget_code con prefijo «SUITE-«.
  4. Por ID de deal: Para deals, se busca por el campo personalizado suitecrm_deal_id.
  5. Creación: Si no se encuentra ninguna coincidencia, se crea un nuevo registro.

Resolución de conflictos

Cuando se encuentra una coincidencia, la integración compara las fechas de modificación:

  • Si el registro de Clientify es más reciente → Se actualiza SuiteCRM
  • Si el registro de SuiteCRM es más reciente → Se actualiza Clientify

Modos de sincronización

La integración puede ejecutarse en dos modos:

  • Full: Sincroniza todos los registros
  • Modified: Sincroniza solo los registros modificados en las últimas 24 horas

Webhooks

La integración soporta webhooks para sincronización en tiempo real desde Clientify hacia SuiteCRM:

  • contact.saved: Sincroniza contactos cuando se crean o modifican en Clientify

Requisitos para webhooks:

  • El contacto debe tener un campo de integración con ID de SuiteCRM o se creará uno nuevo
  • Se busca primero por campo de integración, luego por email

Autenticación

La integración utiliza la API SOAP v4.1 de SuiteCRM. El proceso de autenticación:

  1. Se conecta al endpoint WSDL: {url}/service/v4_1/soap.php?wsdl
  2. Realiza login con usuario y contraseña (MD5)
  3. Obtiene un session_id (login_id) que se utiliza para todas las operaciones
  4. El token se refresca automáticamente cuando es necesario

Proceso de conexión

Credenciales necesarias

Para configurar la integración se necesitan las siguientes credenciales:

  1. URL de SuiteCRM: URL base de la instalación de SuiteCRM (ej: https://suitecrm.ejemplo.com)
  2. Usuario: Nombre de usuario de SuiteCRM
  3. Contraseña: Contraseña del usuario de SuiteCRM

Obtención de credenciales

1. URL de SuiteCRM

La URL debe ser la dirección base de tu instalación de SuiteCRM, sin barras finales. Por ejemplo:

  • https://suitecrm.ejemplo.com
  • https://crm.miempresa.com

2. Usuario y Contraseña

Necesitas un usuario de SuiteCRM con permisos suficientes para:

  • Leer y escribir en módulos: Contacts, Leads, Accounts, Products, Opportunities, AOS_Quotes, Calls, Meetings, Notes
  • Acceso a la API SOAP

Recomendación: Usa un usuario dedicado para la integración con permisos de administrador o permisos específicos para los módulos mencionados.

Configuración en Clientify

  1. Acceder a la pestaña de Integraciones en Clientify
  2. Seleccionar la tarjeta de SuiteCRM
  3. Rellenar los campos:
  • URL
  • Usuario
  • Contraseña
  1. Guardar la configuración
  2. Si todo es correcto, aparecerá un mensaje de confirmación y la integración se activará

Compatibilidad

Versiones de SuiteCRM

La integración se ha desarrollado utilizando la API SOAP v4.1 de SuiteCRM. En principio, debería ser compatible con todas las versiones de SuiteCRM que soporten esta API, ya que:

  • Utiliza el protocolo SOAP estándar de SuiteCRM
  • No depende de funcionalidades específicas de versión
  • Los módulos utilizados son estándar en SuiteCRM

Nota: Versiones muy antiguas de SuiteCRM (anteriores a la 7.x) podrían presentar incompatibilidades debido a cambios en la estructura de la API.

Requisitos

  • Usuario de SuiteCRM con permisos de API
  • Acceso a la API SOAP de SuiteCRM (endpoint /service/v4_1/soap.php?wsdl)
  • Credenciales válidas (usuario y contraseña)
  • Integración PREMIUM activa en Clientify

Campos personalizados

La integración crea automáticamente los siguientes campos personalizados en Clientify:

Para Deals:

  • suitecrm_type: Tipo de oportunidad
  • suitecrm_campaign: Campaña asociada
  • suitecrm_lead_source: Origen del lead
  • suitecrm_deal_id: ID de la oportunidad en SuiteCRM

Para Contactos (configuración personalizada por cuenta):

  • Rol Suitecrm: Rol del contacto en SuiteCRM (si está configurado)

Para Empresas (configuración personalizada por cuenta):

  • Estado: Estado de la empresa en SuiteCRM (si está configurado)

Pipeline de Deals

La integración crea automáticamente un pipeline llamado «suitecrm» en Clientify con las siguientes etapas:

  1. Prospecting
  2. Qualification
  3. Needs Analysis
  4. Value Proposition
  5. Identifying Decision Makers
  6. Perception Analysis
  7. Proposal/Price Quote
  8. Negotiation/Review
  9. Closed Won
  10. Closed Lost

Si el pipeline ya existe, se utiliza el existente. Las oportunidades de SuiteCRM se asignan automáticamente a la etapa correspondiente según su sales_stage.

Artículo añadido al carrito.
0 artículos - 0,00
Logo Email Close
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.