---
title: "Probar y depurar una campaña"
description: "Ejecuta una prueba desde el lienzo, lee el historial de ejecuciones para encontrar qué nodo falló y por qué, y ve qué hace editar una campaña a las ejecuciones en curso."
canonical: https://docs.afp.monster/es/guides/test-and-debug-campaigns
updated: 2026-08-19
pageType: guide
---

Una ejecución de prueba recorre tu grafo guardado sin tocar Facebook ni Instagram: haz clic en **Prueba** en el lienzo, escribe opcionalmente el mensaje que la campaña debe tratar como entrante, y el lienzo cambia a la vista **Ejecuciones** con la ruta que recorrió la ejecución resaltada. Las ejecuciones reales llegan a la misma lista, así que una sola vista te dice qué nodo ejecutó, qué nodo falló y por qué se detuvo la ejecución.

## Qué necesitas primero

- Una campaña guardada en el lienzo con al menos un nodo de activación. Una ejecución de prueba ejecuta la versión guardada actual de la campaña, así que los cambios no guardados no se prueban. Consulta [Construir una campaña en el lienzo](/es/guides/build-a-campaign).
- No se necesita configuración de página más allá de eso. Una ejecución de prueba no está vinculada a una página conectada y no realiza llamadas a Facebook ni a Instagram.

## ¿Cómo inicio una ejecución de prueba?

1. Abre la campaña en el lienzo y haz clic en **Guardar** si hay algo sin guardar.
2. Haz clic en **Prueba**.
3. Escribe el mensaje de muestra que la ejecución debe tratar como el comentario o mensaje directo entrante. Déjalo vacío y la ejecución se comportará como si el texto del mensaje fuera la palabra `test`.
4. Haz clic en **Ejecutar prueba**.
5. El lienzo cambia a la vista **Ejecuciones** y la nueva ejecución aparece en la parte superior de la lista.
6. Haz clic en la ejecución para superponer su ruta en el lienzo: los nodos por los que pasó se marcan como visitados, el nodo en el que se detuvo se marca como actual, y los nodos que nunca alcanzó se atenúan.

![El diálogo de prueba en el lienzo de la campaña, con un cuadro de texto para el mensaje que la ejecución de prueba debe tratar como el comentario entrante](../../../../assets/screenshots/guides/test-and-debug-campaigns/test-dialog.webp)

Todo el recorrido termina antes de que el lienzo responda, así que no hay animación de una ejecución avanzando por los nodos — lo que obtienes es el estado final.

## ¿En qué se diferencia una ejecución de prueba de una real?

Una ejecución de prueba usa el mismo motor y el mismo grafo, y se detiene por las mismas razones. Lo que omite es cada llamada que llegaría a una persona real.

| Comportamiento | Ejecución de prueba | Ejecución real |
|---|---|---|
| Qué la inicia | El botón **Prueba** | Un comentario o mensaje directo que coincide con la activación |
| Destinatario | Un destinatario de prueba sintético | La persona que comentó o envió el mensaje |
| Página conectada | Ninguna | La página a la que está vinculada la campaña |
| Mensajes directos, respuestas a comentarios, ocultar, eliminar | Se registran como una descripción de lo que se habría hecho; no se envía nada | Se envían a través de Facebook o Instagram |
| Etiquetas | No se agregan, no se eliminan | Se aplican al contacto |
| Nodos `delay` | Se registran como omitidos, y la ejecución termina ahí | Se programan, se reanudan cuando pasa la espera |
| Una `condition` configurada para esperar una respuesta | Se detiene y se queda detenida — ninguna respuesta puede llegar | Se reanuda cuando la persona responde |
| En la lista de ejecuciones | Sí, marcada como prueba | Sí |

Porque una ejecución de prueba termina en el primer nodo `delay`, no te dice nada sobre los nodos después de ese retraso. Elimina el retraso temporalmente, o verifica esa parte con un comentario real.

## ¿Qué me dice el historial de ejecuciones?

