# Welcome every new customer

URL: /workflows/guides/welcome-every-new-customer · Id: `guide:welcome-every-new-customer`

> Say "welcome every new customer" and each signup gets set up for them, rescued if they stall, and counted when they reach first value.

Every new [Customer](/business/nouns/customer) gets a ready workspace, setup done for them, and one rescue email if they stall. Most churn happens in the first week, before anyone sees the product work; doing the setup for them closes that gap.

Needs: [Customer](/business/nouns/customer)

**Before it runs**

- You leave the chat: Never: it all happens in the chat.

## What you get
- 1 workspace per new Customer, ready before their first sign-in (Tenant)
- 1 setup done for them: keys, imports and first calls (Action)
- 1 rescue email to anyone whose start stalls (Message)
- 1 activation mark at first value, for the activation rate (Customer)
- 1 Issue for any setup step done by hand three times (Issue)

## Your agent does
**For agents**

- Guide: `guide:welcome-every-new-customer`, status `live`. Page: [/workflows/guides/welcome-every-new-customer.md](/workflows/guides/welcome-every-new-customer.md).
- Approval: none. Run it when the founder asks.
- Leaves the chat: never.
- Needs first: [Customer](/business/nouns/customer).
- Run: call the steps in order, each through the API, SDK, CLI or MCP tab below; a later step passes the `$id` an earlier one returns. Each value marked example is the sample business’s: pass the founder’s own.

| Step | Verb | Inputs (type, required, this guide’s value) | Returns |
| --- | --- | --- | --- |
| 1 | [`Process.enable`](/business/nouns/process/enable) (`verb:Process.enable`) | `process` Process (an id), required: example `"process_onboarding"` | `process` Process |
| 2 | [`Setting.update`](/business/nouns/setting/update) (`verb:Setting.update`) | `id` string, required: example `"setting_1"`; `key` string: example `"onboarding.doneForYou"`; `value` json: example `true` | `setting` Setting |

Returns: the last call answers with `setting` and its `action`, whose `status` is `done`, `pending` (waiting on an Approval or a Worker), `failed`, `canceled` or `refused`:

```json
{
  "api": "https://api.sb/leaseline.app",
  "setting": {
    "$id": "https://api.sb/leaseline.app/settings/setting_1",
    "$type": "Setting",
    "key": "onboarding.doneForYou",
    "value": true
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/action_1",
    "operation": "Setting.update",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/action_1"
  }
}
```

Next: offer “Let customers set themselves up; just send the guide”, or “Call anyone who has not activated after three days”.

Calls: `Process.enable` → `Setting.update`

Ask:

```text
Welcome every new customer.
Do the onboarding setup for every new customer?
Who has not activated yet?
```

API:

```bash
# 1. Process.enable
curl -X POST https://api.sb/leaseline.app/processes/process_onboarding/enable \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"

# 2. Setting.update
curl -X PATCH https://api.sb/leaseline.app/settings/setting_1 \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"value":true,"key":"onboarding.doneForYou"}'
```

SDK:

```ts
import { $ } from 'startup-builder'

await $.Process.enable({ process: 'process_onboarding' })
await $.Setting.update({ id: 'setting_1', value: true, key: 'onboarding.doneForYou' })
```

CLI:

```bash
npx startup-builder do Process.enable --json '{"process":"process_onboarding"}'
npx startup-builder do Setting.update --json '{"id":"setting_1","value":true,"key":"onboarding.doneForYou"}'
```

MCP:

```json
{
  "name": "do",
  "arguments": {
    "code": "await $.Process.enable({ process: 'process_onboarding' })\nreturn await $.Setting.update({ id: 'setting_1', value: true, key: 'onboarding.doneForYou' })"
  }
}
```

## Change it
- Let customers set themselves up; just send the guide.
- Call anyone who has not activated after three days.
- Count the first import as activation.

## Under the hood
- Systems: [Customer access](/systems/customer-access), [Success](/systems/success), [Mailboxes](/systems/mailboxes)
- Nouns: [Customer](/business/nouns/customer), [Tenant](/business/nouns/tenant), [Message](/business/nouns/message), [Issue](/business/nouns/issue), [Setting](/business/nouns/setting)
- Events: `Customer.created`, [`Customer.activated`](/business/events/Customer.activated)

The [Onboarding](/workflows/processes/onboarding) [Process](/business/nouns/process) starts on every `Customer.created`, with the [Onboarding Specialist](/agents/customer/onboarding-specialist) in the seat. A step done by hand three times becomes an [Issue](/business/nouns/issue), so the product absorbs it. To test a shorter welcome email against the current one, see [test two onboarding emails](/workflows/guides/test-two-onboarding-emails).