Onboard a client: website, team, and access in one call
umami_onboard_clientProvision complete Umami tracking for a new client or project in one call: register the website, create an optional team, grant user access, and enable replay or heatmap. Avoids piecemeal setup.
Instructions
Set up everything Umami needs for a new client or project in a single call: register the website, optionally create a dedicated team for it, and optionally grant an existing internal user access to that team.
This is the fast path for "get this new site tracked and set up properly." For anything more custom, for example multiple websites under one team, use umami_create_website, umami_create_team, and umami_add_team_user individually.
Args:
website_name (string, required): Display name for the website.
domain (string, required): Domain being tracked, e.g. 'example.com'. No protocol.
team_name (string, optional): If given, creates a new team with this name and puts the website under it. Omit to create the website under your personal account instead.
grant_user_id (string, optional): An existing internal user (from umami_list_users) to add to the new team.
grant_role ('team-manager' | 'team-member' | 'team-view-only'): Role for grant_user_id on the new team (default: 'team-manager'). Ignored if grant_user_id or team_name is omitted.
replay_enabled (boolean, optional): Turn on session replay recording for the new website.
heatmap_enabled (boolean, optional): Turn on heatmap collection for the new website.
sample_rate (number, optional): Fraction of sessions to record for replay, 0 to 1. Only applied if replay_enabled or heatmap_enabled is set.
mask_level ('strict' | 'moderate', optional): PII masking strictness for replay recordings.
Returns: JSON shape: { "website": { "id": string, "name": string, "domain": string }, "team": { "id": string, "name": string, "access_code": string } | null, "granted_user": { "id": string, "username": string, "role": string } | null, "replay_config": { "replayEnabled": boolean, "heatmapEnabled": boolean, "sampleRate": number, "maskLevel": string } | null, "tracking_snippet": string }
Examples:
"Set up tracking for the new Walker's Land Services site, its own team, and add jordan to it" -> website_name="Walker's Land Services", domain="walkerslandservices.com", team_name="Walker's Land Services", grant_user_id="<jordan's user id>"
"Just get this client tracked, no team needed" -> website_name="...", domain="..."
"Set it up with replay on at 15% from day one" -> website_name="...", domain="...", replay_enabled=true, sample_rate=0.15
Error handling:
If website creation succeeds but team creation fails, the website still exists; the response reports the partial result rather than leaving it unclear.
If the website is created but the replay/heatmap follow-up update fails, the website and team (if any) still exist; use umami_update_website to finish that step manually.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain being tracked, e.g. 'example.com'. No protocol or path. | |
| team_name | No | Create a new team with this name and put the website under it. | |
| grant_role | No | Role for grant_user_id on the new team. | team-manager |
| mask_level | No | PII masking strictness for replay recordings. | |
| sample_rate | No | Fraction of sessions to record for replay, 0 to 1. | |
| website_name | Yes | Display name for the website. | |
| grant_user_id | No | Existing internal user to add to the new team. | |
| replay_enabled | No | Turn on session replay recording for the new website. | |
| heatmap_enabled | No | Turn on heatmap collection for the new website. |