Module 16 · business · intermediate
Exercises 16 · Client Onboarding Pipeline
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.