---
title: "Escribir tu propio mensaje de alerta y usar webhooks"
slug: "webhooks-and-messages"
kind: "HELP_ARTICLE"
category: "alerts"
locale: "es"
canonical: "https://help.forecastcity.com/es/alerts/webhooks-and-messages"
published: "2026-09-08T17:58:35.210Z"
updated: "2026-10-27T23:48:47.798Z"
description: "Mira qué dice el mensaje de una alerta, añade tus propias palabras y variables, y envía alertas a tu propio software, a Discord o a Slack con un webhook."
---

# Escribir tu propio mensaje de alerta y usar webhooks

Cada alerta envía un mismo mensaje a todos los lugares que marcaste. Por sí solo, el mensaje dice qué ocurrió, el precio en ese momento y si la alerta sigue encendida. Añade una nota sobre tu plan de trading para ver lo que tenías previsto antes de abrir el gráfico. Configurar tu alerta y su mensaje es sencillo, rápido y preciso. Escríbelo en el editor, o pídele o pregúntale a **AI Trading Assistant** por voz o por escrito.

Si usas tu propio software, Discord o Slack, un webhook también envía cada alerta allí, sin que tengas que copiar nada a mano. Esta guía explica las dos cosas.

El ejemplo: una alerta en EURUSD que se activa cuando el precio cruza por encima de 1.09 en el gráfico de 5m.

## Qué dice el mensaje automático

Cuando el campo **Message** está vacío, la alerta escribe su propio mensaje al activarse. En el ejemplo, el mensaje dice:

```
EURUSD crossed above 1.09
Price 1.0901.
This alert is now off. It was set to fire once.
```

La primera línea dice qué ocurrió, con las palabras del editor de alertas. La línea siguiente da las cifras de ese momento. La última línea dice si la alerta sigue encendida. El ejemplo usa **Once only**, así que la alerta queda apagada. Con las demás opciones de Trigger, la última línea dice «This alert stays on.»

Las demás alertas siguen el mismo orden. Estas son algunas primeras líneas, cada una con la línea de cifras que la sigue:

-   Una línea: «GBPJPY touched 1h Resistance R1» y «Price 210.16, line at 210.20.»
    
-   La ruptura de una línea: «GBPJPY broke above 1h Resistance R1» y «The 1h candle closed at 210.32, above the line at 210.20.»
    
-   Un indicador: «BTCUSD: 1h RSI(14) crossed above 70» y «RSI(14) was 71.4 when the 1h candle closed at 105240.50.»
    
-   Un cambio de pronóstico: «GBPJPY: 1h forecast turned bearish» y «Before: bullish above 209.80. Now: bearish below 209.40.»
    

Una alerta con varias condiciones dice cuántas se cumplieron. Después da una línea por cada condición que se cumplió:

```
BTCUSD: both conditions met
• Price crossed above 105000: the 1h candle closed at 105240.50
• 1h RSI(14) is above 55 (now 58.2)
This alert stays on.
```

Con más condiciones, la primera línea dice, por ejemplo, «all 3 conditions met» o «2 of 3 conditions met». Cuando solo se cumplió una condición, por ejemplo con **or**, la primera línea nombra esa condición y después vienen sus cifras.

## Escribir el mensaje

1.  Abre el editor de alertas y ve a la pestaña **Options**.
    
2.  Haz clic en la fila **Message**. Mientras el mensaje está vacío, muestra Auto. Debajo se abre un campo de texto.
    
3.  Escribe tu mensaje. El campo admite hasta 400 caracteres.
    
4.  Para añadir un valor en tiempo real, abre **Available variables** debajo del campo. Copia la variable tal cual, con sus llaves dobles.
    

