connector.doctor_completed

The connector doctor ran on an installation and found something different from the previous run.

When this fires

The creator pressed Run Doctor on the Connectors tab or the connector's page, an integration called POST …/installation/doctor or run_connector_doctor, or the operator's sweep ran, and the report differs from the one kept on the installation: a finding appeared, disappeared or changed severity or state. A run that finds exactly what the last one found fires nothing, so a nightly sweep is quiet until something moves. The installation's own verification inside the run still fires connector.status_changed when the state moved.

Required ability

project-connector:view — token must carry this at mint time to subscribe an endpoint to this event.

Payload

{
  "id": "evt_01HX...",
  "type": "connector.doctor_completed",
  "created_at": "2026-09-12T10:07:00Z",
  "api_version": "2026-05-01",
  "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
  "data": {
    "connector": "telegram",
    "installation_id": "3b8f0c6e-2d41-4a97-9e5f-1c7d6b2a8e40",
    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
    "ran_at": "2026-09-12T10:07:00+00:00",
    "healthy": false,
    "critical": 1,
    "warnings": 0,
    "findings": [
      { "key": "installation", "kind": "installation", "severity": "ok", "subject": "Research Bot", "state": "connected", "message": "The connector still answers for this installation.", "creator_actionable": false, "fix_url": null, "resource_id": null },
      { "key": "resource:b73c5f21-9d80-4a6e-8215-4f70ce13a9d6", "kind": "resource", "severity": "critical", "subject": "Premium Channel", "state": "not_member", "message": "The bot was removed from this channel.", "creator_actionable": true, "fix_url": "https://app.subscriby.net/projects/7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13/resources", "resource_id": "b73c5f21-9d80-4a6e-8215-4f70ce13a9d6" }
    ]
  }
}

Field reference

FieldTypeNotes
idstring ULIDUnique event id, prefixed evt_. Use for idempotent processing.
typestringAlways connector.doctor_completed for this event.
created_atISO 8601 timestampServer-side emission time.
api_versionstringWebhook API contract version.
project_idstring UUIDThe project the installation belongs to.
data.connectorstringThe connector key.
data.installation_idstring UUIDThe installation examined.
data.project_idstring UUIDThe project, repeated inside the payload.
data.ran_atISO 8601 timestampWhen the doctor ran.
data.healthybooleanWhether every finding is ok.
data.criticalintegerFindings the connector can no longer act on.
data.warningsintegerFindings the connector could not confirm.
data.findingsarrayEvery check, the installation first, then one per gated resource.
data.findings[].keystringinstallation, or resource:<resource id>.
data.findings[].kindstringinstallation or resource.
data.findings[].severitystringok, warning or critical.
data.findings[].subjectstringWhat was checked, as the creator names it.
data.findings[].statestringThe connector's word for how it stands: an installation state, or a space access state.
data.findings[].messagestringOne sentence in the creator's language.
data.findings[].creator_actionablebooleanWhether the creator can fix it themselves.
data.findings[].fix_urlstring | nullWhere they go to fix it, when there is a page.
data.findings[].resource_idstring | nullThe resource, for a resource finding.

Caveats

  • The first run on an installation fires this event, because there is no earlier report to match; a repeat with the same findings does not.
  • A resource the connector has no place it can ask about (no space row, no legacy chat) is a warning finding, never left out.
  • Sentences are rendered in the creator's language at the time of the run; the state words are stable.

How is this guide?

On this page

Subscriby is a product designed by you — for you.

No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request