La vista **Ejecuciones** lista las 20 ejecuciones más recientes de la campaña, más nuevas primero, pruebas y ejecuciones reales juntas. Cada fila indica si es una prueba, si sigue activa, el destinatario, cuándo comenzó, cuándo completó, el nodo en el que está y un mensaje de error si lo tiene.

Seleccionar una ejecución carga la versión del grafo en la que comenzó esa ejecución y marca todos los nodos que visitó. Cada nodo visitado registra su tipo, cuándo se ejecutó y ya sea una descripción de lo que hizo el nodo o el error que generó — que es cómo distingues "el nodo de mensaje directo envió" de "el nodo de mensaje directo falló".

La lista no se actualiza sola. Usa el control de actualización en el panel para volver a obtener una ejecución que aún esté activa.

### ¿Qué registra la ruta en cada nodo?

| Entrada contra el nodo | Qué significa |
|---|---|
| Activación disparada | La ejecución comenzó aquí. Cada ejecución tiene esto como su primera entrada |
| Una descripción de la acción | Un nodo de acción se ejecutó: un mensaje directo enviado, un comentario respondido u ocultado, etiquetas cambiadas |
| Esperando respuesta | La ejecución se detuvo en una `condition` configurada para esperar una respuesta y no se ha despertado |
| Retraso programado, con la espera en segundos | Un nodo `delay` programó la reanudación y dejó de avanzar |
| Tomó el brazo 2 | Un `random_split` eligió ese brazo, y la ejecución continuó por él |
| Flujo detenido | Un nodo `stop` finalizó la ejecución deliberadamente |
| Un mensaje de error | El nodo generó un error. La ejecución no continúa después de él |

```d2 title="What each kind of next node does to a run: continue, park, schedule, complete, or stop with an error" data-wide="true"
direction: right
starts: "La ejecución comienza en la activación"
next: "Siguiente nodo" {shape: diamond}
visited: "Registrado como visitado, la ejecución continúa"
parked: "Detenida: aún activa,\nel nodo actual es la condition"
scheduled: "Programada: aún activa,\nse reanuda cuando pasa la espera"
completed: Completada
cycle: "Detenida con un error de ciclo"
errored: "Aún activa, error registrado,\nla ejecución no continúa"
starts -> next
next -> visited: "nodo de activación, acción o etiqueta"
visited -> next
next -> parked: "condition configurada para esperar una respuesta"
next -> scheduled: "nodo delay"
next -> completed: "nodo stop, o una salida sin nada conectado"
next -> cycle: "un nodo ya visitado"
next -> errored: "la acción generó un error"
```

### ¿Cómo leo el estado de una ejecución?

| Lo que ves | Qué significa | Qué hacer |
|---|---|---|
| No activa, con una hora de completado | La ejecución llegó a un nodo `stop`, o a una salida sin nada conectado después | Nada. Este es un final normal |
| Aún activa, el nodo actual es una `condition` | La condition está configurada para esperar una respuesta y ninguna respuesta ha llegado | Espera la respuesta. Una ejecución de prueba se queda aquí, porque ninguna respuesta puede llegar a ella |
| Aún activa, el nodo actual es un `delay` | La espera está programada y aún no ha pasado | Espera a que pase el retraso |
| Aún activa, con un mensaje de error en el último nodo visitado | Una acción falló. La ejecución registra el error y no continúa después de ese nodo | Corrige la causa, luego inicia una nueva ejecución — esta no se reanuda por sí sola |
| No activa, un error nombra un ciclo en un nodo | La ruta volvió a un nodo que ya había visitado. Cada nodo se ejecuta como máximo una vez por ejecución | Reformula la rama para que la ruta nunca vuelva a visitar un nodo |
| No activa, un error dice que el paso programado no se ejecutó | Se programó un `delay` pero su reanudación nunca ocurrió | Prueba la rama de nuevo. Si se repite, repórtalo a soporte |
| No activa, un error dice que la persona no respondió en 7 días | La ejecución estuvo en una `condition` esperando una respuesta por una semana | Nada. La expiración es el final esperado para conversaciones que nadie continúa |

