Skip to content

Start from workflow/starter.json (webhook, plan, registry, modes) or your finished lesson workflow.

Exercise 1: Alert on partial onboardings

Task: Replace Alert Team (Exercise 1) with a Slack or email alert listing the failed steps and their reasons.

Done when: a run with one broken step (e.g. a wrong ClickUp list id) sends an alert naming clickup_tasks and the error.

Hint

{{ $json.steps.filter(s => !s.ok).map(s => '• ' + s.step + ': ' + s.detail).join('\n') }}

Exercise 2: Start onboarding when Stripe gets paid

Task: Trigger the pipeline from a Stripe payment.

Done when: a test-mode checkout creates the onboarding with the customer's name and email, and Stripe's retry of the same event doesn't onboard twice.

Hint

Separate workflow: Stripe Trigger (checkout.session.completed) → Edit Fields mapping customer_details.name/email and a package from the price or metadata → HTTP Request POST to /webhook/onboarding/new-client. The registry already handles duplicates.

Exercise 3: Swap ClickUp for Asana, Trello or Notion

Task: Replace the ClickUp node with your team's tool without touching the plan or report logic.

Done when: tasks appear in the new tool and the report still shows clickup_tasks, renamed to tasks, as OK.

Hint

Same input (one item per task: name, due, owner_role). Only the task node and the step name in report.js change.

Exercise 4: Resume instead of redo

Task: On a re-run after a partial onboarding, skip steps that already succeeded.

Done when: a partial run (Slack failed) followed by a re-run creates only the Slack channel; Drive, tasks and email aren't duplicated.

Hint

The registry already stores steps like drive_folder:ok. Before each step, an IF checks whether that step is already OK in previous.