Salesforce
Descripción
Sección titulada «Descripción»Los nodos Salesforce conectan tus workflows con Salesforce a través de su API REST. Con ellos podés automatizar tu CRM: crear un Lead cuando entra un formulario, actualizar una Oportunidad al avanzar un proceso, consultar cuentas con SOQL, o sincronizar registros por un id externo (upsert).
Hay seis nodos, uno por operación:
| Nodo | Operación | Método HTTP |
|---|---|---|
Salesforce: Crear registro (salesforceCreateRecord) | Crea un registro | POST /sobjects/{sobject} |
Salesforce: Leer registro (salesforceGetRecord) | Lee un registro por id | GET /sobjects/{sobject}/{id} |
Salesforce: Actualizar registro (salesforceUpdateRecord) | Actualiza campos | PATCH /sobjects/{sobject}/{id} |
Salesforce: Borrar registro (salesforceDeleteRecord) | Borra un registro | DELETE /sobjects/{sobject}/{id} |
Salesforce: Consulta SOQL (salesforceQuery) | Consulta con SOQL | GET /query?q=... |
Salesforce: Upsert registro (salesforceUpsertRecord) | Crea o actualiza por external id | PATCH /sobjects/{sobject}/{extField}/{extValue} |
Credencial
Sección titulada «Credencial»Los nodos usan una credencial de tipo Salesforce. Creala en Credenciales → Agregar → Salesforce con estos campos:
| Campo | Descripción |
|---|---|
| login_url | https://login.salesforce.com (producción) o https://test.salesforce.com (sandbox). |
| client_id | El Consumer Key de tu Connected App. |
| client_secret | El Consumer Secret de tu Connected App. |
| username | El usuario de Salesforce. |
| password | La contraseña concatenada con el security token (ej. MiPass + AbCd1234...). |
Nota importante: OAuth2 password flow
Sección titulada «Nota importante: OAuth2 password flow»- La autenticación usa el OAuth2 password flow: el motor pide un token a
POST {login_url}/services/oauth2/tokeny llama a la API conAuthorization: Bearer {access_token}. El token se cachea en memoria (~2h) y se renueva automáticamente si expira (401). - El
passwordes la contraseña + el security token concatenados, sin separador. El security token te llega por email desde Setup → Reset My Security Token. - Para una sandbox usá
login_url = https://test.salesforce.com. PATCH(actualizar/upsert) yDELETEdevuelven204sin cuerpo: el nodo lo trata como éxito.- Las consultas se hacen en SOQL (ej.
SELECT Id, Name FROM Account LIMIT 10). - El upsert usa un campo external id (un campo marcado como External ID en Salesforce): si existe un registro con ese valor lo actualiza, si no lo crea.
Podés probar la credencial con el botón Test, que obtiene el token OAuth2 y muestra el instance_url.
Salesforce: Crear registro (salesforceCreateRecord)
Sección titulada «Salesforce: Crear registro (salesforceCreateRecord)»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| credentials_id | credencial | Sí | Credencial de Salesforce |
| sobject | texto | Sí | Objeto (ej. Account, Contact, Lead, Opportunity, Case) |
| fields | JSON | Sí | Campos del registro, ej. {"Name":"ACME"} |
Salida: { "id": "...", "success": true }.
Salesforce: Leer registro (salesforceGetRecord)
Sección titulada «Salesforce: Leer registro (salesforceGetRecord)»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| credentials_id | credencial | Sí | Credencial de Salesforce |
| sobject | texto | Sí | Objeto (ej. Account) |
| record_id | texto | Sí | id del registro |
| fields | texto | No | Campos a devolver, separados por coma (ej. Name,Email). Vacío = todos |
Salesforce: Actualizar registro (salesforceUpdateRecord)
Sección titulada «Salesforce: Actualizar registro (salesforceUpdateRecord)»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| credentials_id | credencial | Sí | Credencial de Salesforce |
| sobject | texto | Sí | Objeto (ej. Account) |
| record_id | texto | Sí | id del registro a actualizar |
| fields | JSON | Sí | Campos a actualizar, ej. {"Phone":"555"} |
Salida: { "id": "...", "updated": true } (Salesforce responde 204).
Salesforce: Borrar registro (salesforceDeleteRecord)
Sección titulada «Salesforce: Borrar registro (salesforceDeleteRecord)»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| credentials_id | credencial | Sí | Credencial de Salesforce |
| sobject | texto | Sí | Objeto (ej. Account) |
| record_id | texto | Sí | id del registro a borrar |
Salida: { "id": "...", "deleted": true } (Salesforce responde 204).
Salesforce: Consulta SOQL (salesforceQuery)
Sección titulada «Salesforce: Consulta SOQL (salesforceQuery)»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| credentials_id | credencial | Sí | Credencial de Salesforce |
| soql | texto largo | Sí | Consulta SOQL, ej. SELECT Id, Name FROM Account LIMIT 10 |
Salida: el array de registros (records).
Salesforce: Upsert registro (salesforceUpsertRecord)
Sección titulada «Salesforce: Upsert registro (salesforceUpsertRecord)»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| credentials_id | credencial | Sí | Credencial de Salesforce |
| sobject | texto | Sí | Objeto (ej. Account) |
| external_id_field | texto | Sí | Campo external id (ej. ExternalId__c) |
| external_id_value | texto | Sí | Valor del external id |
| fields | JSON | Sí | Campos del registro |
Salida: { "id": "...", "success": true, "created": true|false }.
Ejemplo
Sección titulada «Ejemplo»Crear un Lead a partir de un formulario:
- Nodo: Salesforce: Crear registro
- sobject:
Lead - fields:
{ "LastName": "{{data.apellido}}", "Company": "{{data.empresa}}", "Email": "{{data.email}}"}Salida:
{ "id": "00Q5g00000AbCdEFGH", "success": true}Manejo de errores
Sección titulada «Manejo de errores»Cada nodo clasifica los errores para que el motor sepa si tiene sentido reintentar:
| Situación | Reintentable | Qué hacer |
|---|---|---|
| Validación (400) | No | Salesforce devuelve el motivo ([{message, errorCode}], ej. campo requerido faltante). Corregí los datos. |
| No encontrado (404) | No | El registro o el objeto no existen. Revisá el id y el sobject. |
| Autenticación (401/403) | No | Tras un reintento automático re-obteniendo el token, sigue fallando: revisá la Connected App, el usuario, la contraseña+security token, o los permisos. |
| Servidor (5xx) | Sí | Error temporal de Salesforce; se reintenta automáticamente. |
| Límite de tasa (429/503) | Sí | Se respeta el Retry-After y se reintenta. |
| Red / Timeout | Sí | Problema pasajero; se reintenta automáticamente. |
Ver también
Sección titulada «Ver también»- HubSpot y Monday — otros CRM.
- Jira (Atlassian), Asana, Trello, Notion y ClickUp — gestión de trabajo.
- Cola de reintentos (DLQ) — cómo se reintentan las ejecuciones que fallan.
- Nodo HTTP — para endpoints de Salesforce no cubiertos por estos nodos.