Skip to main content

Schedule a mapping and watch its runs

A saved MapCraft mapping isn't a pipeline until it runs on its own. FlowBridge turns it into one: a schedule fires your published DAG on a cron or fixed interval, a webhook trigger lets an upstream system kick it off, the Runs tab shows every execution, and a failure webhook pings Slack or Teams the moment a run breaks.

By the end of this page you will have:

  • Published a DAG and attached a cron or interval schedule.
  • Seen scheduled runs land in the Runs history with their status.
  • Wired an optional failure-alert webhook and confirmed the payload shape.
  • Created an HMAC-signed webhook trigger for upstream-driven runs.
You'll need
  • A MapCraft project with a published DAG (open /flowbridge/{projectId} — if you see "publish the DAG from the canvas", do that first).
  • For alerts: a Slack or Teams incoming-webhook URL (any endpoint that accepts a JSON {"text": ...} body works).

Step 1 — Add a schedule

Open FlowBridge → Schedule for your project. Click + Add schedule and pick a cadence:

CadenceFieldExample
Cron5-field expression0 6 * * * — every day at 06:00
Fixed intervalseconds (≥ 30)900 — every 15 minutes

The scheduler tick runs every 30 seconds, so interval cadences are honored to the nearest tick and cron cadences round to the minute boundary.

Step 2 — Add a failure-alert webhook (optional)

In the same form, paste a Failure webhook URL. When any run of this DAG fails, DataChord POSTs a compact, Slack/Teams-compatible payload:

{
"text": "❌ DataChord: DAG run failed — project Order Sync (run 1a2b3c4d): …",
"datachord": {
"event": "dag.run.failed",
"run_id": "…", "project_id": "…", "trigger": "scheduled",
"error": "…", "failed_at": "2026-06-13T06:00:12Z"
}
}

The URL is SSRF-checked when you save it (private/internal hosts are rejected unless your deployment sets NOTIFY_WEBHOOK_ALLOW_PRIVATE_URLS=true).

Step 3 — Watch the runs

Open FlowBridge → Runs. Each execution shows a status badge (success / running / failure / partial), the trigger that started it (manual, scheduled, or webhook), the lane, and the record count. Click a failed row to expand the full error message.

Step 4 — Create a webhook trigger (upstream-driven)

If an upstream system should drive the pipeline instead of a clock, add a webhook trigger on the Schedule page. DataChord returns a one-time secret and a URL of the form /api/v1/execution/dags/{dagId}/webhook-trigger. The caller signs the request body with HMAC-SHA256:

X-DataChord-Trigger-Id: <trigger id>
X-DataChord-Signature: sha256=<hex HMAC of the raw body>

A valid signature spawns a run with trigger="webhook", visible in the Runs tab alongside scheduled runs.

Verify

  • A schedule you created shows a next_fire_at time and, after it fires, a last_fired_at and a new row in Runs.
  • Forcing a failing run delivers the JSON alert to your Slack/Teams webhook.

What's next