![La fila Message abierta en la pestaña Options, con un campo vacío, la línea de debajo y Available variables.](https://m.forecastcity.com/t/tnt_forecastcity/media/b4/b480142e20ce43cec05e3313cedc9941ceea0b334c3b3dda3ae8680099c0f69b.png)

El campo Message, abierto y todavía vacío, así que la alerta envía su mensaje automático.

1.  **Automatic message**: el campo vacío. Escribe aquí tus propias palabras o déjalo vacío.
    
2.  La línea debajo del campo: «Leave it blank and the alert says what happened and at what price. A message of your own is sent first, with that under it.» Es decir, si lo dejas vacío, la alerta dice qué ocurrió y a qué precio. Un mensaje tuyo va primero, con ese texto debajo.
    
3.  **Available variables**: los valores en tiempo real que puedes añadir a tu mensaje.
    

Tus palabras pasan a ser la primera línea, y el texto automático las sigue. En el ejemplo, este mensaje:

```
{{symbol}} on {{timeframe}}: check the 1h trend before entering.
```

llega así:

```
EURUSD on 5m: check the 1h trend before entering.
EURUSD crossed above 1.09. Price 1.0901.
This alert is now off. It was set to fire once.
```

El precio y la condición ya están en las líneas que siguen a tus palabras. Usa tu mensaje para lo que esas líneas no pueden decir, como tu plan de trading.

Un mensaje que escribes es también el nombre de la alerta en la lista del panel Alerts. Sin mensaje, la lista muestra un nombre hecho a partir de la condición. Para un nivel de precio el nombre es corto, como «EURUSD crossing up 1.09». Una línea o varias condiciones se leen como las escribe el editor, como «GBPJPY: 1h Price touches 1h Resistance R1». Cuando cambias la condición, ese nombre cambia con ella. Cuando vuelves a abrir la alerta, el campo **Message** sigue vacío. Las alertas que guardaste antes sin mensaje también muestran su nombre de esta forma.

## Qué muestra cada lugar

Todos los lugares reciben el mismo mensaje, adaptado a cada uno:

<table><thead><tr><th>Lugar</th><th>Qué muestra</th></tr></thead><tbody><tr><td>El aviso en la aplicación</td><td>La primera línea en negrita, con las cifras debajo.</td></tr><tr><td><strong>Notify my devices</strong></td><td>La primera línea como título, con las demás líneas debajo.</td></tr><tr><td><strong>Send to MetaTrader</strong></td><td>La primera línea como título, con las demás líneas debajo. MetaTrader muestra su propia hora junto al mensaje.</td></tr><tr><td><strong>Telegram</strong></td><td>El mensaje, la hora en tu propia zona horaria y un enlace al gráfico.</td></tr><tr><td><strong>Send email</strong></td><td>El mensaje, con la fecha y la hora en tu propia zona horaria.</td></tr><tr><td><strong>Webhook URL</strong></td><td>Discord y Slack reciben el mensaje con la hora en UTC. Con <strong>Raw JSON</strong>, tu software recibe las variables de abajo.</td></tr></tbody></table>

Telegram escribe la hora así: «24 Sep, 11:02 London time». Si la zona horaria no es la correcta, elige la tuya en **Timezone**, en la página **Your profile**. Cuando ForecastCity no conoce tu zona horaria, la hora está en UTC.

El enlace de un mensaje de Telegram, de un correo electrónico, de una notificación en el teléfono o de una ventana emergente de MetaTrader abre el gráfico de ese símbolo con el panel Alerts. En la mayoría de las alertas 4CM-AI, abre el gráfico con la **Alert observation** de esa activación.

## Añadir valores en tiempo real con variables

Una variable se sustituye por su valor cuando la alerta se activa. Estas son las variables de **Available variables**:

<table><thead><tr><th>Variable</th><th>Qué escribe</th><th>Ejemplo</th></tr></thead><tbody><tr><td><code>{{symbol}}</code></td><td>El símbolo</td><td>EURUSD</td></tr><tr><td><code>{{price}}</code> y <code>{{close}}</code></td><td>El precio cuando se activó la alerta</td><td>1.0901</td></tr><tr><td><code>{{condition_text}}</code></td><td>Lo que ocurrió, sin el símbolo</td><td>Price crossed above 1.09</td></tr><tr><td><code>{{condition}}</code></td><td>La condición como código corto</td><td>CROSSING_UP 1.09</td></tr><tr><td><code>{{timeframe}}</code></td><td>La temporalidad de la alerta</td><td>5m</td></tr><tr><td><code>{{time_iso}}</code></td><td>La fecha y la hora, en UTC</td><td>2026-09-24 10:02 UTC</td></tr><tr><td><code>{{time}}</code></td><td>La misma hora como número de segundos, para software</td><td>1790244120</td></tr><tr><td><code>{{time_now}}</code></td><td>El momento en que se envió el mensaje, como número</td><td>1790244121</td></tr><tr><td><code>{{exchange}}</code></td><td>De dónde vienen los precios</td><td>TwelveData</td></tr><tr><td><code>{{status}}</code></td><td>Si la alerta sigue encendida</td><td>This alert stays on.</td></tr><tr><td><code>{{alert_url}}</code></td><td>Un enlace al gráfico de ese símbolo, con tus alertas</td><td>una dirección web</td></tr><tr><td><code>{{name}}</code></td><td>Tu mensaje con cada variable sustituida por su valor, o el nombre que muestra la lista del panel Alerts</td><td>EURUSD crossing up 1.09</td></tr></tbody></table>

En una línea, `{{condition_text}}` dice por ejemplo «Price touched 1h Resistance R1». Con varias condiciones, une las condiciones que se cumplieron con la palabra and. Después de que se active una alerta **Once only**, `{{status}}` dice «This alert is now off. It was set to fire once.» En una alerta con varias condiciones, una línea o un indicador, `{{condition}}` dice `TREE`. Esta variable es un código para software.

En las alertas 4CM-AI, `{{forecast_summary}}` resume lo que hizo el pronóstico y `{{forecast_symbol}}` indica el símbolo del pronóstico. `{{forecast_cycle}}` es un contador que sube cada vez que la alerta empieza a vigilar de nuevo. Un mensaje que incluye `{{forecast_summary}}` no recibe líneas automáticas debajo, porque el resumen ya dice qué ocurrió.

`{{price}}` y `{{close}}` quedan vacías en la mayoría de las alertas 4CM-AI, porque esas alertas no tienen un único precio. `{{time_iso}}` usa UTC, así que puede no coincidir con el reloj de tu pantalla. Una variable que no existe se queda exactamente como la escribiste: un `{{prices}}` mal escrito llega como `{{prices}}`.

## Enviar alertas a un webhook

Un webhook envía cada alerta a una dirección web, donde la recibe tu propio software, un canal de Discord o un canal de Slack. Tu plan de suscripción debe incluir webhooks.

1.  En la pestaña Options, en Notifications, marca **Webhook URL**. Aparecen un campo para la dirección, una opción Format y un campo para el cuerpo.
    
2.  Pega la dirección en la que escucha tu receptor. Debe empezar por `http://` o `https://`.
    
3.  Ajusta **Format** a **Raw JSON** y deja vacío el campo del cuerpo.
    
4.  Haz clic en **Create**, o en **Save** si estás editando una alerta.
    

![La fila Webhook URL marcada, con una dirección, el selector de formato en Raw JSON y el campo del cuerpo vacío.](https://m.forecastcity.com/t/tnt_forecastcity/media/9e/9e711afc65b24ebfe70a8e091cc4006b5f9d7d57d50d61b67e5ee920f8ab4877.png)

La fila Webhook URL marcada, con una dirección y Format en Raw JSON. Con el campo del cuerpo vacío se envían los datos predeterminados.

1.  La dirección en la que escucha tu receptor. Usa los puertos estándar, 80 o 443.
    
2.  **Format**: Raw JSON para tu propio software, o Discord o Slack para esos servicios.
    

Con el campo del cuerpo vacío, tu receptor recibe un objeto JSON con todas las variables de la tabla, más `alertId` y `triggerId`. Estos dos identifican la alerta y esta activación concreta. Revisa un envío real antes de crear algo que dependa de sus campos.

Debajo del campo, el editor muestra la dirección del servidor desde el que llegan nuestras solicitudes. Añádela a tu lista de direcciones permitidas si tu receptor solo acepta direcciones conocidas.

### Qué necesita la dirección

-   Una dirección pública en un puerto estándar: 80 para http, 443 para https. Los mensajes a otros puertos, a localhost o a una dirección de red privada no se envían.
    
-   Sin nombre de usuario ni contraseña dentro de la dirección.
    
-   Una respuesta en menos de 3 segundos, desde esa misma dirección. Una redirección a otra dirección cuenta como un fallo.
    

El editor solo comprueba que la dirección empiece por `http://` o `https://`. Los demás requisitos se comprueban cuando sale un mensaje, así que prueba tu dirección con una alerta real. En las alertas de precio y técnicas, si tu receptor tiene un error temporal, el envío se reintenta hasta dos veces más. El mensaje de una alerta 4CM-AI no se vuelve a enviar si se agota el tiempo de espera o si hay un error del servidor, porque puede que tu receptor ya haya actuado según ese mensaje.

## Escribir tu propio cuerpo de webhook

El campo del cuerpo acepta una plantilla con las mismas variables que el mensaje. Admite hasta 2000 caracteres. El campo te deja escribir más, pero un cuerpo más largo se rechaza al guardar.

Con **Raw JSON**, un receptor que espera un objeto pequeño podría recibir este cuerpo:

```
{"symbol":"{{symbol}}","condition":"{{condition_text}}","time":"{{time_iso}}","source":"ForecastCity"}
```

Las variables se rellenan como texto plano. Un valor que contenga comillas o un salto de línea puede romper tu JSON. Un cuerpo que no sea JSON válido se envía como texto plano.

Para un canal de Discord, ajusta **Format** a **Discord** y usa la dirección de webhook del canal. Luego escribe una línea corta en el campo del cuerpo, por ejemplo:

```
{{symbol}}: {{condition_text}}. Open your alerts: {{alert_url}}
```

Para Slack, elige **Slack** y escribe de la misma forma. ForecastCity envuelve tu texto en el formato que espera cada servicio. Con el campo vacío, ambos reciben el mensaje de la alerta, como se muestra más arriba, con la hora en UTC en su última línea.

## Comprobar el resultado

1.  Espera a que la alerta se active y luego abre la pestaña **Log** del panel Alerts.
    
2.  Compara lo que recibió tu receptor con la entrada del Log: lo que ocurrió, el símbolo y la hora.
    

El Log muestra que la alerta se activó. No muestra si tu receptor aceptó el mensaje, así que revisa también el propio registro de tu receptor. Si ves llaves como `{{prices}}`, hay un nombre de variable mal escrito. Si tu receptor rechaza el cuerpo, revisa el JSON.

## Conviene saber

-   El mensaje va a todos los lugares que marcaste. El cuerpo del webhook va solo al webhook.
    
-   Discord muestra hasta 1900 caracteres y Slack hasta 3000. El texto más largo se corta.
    

## Guías relacionadas

-   [Elegir dónde recibes tu alerta](<https://help.forecastcity.com/es/help/alerts/notification-delivery>)
    
-   [Averiguar por qué no llegó una alerta](<https://help.forecastcity.com/es/help/alerts/trigger-log-and-troubleshooting>)
    
-   [Crear tu primera alerta de precio](<https://help.forecastcity.com/es/help/alerts/first-price-alert>)
