*Workflows › Guías*

# Iniciar un workflow desde tu propio sistema

> Tu tienda web envía cada pedido nuevo a Filmo. El workflow muestra una notificación interna con el número de pedido y el total.

> **Antes de empezar:** Todos los datos de abajo son ficticios. Necesitas un rol de administrador. El workflow solo muestra una notificación dentro de la app: no envía ningún email ni cambia ningún dato.

## Constrúyelo

1. **Crea el workflow** «Nuevo workflow», «Configura un trigger», «Webhook».
2. **Declara el cuerpo** En «Cuerpo», declara un «Estructura» con tres campos: `orderNumber` («Texto»), `customerEmail` («Texto») y `total` («Número»).
3. **Mostrar una notificación** Sumar «Notificación interna». Estilo neutro, a todos los usuarios. Título: "Nuevo pedido web". Mensaje: inserta las variables `orderNumber` y `total` del cuerpo del trigger.
4. **Publicar y pasar a Live** «Publicar y activar». Después copia el «Endpoint» y el «Secreto» desde el panel lateral del trigger.

## Enviar una entrega

*Una entrega válida*

```bash
curl -sS -X POST "https://app.filmo.io/api/webhooks/workflows/whk_<token>" \
  -H "X-Webhook-Secret: whsec_<secret>" \
  -H "Idempotency-Key: web-order-1001" \
  -H "Content-Type: application/json" \
  -d '{"orderNumber":"W-1001","customerEmail":"ana@example.com","total":120.5}'
```

Filmo responde 202 con el id de la ejecución. Abre la pestaña Runs: la ejecución se completó y todos los usuarios de la app recibieron la notificación. Envía de nuevo el mismo comando: la segunda respuesta es 200 con `duplicate: true` y el mismo id de ejecución, porque la `Idempotency-Key` es la misma.

## Mira la parte que sorprende

*Una entrega cuyo total es texto*

```bash
curl -sS -X POST "https://app.filmo.io/api/webhooks/workflows/whk_<token>" \
  -H "X-Webhook-Secret: whsec_<secret>" \
  -H "Content-Type: application/json" \
  -d '{"orderNumber":"W-1002","customerEmail":"ana@example.com","total":"120.5"}'
```

Esta también responde 202. Pero `total` es el texto "120.5", no un número, así que la ejecución empieza y falla con "the webhook body does not match the declared type: total: expected a number and received a text". Al remitente nunca se le avisa. Por eso conviene revisar la pestaña Runs, o declarar el campo como Desconocido si no puedes fiarte de que tu remitente envíe números.

## Cosas que comprobar

- 404 significa que no está publicado, que no está en Live, que está pausado o que el token es incorrecto. 401 significa que falta el secreto o que es incorrecto.
- No hay forma de cambiar el token ni el secreto. Si uno se filtra, construye un workflow nuevo.
- Cualquiera que pueda abrir un workflow público puede leer su secreto (los administradores todavía pueden abrir los privados). Hazlo privado si eso importa.
- Envía una `Idempotency-Key` para todo lo que no deba ejecutarse dos veces.

> **Nota:** El contrato completo, con todas las respuestas y límites, está en [Webhooks entrantes](https://docs.filmo.io/es/workflows/incoming-webhooks).

---

URL canónica: https://docs.filmo.io/es/workflows/guides/start-from-your-system  
Última actualización: 2026-10-09