---
title: "POST /api/projects/{project_id}/signals/onboarding/"
method: POST
path: "/api/projects/{project_id}/signals/onboarding/"
tags: ["signals"]
---

# POST /api/projects/{project_id}/signals/onboarding/

`POST /api/projects/{project_id}/signals/onboarding/`

## Request

- Base URL: `https://us.posthog.com`
- URL: `https://us.posthog.com/api/projects/{project_id}/signals/onboarding/`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

## Path parameters

- `project_id` string, required

## Request body

- InboxOnboardingDraft
  - `step` 'signals' | 'scouts' | 'github', required: * `signals` - Signals * `scouts` - Scouts * `github` - GitHub
  - `sources` InboxOnboardingSource[], required: Staged signal source choices.
    - `source_product` 'session_replay' | 'llm_analytics' | 'github' | 'linear' | 'jira' | 'zendesk' | 'conversations' | 'error_tracking' | 'pganalyze' | 'signals_scout' | 'signals_check' | 'logs' | 'health_checks' | 'endpoints' | 'replay_vision' | 'analytics' | 'freshdesk' | 'freshservice' | 'front' | 'gorgias' | 'kustomer' | 'dixa' | 'plain' | 'gitlab' | 'gitea' | 'shortcut' | 'sentry' | 'rollbar' | 'bugsnag' | 'honeybadger' | 'raygun' | 'datadog' | 'snyk' | 'sonarqube' | 'semgrep' | 'rapid7_insightvm' | 'featurebase' | 'frill' | 'aha' | 'uservoice' | 'productboard' | 'canny' | 'asknicely' | 'retently' | 'appfigures' | 'appfollow' | 'judgeme_reviews' | 'intercom' | 'hubspot' | 'engineering_analytics' | 'google_search_console' | 'pagerduty' | 'opsgenie' | 'incident_io' | 'firehydrant' | 'squadcast' | 'servicenow' | 'solarwinds_service_desk' | 'grafana_irm' | 'xmatters' | 'betterstack' | 'newrelic' | 'trigger_dev' | 'checkly' | 'roark' | 'monte_carlo' | 'bigeye' | 'aws_security_hub' | 'aws_guardduty' | 'aws_inspector' | 'microsoft_defender_cloud_apps' | 'clickup' | 'wrike' | 'trello' | 'bugherd' | 'dynamics365' | 'zoho_crm' | 'planhat' | 'trustpilot' | 'okendo' | 'sleekplan' | 'bettermode' | 'discourse' | 'mintlify' | 'langsmith' | 'sprig' | 'gainsight_px' | 'dynatrace' | 'statuspage' | 'cronitor' | 'instatus' | 'asana' | 'monday' | 'plane' | 'azure_devops' | 'helpscout' | 'decagon' | 'vitally' | 'usersnap' | 'typeform' | 'qualtrics' | 'surveymonkey' | 'formbricks' | 'survicate' | 'surveysparrow' | 'lacework' | 'orca_security' | 'tenable_vulnerability_management' | 'google_play_console' | 'azure_application_insights' | 'appsignal' | 'cursor', required: * `session_replay` - Session replay * `llm_analytics` - LLM analytics * `github` - GitHub * `linear` - Linear * `jira` - Jira * `zendesk` - Zendesk * `conversations` - Conversations * `error_tracking` - Error tracking * `pganalyze` - pganalyze * `signals_scout` - Signals scout * `signals_check` - Report check * `logs` - Logs * `health_checks` - Health checks * `endpoints` - Endpoints * `replay_vision` - Replay Vision * `analytics` - Product analytics * `freshdesk` - Freshdesk * `freshservice` - Freshservice * `front` - Front * `gorgias` - Gorgias * `kustomer` - Kustomer * `dixa` - Dixa * `plain` - Plain * `gitlab` - GitLab * `gitea` - Gitea * `shortcut` - Shortcut * `sentry` - Sentry * `rollbar` - Rollbar * `bugsnag` - Bugsnag * `honeybadger` - Honeybadger * `raygun` - Raygun * `datadog` - Datadog * `snyk` - Snyk * `sonarqube` - SonarQube * `semgrep` - Semgrep * `rapid7_insightvm` - Rapid7 InsightVM * `featurebase` - Featurebase * `frill` - Frill * `aha` - Aha * `uservoice` - UserVoice * `productboard` - Productboard * `canny` - Canny * `asknicely` - AskNicely * `retently` - Retently * `appfigures` - Appfigures * `appfollow` - AppFollow * `judgeme_reviews` - Judge.me * `intercom` - Intercom * `hubspot` - HubSpot * `engineering_analytics` - Engineering analytics * `google_search_console` - Google Search Console * `pagerduty` - PagerDuty * `opsgenie` - Opsgenie * `incident_io` - incident.io * `firehydrant` - FireHydrant * `squadcast` - Squadcast * `servicenow` - ServiceNow * `solarwinds_service_desk` - SolarWinds Service Desk * `grafana_irm` - Grafana IRM * `xmatters` - xMatters * `betterstack` - Better Stack * `newrelic` - New Relic * `trigger_dev` - Trigger.dev * `checkly` - Checkly * `roark` - Roark * `monte_carlo` - Monte Carlo * `bigeye` - Bigeye * `aws_security_hub` - AWS Security Hub * `aws_guardduty` - AWS GuardDuty * `aws_inspector` - AWS Inspector * `microsoft_defender_cloud_apps` - Microsoft Defender for Cloud Apps * `clickup` - ClickUp * `wrike` - Wrike * `trello` - Trello * `bugherd` - BugHerd * `dynamics365` - Dynamics 365 * `zoho_crm` - Zoho CRM * `planhat` - Planhat * `trustpilot` - Trustpilot * `okendo` - Okendo * `sleekplan` - Sleekplan * `bettermode` - Bettermode * `discourse` - Discourse * `mintlify` - Mintlify * `langsmith` - LangSmith * `sprig` - Sprig * `gainsight_px` - Gainsight PX * `dynatrace` - Dynatrace * `statuspage` - Statuspage * `cronitor` - Cronitor * `instatus` - Instatus * `asana` - Asana * `monday` - monday.com * `plane` - Plane * `azure_devops` - Azure DevOps * `helpscout` - Help Scout * `decagon` - Decagon * `vitally` - Vitally * `usersnap` - Usersnap * `typeform` - Typeform * `qualtrics` - Qualtrics * `surveymonkey` - SurveyMonkey * `formbricks` - Formbricks * `survicate` - Survicate * `surveysparrow` - SurveySparrow * `lacework` - Lacework * `orca_security` - Orca Security * `tenable_vulnerability_management` - Tenable Vulnerability Management * `google_play_console` - Google Play Console * `azure_application_insights` - Azure Application Insights * `appsignal` - AppSignal * `cursor` - Cursor
    - `source_type` 'session_analysis_cluster' | 'evaluation_report' | 'issue' | 'ticket' | 'issue_created' | 'issue_reopened' | 'issue_spiking' | 'cross_source_issue' | 'alert_state_change' | 'health_issue' | 'endpoint_execution_failed' | 'endpoint_breakdown_limit_exceeded' | 'scanner_finding' | 'anomaly_investigation' | 'feedback' | 'review' | 'ci_flaky_check' | 'ci_broken_default_branch' | 'ci_duration_regression' | 'search_opportunity' | 'incident', required: * `session_analysis_cluster` - Session analysis cluster * `evaluation_report` - Evaluation report * `issue` - Issue * `ticket` - Ticket * `issue_created` - Issue created * `issue_reopened` - Issue reopened * `issue_spiking` - Issue spiking * `cross_source_issue` - Cross source issue * `alert_state_change` - Alert state change * `health_issue` - Health issue * `endpoint_execution_failed` - Endpoint execution failed * `endpoint_breakdown_limit_exceeded` - Endpoint breakdown limit exceeded * `scanner_finding` - Scanner finding * `anomaly_investigation` - Anomaly investigation * `feedback` - Feedback * `review` - Review * `ci_flaky_check` - CI flaky check * `ci_broken_default_branch` - CI broken default branch * `ci_duration_regression` - CI duration regression * `search_opportunity` - Search opportunity * `incident` - Incident
    - `enabled` boolean, required: Whether this source should be enabled at activation.
  - `scanner_ids` string[], required: Existing enabled scanners selected to emit signals.
  - `suggestions` ScoutSuggestionItem[], required: Selected scout suggestion drafts.
    - `id` string, required: Stable id of this suggestion within the batch; use it to dismiss.
    - `kind` 'canonical' | 'custom', required: * `canonical` - canonical * `custom` - custom
    - `skill_name` string, required: The scout's `signals-scout-*` skill name (existing for canonical, proposed for custom).
    - `title` string, required: Short sentence-case title: what the scout watches.
    - `why_here` string, required: Project-specific evidence for this suggestion, in prose.
    - `description` string, required: Custom only: the one-line description the scout would be created with.
    - `draft_body` string, required: Custom only: the complete skill body the scout would be created with.
    - `proposed_config` ScoutSuggestionProposedConfig, required
      - `run_cron_schedule` string, nullable: Suggested five-field cron schedule in the project timezone, or null for an interval.
      - `run_interval_minutes` integer, nullable: Suggested minutes between runs when no cron is given; null means the daily default.
      - `emit` boolean, required: Whether the suggested scout should write to the inbox (false = dry run).
    - `gap` boolean, required: True when nothing in the current fleet covers this.
    - `confidence` 'low' | 'medium' | 'high', required: * `low` - low * `medium` - medium * `high` - high
  - `activation_scouts` string[]: Scouts enabled by an unfinished activation, retained to undo later deselections.
  - `automatic_implementation` boolean, required: Opt in to automatically creating pull requests.
  - `implementation_priority` 'P0' | 'P1' | 'P2' | 'P3' | 'P4', required: * `P0` - P0 * `P1` - P1 * `P2` - P2 * `P3` - P3 * `P4` - P4

