Por qué Salesforce es el caso aparte
La mayoría de los CRM compatibles con Anexus te dan un token de API para pegar. Salesforce no. El acceso a una organización de Salesforce pasa por una Aplicación Conectada, el contenedor OAuth propio de Salesforce, así que no hay ninguna clave que generar, copiar ni custodiar. Haces clic en un botón, Salesforce te pide tu conformidad y los dos sistemas intercambian tokens por detrás. No se escribe nada.
El contrapeso es que una organización de Salesforce se administra: no pertenece a quien esté conectado en ese momento. La mayoría de los problemas de conexión con Salesforce no son problemas de conexión, sino de configuración de la organización: una edición sin acceso a la API, un perfil al que le falta un permiso, una regla de validación que nadie recuerda haber escrito, o una conexión autorizada contra un sandbox en vez de producción.
Primero, ten claro qué organización vas a autorizar
Salesforce no es un único sitio. Casi todos los clientes tienen una organización de Producción y uno o varios Sandbox, copias que se usan para pruebas y formación. Son bases de datos separadas con inicios de sesión separados:
- Producción inicia sesión en
login.salesforce.comcon tu nombre de usuario habitual. - Sandbox inicia sesión en
test.salesforce.com, y el nombre de usuario lleva el nombre del sandbox añadido:tu@empresa.com.uaten lugar detu@empresa.com.
Conviene saberlo también: refrescar un sandbox lo reconstruye desde producción e invalida todo lo que se hubiera autorizado contra la copia anterior. Tras un refresco de sandbox, cuenta con tener que conectar de nuevo.
Qué debe cumplirse en tu organización antes de empezar
- Una organización de Salesforce en la que puedas iniciar sesión: Production, Sandbox o Developer Edition.
- Acceso a la API en tu edición. Enterprise, Unlimited, Performance y Developer Edition lo incluyen. Professional Edition solo lo tiene si se compró el complemento de API, y las ediciones más pequeñas no lo tienen en absoluto. Sin acceso a la API, ninguna integración —ni la nuestra ni ninguna otra— puede escribir en la organización.
- El permiso API Enabled en el perfil o conjunto de permisos de quien haga clic en Conectar, más Crear y Editar sobre el objeto Contacto. Un administrador concede ambos en Configuración.
- La app de Anexus debe estar instalada en tu organización de Salesforce para permitir el acceso entre organizaciones. Si pruebas en tu propia organización, tu administrador (que puedes ser tú) debe instalar el paquete de Anexus. Contáctanos para obtener la URL de instalación si eres un cliente inicial.
- La aprobación inicial. Muchas organizaciones configuran la política de Usuarios permitidos de la Aplicación Conectada como "Los usuarios aprobados por el administrador están preautorizados", lo que obliga a que un administrador asigne la app a un perfil o conjunto de permisos antes de que nadie pueda pasar la pantalla de consentimiento.
Conectar Anexus a tu organización
En Anexus, abre Ajustes → Integraciones CRM y busca la tarjeta de Salesforce.
Haz clic en Conectar con Salesforce. Sales de Anexus y llegas a la página de inicio de sesión de Salesforce.
Inicia sesión con tus credenciales habituales de Salesforce y tómate un segundo para comprobar en qué organización estás entrando. Un nombre de usuario de sandbox lleva el nombre del sandbox como sufijo, así que el propio nombre de usuario es la pista más rápida.
Salesforce muestra una pantalla de consentimiento que indica qué permisos solicita Anexus:
- Acceder y administrar tus datos a través de las API: el permiso
api, que es como se escriben los Contactos. - Realizar solicitudes en cualquier momento: el permiso
refresh_token, para que la sincronización siga funcionando cuando nadie ha iniciado sesión.
Haz clic en Permitir.
Salesforce te devuelve a Anexus. La tarjeta de Salesforce cambia al estado verde "Conectado" y muestra el ID de tu organización de Salesforce. Compara ese ID con el que aparece en Configuración → Información de la compañía de la organización que querías conectar: es la confirmación más rápida posible de que autorizaste la correcta.
¿Candidato o Contacto? Anexus escribe Contactos
En la mayoría de los CRM una persona es simplemente una persona. En Salesforce una persona es uno de dos objetos distintos, e importa cuál te toca:
- Candidato (Lead) — una persona no cualificada que todavía no está vinculada a nada. Los Candidatos quedan fuera de tu jerarquía de cuentas hasta que alguien los convierte, lo que crea un Contacto, una Cuenta y normalmente una Oportunidad, y marca el Candidato como convertido.
- Contacto — una persona que pertenece a tus datos de clientes, normalmente vinculada a una Cuenta.
Anexus escribe en Contacto. Cada contacto capturado en Anexus se convierte en un registro de Contacto de Salesforce: no se crea ningún Candidato y no se convierte nada. Si tu equipo trabaja primero los Candidatos, esa es una decisión de enrutamiento del lado de Salesforce, no algo que se configure en Anexus.
La escritura es un upsert basado en el correo
Antes de escribir, buscamos en tu organización un Contacto con esa dirección de correo:
- Si ya existe un Contacto con ese correo en la organización, lo actualizamos.
- Si no existe, creamos uno nuevo.
Ese orden importa especialmente en Salesforce, porque las organizaciones de Salesforce casi siempre aplican Reglas de Duplicados sobre Contacto. Nunca insertamos a ciegas dejando que la regla nos discuta el registro.
Correspondencia de campos: Anexus → Salesforce
Con los nombres de API de los campos de Salesforce, esto es en lo que se convierte un contacto capturado:
| Captura de Anexus | Campo de Salesforce | Notas |
|---|---|---|
| Nombre | Contact.FirstName | Campo estándar. Salesforce no lo exige, así que un Contacto se guarda igual sin él. |
| Apellido | Contact.LastName | Salesforce lo exige en todos los Contactos. Si la captura no trae apellido, Anexus envía "Unknown" para que el registro se pueda guardar igual. |
| Correo electrónico | Contact.Email | La clave del upsert: el campo con el que hacemos la coincidencia antes de decidir si actualizar o crear. Una captura sin correo válido se omite, porque no hay nada con qué coincidir. |
| Teléfono | Contact.Phone | El campo estándar Phone, no MobilePhone ni ningún campo de teléfono que haya añadido tu organización. |
| Puesto | Contact.Title | Texto libre en Salesforce, no una lista de selección, así que lo que la persona escribió llega tal cual. |
Recuperar los contactos capturados antes de conectar
Usa Sincronizar contactos anteriores en la tarjeta de Salesforce para enviar todo lo capturado antes de conectar.
Una advertencia propia de Salesforce: Salesforce contabiliza las llamadas a la API por organización en una ventana móvil de 24 horas, y el cupo depende de tu edición y del número de licencias. Recuperar unos cientos de contactos es poca cosa frente al cupo de una organización típica, pero si esta ya está cerca de su límite por una carga de datos o por otra integración que se está portando mal, es la recuperación la que hará desbordar el contador, y entonces Salesforce empezará a rechazar llamadas de todo el mundo. Haz las recuperaciones grandes fuera de tus horas punta.
Errores de Salesforce y lo que significan de verdad
Salesforce devuelve códigos de error legibles por máquina, y el estado de sincronización de la tarjeta de Salesforce te muestra el real. Estos son los que conviene reconocer.
"invalid_client_id" o OAUTH_EC_APP_NOT_FOUND en la pantalla de consentimiento
La Aplicación Conectada de Anexus no está presente en la organización en la que acabas de iniciar sesión, o un administrador ha restringido qué Aplicaciones Conectadas se pueden usar. Ten en cuenta que una app instalada en Producción no existe en un Sandbox salvo que este se haya refrescado después de la instalación. Contáctanos para obtener la URL de instalación y entrégala a tu administrador de Salesforce.
Dice "Conectado", pero no aparece ningún Contacto en Salesforce
Puede que los registros estén yendo a otra organización. Compara el ID de organización que muestra la tarjeta de Salesforce con el de Configuración → Información de la compañía en la organización que estás mirando. Si no coinciden, desconecta en Anexus y vuelve a conectar comprobando en qué organización inicias sesión antes de aprobar. Si los ID coinciden, revisa la propia captura: un contacto sin dirección de correo válida nunca se envía, así que una entrada de prueba con un correo basura no aparecerá.
"API is not enabled for this Organization or Partner"
O tu edición de Salesforce no incluye acceso a la API, o al perfil del usuario le falta el permiso API Enabled. Ambos se arreglan solo dentro de Salesforce: un administrador concede API Enabled en el perfil o mediante un conjunto de permisos, mientras que un límite de edición exige que Salesforce te venda el complemento de API. No hay ninguna solución alternativa del lado de Anexus.
INSUFFICIENT_ACCESS_OR_READONLY
El usuario que autorizó la conexión ve la organización pero no puede escribir el Contacto: o a su perfil le faltan Crear y Editar sobre el objeto Contacto, o el registro con el que hicimos coincidencia es uno que el modelo de colaboración de tu organización no le deja editar. OAuth hereda los permisos de quien hizo clic en Permitir, así que reconectar con el mismo usuario no cambia nada. Pide a un administrador que corrija el perfil o el conjunto de permisos de ese usuario, o conecta con una cuenta que tenga Crear y Editar sobre Contacto.
FIELD_CUSTOM_VALIDATION_EXCEPTION o REQUIRED_FIELD_MISSING
Una regla de validación o un campo personalizado obligatorio en Contacto está rechazando el registro, y el texto que ves lo escribió tu propio administrador, por eso suena a política interna más que a fallo técnico. Pide a tu administrador que exima de esa regla a las escrituras de integración, o que dé un valor predeterminado al campo para que un Contacto se pueda guardar sin él.
DUPLICATES_DETECTED o "Use one of these records?"
Es una Regla de Duplicados de Salesforce marcando el registro. Anexus ya evita la causa habitual haciendo un upsert en vez de una inserción, así que si sigues viéndolo, las Reglas de Duplicados de la organización están bloqueando incluso una actualización con coincidencia. Pide a tu administrador de Salesforce que establezca la política de Regla de Duplicados de la app Anexus Connect en "Allow Save".
REQUEST_LIMIT_EXCEEDED
La organización ha agotado su cupo de API de 24 horas. Rara vez lo hemos gastado nosotros —normalmente ha sido una carga de datos u otra integración— y no hay nada que arreglar en ninguno de los dos lados. El contador se renueva, los contactos afectados quedan pendientes y el siguiente Sincronizar contactos anteriores los envía.
La conexión funcionaba y luego se paró sin avisar
Los tokens de acceso de Salesforce caducan al cabo de una hora aproximadamente y se renuevan automáticamente con el token de actualización, así que la caducidad por sí sola nunca debería resultarte visible. Un token de actualización deja de funcionar cuando alguien bloquea la app en Uso OAuth de Aplicaciones Conectadas, cuando la política de token de actualización de la Aplicación Conectada lo caduca tras un periodo de inactividad, cuando se restablece la contraseña del usuario según ciertas políticas de la organización, o cuando se ha refrescado el sandbox al que te conectaste. Haz clic en Probar en la tarjeta de Salesforce: si falla, desconecta y vuelve a conectar.
Desconectar y revocar del lado de Salesforce
Haz clic en Desconectar en Anexus y dejamos de escribir de inmediato. Para revocar también la autorización dentro de Salesforce: Configuración → Uso OAuth de Aplicaciones Conectadas, busca Anexus Connect y haz clic en Bloquear.
Los Contactos ya escritos permanecen en tu organización. Desconectar detiene las escrituras futuras; no vuelve a entrar en Salesforce para eliminar nada.
Notas para administradores de Salesforce
Anexus accede a la organización con los permisos OAuth estándar api y refresh_token, y solo toca el objeto Contacto. Ningún dato sale de tu organización sin el consentimiento explícito del usuario que autoriza. Cada inicio de sesión de API se puede auditar en Configuración → Historial de inicio de sesión, filtrando por Aplicación = Anexus Connect.
Los ajustes que deciden si tus usuarios pueden siquiera conectarse están en Configuración → Aplicaciones → Aplicaciones conectadas → Administrar aplicaciones conectadas → Anexus Connect → Políticas de OAuth. Tres importan: Usuarios permitidos (todos los usuarios frente a solo los aprobados por el administrador; la segunda opción exige asignar antes un perfil o conjunto de permisos), Relajación de IP (relevante si tus perfiles imponen rangos de IP de inicio de sesión, ya que las llamadas a la API llegan desde nuestros servidores y no desde tus oficinas) y la Política de token de actualización: si la configuras para que caduque por inactividad, las conexiones morirán solas pasada esa ventana.
Una configuración de mínimo privilegio es un conjunto de permisos que concede API Enabled más Crear y Editar sobre Contacto, asignado a las personas que realmente llevan tarjetas de Anexus. Nada de esto tiene motivo alguno para implicar Modify All Data.