Fórmulas: calcular antes de guardar
La probabilidad de cada oportunidad se calcula sola según su etapa, con una automation que corre antes de guardar y una fórmula.
Hasta ahora las automations corrieron Después y crearon otros registros. Esta corre Antes: modifica la oportunidad que se está guardando, en el mismo guardado. No hace falta un nodo Actualizar registro: alcanza con asignarle un valor a record.probability, y ese valor se guarda junto con el resto.
La tabla de Lucía:
| Etapa (Stage) | Probabilidad |
|---|---|
| Prospecting | 10 |
| Qualification | 25 |
| Proposal | 50 |
| Negotiation | 75 |
| Won | 100 |
| Lost | 0 |
Se podría armar con una condición de seis ramas y seis nodos. Con una fórmula es un solo nodo.
Creá la automation
ConfiguraciónAutomatizaciónProcesosNuevoEvento de registro, Label Probabilidad según etapa, Entidad Opportunity. Operación: Crear y Actualizar. Momento: Antes.
Al elegir Antes con Crear, el diálogo avisa que en ese momento el registro todavía no tiene id. No nos afecta: no lo usamos. Nueva automation.
Arrastrá Asignar valor
Del grupo Datos, arrastrá Asignar valor debajo del Trigger. En el inspector:
- Nombre del nodo:
Calcular probabilidad. - Modo: Asignar valor.
- Nombre de la variable: escribí
record.y elegírecord.probability. Así el destino es un campo de la oportunidad, no una variable del flujo.
Escribí la fórmula
Al lado de Valor, cambiá de Plantilla a Fórmula. El campo se agranda; escribí:
if({{record.stage}} == "Won", 100,
if({{record.stage}} == "Lost", 0,
if({{record.stage}} == "Negotiation", 75,
if({{record.stage}} == "Proposal", 50,
if({{record.stage}} == "Qualification", 25,
10)))))if(condición, si se cumple, si no) devuelve el segundo valor si la condición se cumple y el tercero si no. Anidados, se leen de arriba hacia abajo: la primera etapa que coincide decide. Si ninguna coincide, queda 10. Los saltos de línea son solo para leerla mejor.
Guardá
Guardar.

Plantilla o Fórmula
- Plantilla arma un texto:
Kickoff: {{record.name}}. Lo que esté entre llaves se reemplaza y el resto queda tal cual. - Fórmula calcula: números, comparaciones, funciones. Los datos entran con
{{…}}y los textos fijos van entre comillas ("Won").
Lo que más se usa en una fórmula:
| Para | Se escribe |
|---|---|
| Cuentas | + - * / y paréntesis: {{record.amount}} * {{record.probability}} / 100 |
| Comparar | ==, !=, >, <, >=, <=, y combinar con && (y) o || (o) |
| Elegir | if(condición, a, b); coalesce(a, b) devuelve el primero que no esté vacío |
| Redondear | round(x, decimales), floor(x), ceil(x), abs(x), min(…), max(…) |
| Texto | concat(a, " ", b), upper(x), lower(x), trim(x), length(x) |
| Mostrar un número | formatNumber({{record.amount}}, 0, "es-AR") da 80.000 |
Tres reglas que evitan sorpresas: + siempre suma números (para unir textos va concat); un valor vacío cuenta como 0 en una cuenta; y dividir por cero es un error.
En una automation Antes, un error corta el guardado. Si la fórmula tiene un paréntesis de menos o divide por cero, nadie puede guardar oportunidades hasta que la corrijas: el mensaje que ven nombra el nodo y el problema. Después de guardar una fórmula nueva, probala enseguida con un registro de prueba.
Con esta automation, la probabilidad deja de ser un dato que se carga a mano: si alguien escribe 90 en una oportunidad en Prospecting, al guardar vuelve a 10. Si el equipo necesita poder corregirla, la regla tiene que ser otra (por ejemplo, calcularla solo al Crear).

Cómo saber que te salió
- Creá
Implementaciónpara Lácteos del Sur, amount30000, stage Prospecting, sin cargar probabilidad. Al abrirla, Probability (%) dice 10. - En la barra de etapas, pasala a Negotiation y recargá la página: la probabilidad dice 75. (La barra actualiza la etapa en pantalla; el valor que calculó la automation se ve al recargar.)
- Con el lápiz de la tarjeta Details, escribí
90en Probability y hacé clic en Save: vuelve a 75.
¿Llegaste al resultado de arriba?