## Response `201`

- InboxOnboardingState
  - `jobs` InboxOnboardingJobs
    - `scout` 'pending' | 'started' | 'skipped' | 'failed', required: * `pending` - Pending * `started` - Started * `skipped` - Unavailable * `failed` - Failed
    - `recommendations` 'pending' | 'started' | 'skipped' | 'failed', required: * `pending` - Pending * `started` - Started * `skipped` - Unavailable * `failed` - Failed
  - `draft` InboxOnboardingDraft, required
    - `step` 'signals' | 'scouts' | 'github', required: * `signals` - Signals * `scouts` - Scouts * `github` - GitHub
    - `sources` InboxOnboardingSource[], required: Staged signal source choices.
      - `source_product` 'session_replay' | 'llm_analytics' | 'github' | 'linear' | 'jira' | 'zendesk' | 'conversations' | 'error_tracking' | 'pganalyze' | 'signals_scout' | 'signals_check' | 'logs' | 'health_checks' | 'endpoints' | 'replay_vision' | 'analytics' | 'freshdesk' | 'freshservice' | 'front' | 'gorgias' | 'kustomer' | 'dixa' | 'plain' | 'gitlab' | 'gitea' | 'shortcut' | 'sentry' | 'rollbar' | 'bugsnag' | 'honeybadger' | 'raygun' | 'datadog' | 'snyk' | 'sonarqube' | 'semgrep' | 'rapid7_insightvm' | 'featurebase' | 'frill' | 'aha' | 'uservoice' | 'productboard' | 'canny' | 'asknicely' | 'retently' | 'appfigures' | 'appfollow' | 'judgeme_reviews' | 'intercom' | 'hubspot' | 'engineering_analytics' | 'google_search_console' | 'pagerduty' | 'opsgenie' | 'incident_io' | 'firehydrant' | 'squadcast' | 'servicenow' | 'solarwinds_service_desk' | 'grafana_irm' | 'xmatters' | 'betterstack' | 'newrelic' | 'trigger_dev' | 'checkly' | 'roark' | 'monte_carlo' | 'bigeye' | 'aws_security_hub' | 'aws_guardduty' | 'aws_inspector' | 'microsoft_defender_cloud_apps' | 'clickup' | 'wrike' | 'trello' | 'bugherd' | 'dynamics365' | 'zoho_crm' | 'planhat' | 'trustpilot' | 'okendo' | 'sleekplan' | 'bettermode' | 'discourse' | 'mintlify' | 'langsmith' | 'sprig' | 'gainsight_px' | 'dynatrace' | 'statuspage' | 'cronitor' | 'instatus' | 'asana' | 'monday' | 'plane' | 'azure_devops' | 'helpscout' | 'decagon' | 'vitally' | 'usersnap' | 'typeform' | 'qualtrics' | 'surveymonkey' | 'formbricks' | 'survicate' | 'surveysparrow' | 'lacework' | 'orca_security' | 'tenable_vulnerability_management' | 'google_play_console' | 'azure_application_insights' | 'appsignal' | 'cursor', required: * `session_replay` - Session replay * `llm_analytics` - LLM analytics * `github` - GitHub * `linear` - Linear * `jira` - Jira * `zendesk` - Zendesk * `conversations` - Conversations * `error_tracking` - Error tracking * `pganalyze` - pganalyze * `signals_scout` - Signals scout * `signals_check` - Report check * `logs` - Logs * `health_checks` - Health checks * `endpoints` - Endpoints * `replay_vision` - Replay Vision * `analytics` - Product analytics * `freshdesk` - Freshdesk * `freshservice` - Freshservice * `front` - Front * `gorgias` - Gorgias * `kustomer` - Kustomer * `dixa` - Dixa * `plain` - Plain * `gitlab` - GitLab * `gitea` - Gitea * `shortcut` - Shortcut * `sentry` - Sentry * `rollbar` - Rollbar * `bugsnag` - Bugsnag * `honeybadger` - Honeybadger * `raygun` - Raygun * `datadog` - Datadog * `snyk` - Snyk * `sonarqube` - SonarQube * `semgrep` - Semgrep * `rapid7_insightvm` - Rapid7 InsightVM * `featurebase` - Featurebase * `frill` - Frill * `aha` - Aha * `uservoice` - UserVoice * `productboard` - Productboard * `canny` - Canny * `asknicely` - AskNicely * `retently` - Retently * `appfigures` - Appfigures * `appfollow` - AppFollow * `judgeme_reviews` - Judge.me * `intercom` - Intercom * `hubspot` - HubSpot * `engineering_analytics` - Engineering analytics * `google_search_console` - Google Search Console * `pagerduty` - PagerDuty * `opsgenie` - Opsgenie * `incident_io` - incident.io * `firehydrant` - FireHydrant * `squadcast` - Squadcast * `servicenow` - ServiceNow * `solarwinds_service_desk` - SolarWinds Service Desk * `grafana_irm` - Grafana IRM * `xmatters` - xMatters * `betterstack` - Better Stack * `newrelic` - New Relic * `trigger_dev` - Trigger.dev * `checkly` - Checkly * `roark` - Roark * `monte_carlo` - Monte Carlo * `bigeye` - Bigeye * `aws_security_hub` - AWS Security Hub * `aws_guardduty` - AWS GuardDuty * `aws_inspector` - AWS Inspector * `microsoft_defender_cloud_apps` - Microsoft Defender for Cloud Apps * `clickup` - ClickUp * `wrike` - Wrike * `trello` - Trello * `bugherd` - BugHerd * `dynamics365` - Dynamics 365 * `zoho_crm` - Zoho CRM * `planhat` - Planhat * `trustpilot` - Trustpilot * `okendo` - Okendo * `sleekplan` - Sleekplan * `bettermode` - Bettermode * `discourse` - Discourse * `mintlify` - Mintlify * `langsmith` - LangSmith * `sprig` - Sprig * `gainsight_px` - Gainsight PX * `dynatrace` - Dynatrace * `statuspage` - Statuspage * `cronitor` - Cronitor * `instatus` - Instatus * `asana` - Asana * `monday` - monday.com * `plane` - Plane * `azure_devops` - Azure DevOps * `helpscout` - Help Scout * `decagon` - Decagon * `vitally` - Vitally * `usersnap` - Usersnap * `typeform` - Typeform * `qualtrics` - Qualtrics * `surveymonkey` - SurveyMonkey * `formbricks` - Formbricks * `survicate` - Survicate * `surveysparrow` - SurveySparrow * `lacework` - Lacework * `orca_security` - Orca Security * `tenable_vulnerability_management` - Tenable Vulnerability Management * `google_play_console` - Google Play Console * `azure_application_insights` - Azure Application Insights * `appsignal` - AppSignal * `cursor` - Cursor
      - `source_type` 'session_analysis_cluster' | 'evaluation_report' | 'issue' | 'ticket' | 'issue_created' | 'issue_reopened' | 'issue_spiking' | 'cross_source_issue' | 'alert_state_change' | 'health_issue' | 'endpoint_execution_failed' | 'endpoint_breakdown_limit_exceeded' | 'scanner_finding' | 'anomaly_investigation' | 'feedback' | 'review' | 'ci_flaky_check' | 'ci_broken_default_branch' | 'ci_duration_regression' | 'search_opportunity' | 'incident', required: * `session_analysis_cluster` - Session analysis cluster * `evaluation_report` - Evaluation report * `issue` - Issue * `ticket` - Ticket * `issue_created` - Issue created * `issue_reopened` - Issue reopened * `issue_spiking` - Issue spiking * `cross_source_issue` - Cross source issue * `alert_state_change` - Alert state change * `health_issue` - Health issue * `endpoint_execution_failed` - Endpoint execution failed * `endpoint_breakdown_limit_exceeded` - Endpoint breakdown limit exceeded * `scanner_finding` - Scanner finding * `anomaly_investigation` - Anomaly investigation * `feedback` - Feedback * `review` - Review * `ci_flaky_check` - CI flaky check * `ci_broken_default_branch` - CI broken default branch * `ci_duration_regression` - CI duration regression * `search_opportunity` - Search opportunity * `incident` - Incident
      - `enabled` boolean, required: Whether this source should be enabled at activation.
    - `scanner_ids` string[], required: Existing enabled scanners selected to emit signals.
    - `suggestions` ScoutSuggestionItem[], required: Selected scout suggestion drafts.
      - `id` string, required: Stable id of this suggestion within the batch; use it to dismiss.
      - `kind` 'canonical' | 'custom', required: * `canonical` - canonical * `custom` - custom
      - `skill_name` string, required: The scout's `signals-scout-*` skill name (existing for canonical, proposed for custom).
      - `title` string, required: Short sentence-case title: what the scout watches.
      - `why_here` string, required: Project-specific evidence for this suggestion, in prose.
      - `description` string, required: Custom only: the one-line description the scout would be created with.
      - `draft_body` string, required: Custom only: the complete skill body the scout would be created with.
      - `proposed_config` ScoutSuggestionProposedConfig, required
        - `run_cron_schedule` string, nullable: Suggested five-field cron schedule in the project timezone, or null for an interval.
        - `run_interval_minutes` integer, nullable: Suggested minutes between runs when no cron is given; null means the daily default.
        - `emit` boolean, required: Whether the suggested scout should write to the inbox (false = dry run).
      - `gap` boolean, required: True when nothing in the current fleet covers this.
      - `confidence` 'low' | 'medium' | 'high', required: * `low` - low * `medium` - medium * `high` - high
    - `activation_scouts` string[]: Scouts enabled by an unfinished activation, retained to undo later deselections.
    - `automatic_implementation` boolean, required: Opt in to automatically creating pull requests.
    - `implementation_priority` 'P0' | 'P1' | 'P2' | 'P3' | 'P4', required: * `P0` - P0 * `P1` - P1 * `P2` - P2 * `P3` - P3 * `P4` - P4
  - `completed_at` string, date-time, nullable, required: When verified setup completed.
  - `variant` union, required: Variant recorded at the first eligible impression. * `control` - Control * `test-ui` - Focused steps * `test-github` - Activate and explore
    - 'control' | 'test-ui' | 'test-github': * `control` - Control * `test-ui` - Focused steps * `test-github` - Activate and explore
    - unknown