Los reintentos son limitados. Una reanudación después de un `delay` se intenta hasta tres veces antes de que la ejecución se marque como fallida con el último error. Una acción que falla mientras la ejecución recorre el grafo no se reintenta en absoluto, y ninguna ejecución se vuelve a ejecutar desde el inicio.

## ¿Cuánto espera una ejecución una respuesta?

Siete días. Una ejecución detenida en una `condition` que espera una respuesta se cierra como fallida después de siete días de silencio, con un mensaje que dice que la persona no respondió, y las ejecuciones de prueba expiran de la misma manera.

Una reanudación programada que nunca ocurre se detecta por separado: una vez que pasa más de una hora del horario previsto, la ejecución se cierra como fallida con un mensaje que dice que el paso no se ejecutó.

Ambos plazos se verifican mediante un barrido periódico y no al instante en que pasan, así que una ejecución aún puede aparecer como activa por un tiempo después de que su tiempo haya pasado.

## ¿Qué le pasa a una ejecución en curso cuando edito o elimino la campaña?

Guardar la campaña escribe una nueva versión del grafo. Las ejecuciones ya en curso se mantienen vinculadas a la versión en la que comenzaron y la completan contra ella, así que editar una campaña nunca reconfigura una conversación que ya está en curso. Los nuevos eventos inician ejecuciones solo en la versión guardada actual, y un nodo de activación que sobrevive solo en una versión más antigua nunca se dispara de nuevo.

Las versiones más antiguas se mantienen mientras haya ejecuciones que las referencien, por eso una ejecución que abres en la vista **Ejecuciones** puede mostrar nodos que ya no están en el grafo que estás editando. El resaltado también puede no alinearse en ejecuciones lo suficientemente antiguas como para que la versión que usaron nunca se registrara; el panel vuelve al grafo actual para esos casos.

Eliminar la campaña elimina cada versión guardada de su grafo y cada ejecución registrada contra ella, incluidas las ejecuciones activas.

:::caution
Eliminar una campaña no es reversible y se lleva el historial de ejecuciones con ella. Una ejecución que estaba esperando un retraso no se reanuda — no se envía nada más para ella.
:::

## ¿Por qué no pasó nada cuando probé?

| Síntoma | Causa | Solución |
|---|---|---|
| **Prueba** informa que la campaña no tiene activación | El grafo guardado no contiene un nodo de activación | Agrega un nodo de activación, haz clic en **Guardar**, luego prueba de nuevo |
| La ejecución se completa después de uno o dos nodos | La salida que necesitaba no tiene nada conectado, así que la ejecución terminó ahí | Conecta la rama y guarda |
| El nodo `send_dm` aparece como visitado pero no llega ningún mensaje | Las ejecuciones de prueba registran acciones en lugar de enviarlas | Confirma la entrega con un comentario o mensaje directo real en la página conectada |
| No llega nada a un comentario real tampoco | La campaña está guardada pero no activa, o el comentario no coincidió con la activación y la condición | Verifica el interruptor **Activa**, luego lee [Coincidir comentarios con listas de palabras clave](/es/guides/keyword-lists) |
| Un segundo comentario de la misma persona no produce nada | Una persona no puede tener dos ejecuciones activas de la misma campaña a la vez, así que el segundo evento coincidente se omite | Espera a que la primera ejecución termine, o prueba con una cuenta diferente |
| La ejecución se detiene en un nodo de acción con un error | La acción falló contra Facebook o Instagram, y una ejecución nunca continúa después de una acción fallida | Corrige la causa, luego inicia una nueva ejecución |

## Relacionado

- [Estados de ejecución](/es/reference/execution-states) — cada estado en el que puede estar una ejecución y cómo sale de cada uno.
- [Coincidir comentarios con listas de palabras clave](/es/guides/keyword-lists) — por qué una `condition` tomó **Coincidencia** o **Sin coincidencia**.
- [Tipos de nodo](/es/reference/node-types) — qué hace cada nodo cuando la ejecución llega a él.
- [Construir una campaña en el lienzo](/es/guides/build-a-campaign) — el grafo que estás probando.