## Changes

> 53 revisions in range; 1 not diffed.

- **2026-10-22** `bab3bb4f0c72`: 62 warning, 186 info
  - added the new `appsignal` enum value to the `draft/oneOf[#/components/schemas/InboxOnboardingDraft]/sources/items/source_product/allOf[#/components/schemas/SignalSourceProductEnum]/` response property for the response status `201`
  - added the new `asana` enum value to the `draft/oneOf[#/components/schemas/InboxOnboardingDraft]/sources/items/source_product/allOf[#/components/schemas/SignalSourceProductEnum]/` response property for the response status `201`
  - added the new `aws_guardduty` enum value to the `draft/oneOf[#/components/schemas/InboxOnboardingDraft]/sources/items/source_product/allOf[#/components/schemas/SignalSourceProductEnum]/` response property for the response status `201`
  - added the new `aws_inspector` enum value to the `draft/oneOf[#/components/schemas/InboxOnboardingDraft]/sources/items/source_product/allOf[#/components/schemas/SignalSourceProductEnum]/` response property for the response status `201`
  - …244 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/posthog/apis/posthog-api/changes/api/projects/:project_id/signals/onboarding/post.md)

---

[API](https://skmtc.dev/posthog/apis/posthog-api.md) · [All operations](https://skmtc.dev/posthog/apis/posthog-api/llms.txt) · [OpenAPI document](https://skmtc.dev/posthog/apis/posthog-api/revisions/993f70ab941b?raw)
