<!-- BusyBot node reference — https://busybot.net/tools/orbit/ -->

> Node: Orbit (`orbit`) · Action · v1
> Category: Analytics · Credentials: Orbit API (`orbitApi`)
> Updated: 2026-08-16

# Orbit

> Manage community members, activities, notes, and posts in Orbit

## Overview

Orbit was a community analytics and management platform used by developer relations teams to track community engagement across platforms like GitHub, Twitter, Discourse, and email. This tool interacts with the Orbit API to manage members (create/update/delete/lookup by identity), track activities, attach notes, and manage content posts. Note: Orbit was sunset in July 2023 but this tool is provided for archival and compatibility purposes.

**Category:** Analytics  
**Tool Name:** `orbit`  
**Version:** 1

**Appearance:** Icon: `lucide-Globe` | Color: `#6C4DF6`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Orbit API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/orbit-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Activity | `activity` |
| Member | `member` |
| Note | `note` |
| Post | `post` |

### Operations

Each resource has its own Operation list, and several resources reuse the same operation values (`create`, `getAll`, `update`, `delete`). Pick the resource first, then the operation.

| Resource | Operation | Value | Description |
|----------|-----------|-------|-------------|
| Activity | Create | `create` | Create an activity for a member |
| Activity | Get Many | `getAll` | Get many activities |
| Member | Create or Update | `upsert` | Create a new member, or update the current one if it already exists (upsert) |
| Member | Delete | `delete` | Delete a member |
| Member | Get | `get` | Get a member |
| Member | Get Many | `getAll` | Get many members in a workspace |
| Member | Lookup | `lookup` | Lookup a member by identity |
| Member | Update | `update` | Update a member |
| Note | Create | `create` | Create a note |
| Note | Get Many | `getAll` | Get many notes for a member |
| Note | Update | `update` | Update a note |
| Post | Create | `create` | Create a post |
| Post | Get Many | `getAll` | Get many posts |
| Post | Delete | `delete` | Delete a post |

### Parameters

Every operation needs the **Workspace** — the workspace slug or ID from Orbit's workspace settings. All fields accept expressions, so IDs and content can come from the incoming item (`{{ $json.memberId }}`).

#### Activity: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. Find in Orbit under workspace settings. |
| Member ID | `string` | Yes | — | The ID of the member to create the activity for. |
| Title | `string` | Yes | — | The activity title. |
| Additional Fields | `collection` | No | `{}` | Optional activity properties. |
| — Activity Type | `string` | No | — | A user-defined activity type grouping (e.g., "blog_post", "conference_talk"). |
| — Description | `string` | No | — | A description of the activity; displayed in the timeline. |
| — Key | `string` | No | — | Supply a key that must be unique or leave blank to have one generated. |
| — Link | `string` | No | — | A URL for the activity; displayed in the timeline. |
| — Link Text | `string` | No | — | The display text for the timeline link. |
| — Occurred At | `dateTime` | No | — | The date and time the activity occurred; defaults to now. |

#### Activity: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the activity list. |
| — Member ID | `string` | No | — | When set, activities will be filtered by this member ID. |

#### Member: Create or Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Identity | `fixedCollection` | No | `{}` | The identity is used to find the member. If no member exists, a new member will be created and linked to the provided identity. |
| — Source | `options` | No | — | Set to github, twitter, email, discourse or the source of any identities you have manually created. |
| | | | | Options: `discourse`, `email`, `github`, `twitter` |
| — Search By | `options` | Yes | — | Whether to match the identity on its username or its ID at the source. _(shown when Source is `discourse`, `github`, `twitter`)_ |
| | | | | Options: `username`, `id` |
| — ID | `string` | Yes | — | The unique ID at the source. _(shown when Search By is `id` and Source is `discourse`, `github`, `twitter`)_ |
| — Username | `string` | Yes | — | The username at the source. _(shown when Search By is `username` and Source is `discourse`, `github`, `twitter`)_ |
| — Email | `string` | Yes | — | The email address that identifies the member. _(shown when Source is `email`)_ |
| — Host | `string` | Yes | — | The Discourse host URL. _(shown when Source is `discourse`)_ |
| Additional Fields | `collection` | No | `{}` | Member profile fields to set. |
| — Bio | `string` | No | — | The member's biography. |
| — Birthday | `dateTime` | No | — | The member's birthday. |
| — Company | `string` | No | — | The member's company. |
| — Location | `string` | No | — | The member's location. |
| — Name | `string` | No | — | The member's display name. |
| — Pronouns | `string` | No | — | The member's pronouns. |
| — Shipping Address | `string` | No | — | The member's shipping address. |
| — Slug | `string` | No | — | The member's slug in Orbit. |
| — Tags to Add | `string` | No | — | Adds tags to member; comma-separated string or array. |
| — Tag List | `string` | No | — | Replaces all tags for the member; comma-separated string or array. |
| — T-Shirt | `string` | No | — | The member's t-shirt size. |
| — Teammate | `boolean` | No | `false` | Whether the member is a teammate rather than a community member. |
| — URL | `string` | No | — | The member's website URL. |

#### Member: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Member ID | `string` | Yes | — | The ID of the member to delete. |

#### Member: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Member ID | `string` | Yes | — | The ID of the member to retrieve. |
| Resolve Identities | `boolean` | No | `false` | By default, the response just includes the reference of the identity. When set to true the identities will be resolved automatically. |

#### Member: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |
| Resolve Identities | `boolean` | No | `false` | By default, the response just includes the reference of the identity. When set to true the identities will be resolved automatically. |
| Options | `collection` | No | `{}` | Sorting options for the member list. |
| — Sort By | `string` | No | — | Name of the field the response will be sorted by. |
| — Sort Direction | `options` | No | — | Whether to sort ascending or descending. |
| | | | | Options: `ASC`, `DESC` |

#### Member: Lookup

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Source | `options` | Yes | — | Set to github, twitter, email, discourse or the source of any identities you have manually created. |
| | | | | Options: `discourse`, `email`, `github`, `twitter` |
| Search By | `options` | Yes | — | Whether to search by username or ID at the source. _(shown when Source is `discourse`, `github`, `twitter`)_ |
| | | | | Options: `username`, `id` |
| ID | `string` | Yes | — | The unique ID at the source. _(shown when Search By is `id` and Source is `discourse`, `github`, `twitter`)_ |
| Username | `string` | Yes | — | The username at the source. _(shown when Search By is `username` and Source is `discourse`, `github`, `twitter`)_ |
| Email | `string` | Yes | — | The email address to look up. _(shown when Source is `email`)_ |
| Host | `string` | Yes | — | The Discourse host URL. _(shown when Source is `discourse`)_ |

#### Member: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Member ID | `string` | Yes | — | The ID of the member to update. |
| Update Fields | `collection` | No | `{}` | Member profile fields to change. Only the fields you add are sent. |
| — Bio | `string` | No | — | The member's biography. |
| — Birthday | `dateTime` | No | — | The member's birthday. |
| — Company | `string` | No | — | The member's company. |
| — Location | `string` | No | — | The member's location. |
| — Name | `string` | No | — | The member's display name. |
| — Pronouns | `string` | No | — | The member's pronouns. |
| — Shipping Address | `string` | No | — | The member's shipping address. |
| — Slug | `string` | No | — | The member's slug in Orbit. |
| — Tags to Add | `string` | No | — | Adds tags to member; comma-separated string or array. |
| — Tag List | `string` | No | — | Replaces all tags for the member; comma-separated string or array. |
| — T-Shirt | `string` | No | — | The member's t-shirt size. |
| — Teammate | `boolean` | No | `false` | Whether the member is a teammate rather than a community member. |
| — URL | `string` | No | — | The member's website URL. |

#### Note: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Member ID | `string` | Yes | — | The ID of the member to add the note to. |
| Note | `string` | Yes | — | The note content. |

#### Note: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Member ID | `string` | Yes | — | The ID of the member whose notes to retrieve. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |
| Resolve Member | `boolean` | No | `false` | Whether to resolve member references to full member objects. |

#### Note: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Member ID | `string` | Yes | — | The ID of the member. |
| Note ID | `string` | Yes | — | The ID of the note to update. |
| Note | `string` | Yes | — | The updated note content. |

#### Post: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Member ID | `string` | Yes | — | The ID of the member to create the post for. |
| URL | `string` | Yes | — | Supply any URL and Orbit will do its best job to parse out a title, description, and image. |
| Additional Fields | `collection` | No | `{}` | Optional post properties. |
| — Published At | `dateTime` | No | — | When the post was published. |

#### Post: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the post list. |
| — Member ID | `string` | No | — | When set the posts will be filtered by this member ID. |

#### Post: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Workspace | `string` | Yes | — | The workspace slug or ID. |
| Member ID | `string` | Yes | — | The ID of the member who owns the post. |
| Post ID | `string` | Yes | — | The ID of the post to delete. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

The Orbit response is **merged onto the input item's JSON** at the top level — the returned fields sit alongside the fields the item already carried. A response field with the same name as an existing item field overwrites it. Binary data on the input item is forwarded.

Orbit speaks JSON:API, and the two families of operations unwrap it differently:

| Operations | Output |
|------------|--------|
| Activity Get Many, Member Get Many, Note Get Many, Post Get Many | **One output item per record.** Each record is unwrapped, so the item gains `id`, `type`, `attributes` and `relationships` at the top level. A page of 50 members becomes 50 output items from one input item, and an empty result produces no output items for that input. |
| Activity Create, Member Create or Update, Member Get, Member Lookup, Member Update, Note Create, Note Update, Post Create | One output item carrying the envelope, so the record sits under `data` — reference it as `{{ $json.data.attributes.name }}`. |
| Member Delete, Post Delete | One output item carrying `success: true` — these calls confirm the deletion instead of returning a record. |

A single record looks like this, whether it arrives at the top level or under `data`:

```json
{
  "id": "1234",
  "type": "member",
  "attributes": {
    "name": "John Doe",
    "slug": "john-doe",
    "bio": "Full-stack developer",
    "company": "Tech Corp",
    "location": "San Francisco, CA",
    "tags": ["developer", "contributor"],
    "created_at": "2026-01-15T10:30:00.000Z"
  },
  "relationships": {
    "identities": { "data": [] }
  }
}
```

With **Resolve Identities** on, **Member: Get** replaces the identity references inside `relationships.identities.data` with the full identity objects, so you can read a member's GitHub or Twitter handle without a second call.

Turning Return All off stops paging once the Limit is reached, so it genuinely reduces the number of requests rather than trimming a full result.

## Usage Examples

- List all members in an Orbit workspace
- Create a new activity for a community member
- Look up a member by their GitHub username
- Add a note to a community member profile
- Create a post for a member with a URL
- Delete a member from a workspace

## Example Configuration

Record a contribution against a member:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "activity",
    "operation": "create",
    "workspaceId": "my-workspace",
    "memberId": "member_123",
    "title": "Contributed to open source project",
    "additionalFields": {
      "activityType": "github_contribution",
      "description": "Added new feature to the main repository",
      "link": "https://github.com/org/repo/pull/123",
      "linkText": "View Pull Request",
      "occurredAt": "2026-01-15T10:30:00Z"
    }
  }
}
```

List one member's recent activities:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "activity",
    "operation": "getAll",
    "workspaceId": "my-workspace",
    "returnAll": false,
    "limit": 50,
    "filters": {
      "memberId": "member_123"
    }
  }
}
```

Create or update a member from their GitHub identity:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "member",
    "operation": "upsert",
    "workspaceId": "my-workspace",
    "identityUi": {
      "identityValue": {
        "source": "github",
        "searchBy": "username",
        "username": "{{ $json.githubLogin }}"
      }
    },
    "additionalFields": {
      "name": "John Doe",
      "bio": "Full-stack developer and open source contributor",
      "company": "Tech Corp",
      "location": "San Francisco, CA",
      "url": "https://johndoe.dev",
      "teammate": false
    }
  }
}
```

Find a member by email address:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "member",
    "operation": "lookup",
    "workspaceId": "my-workspace",
    "source": "email",
    "email": "john@example.com"
  }
}
```

Read one member with their identities inlined:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "member",
    "operation": "get",
    "workspaceId": "my-workspace",
    "memberId": "member_123",
    "resolveIdentities": true
  }
}
```

List the newest members first:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "member",
    "operation": "getAll",
    "workspaceId": "my-workspace",
    "returnAll": false,
    "limit": 100,
    "options": {
      "sort": "created_at",
      "direction": "DESC"
    }
  }
}
```

Update a member profile:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "member",
    "operation": "update",
    "workspaceId": "my-workspace",
    "memberId": "member_123",
    "updateFields": {
      "bio": "Updated biography",
      "company": "New Company Inc",
      "location": "New York, NY",
      "tagsToAdd": "speaker,mentor"
    }
  }
}
```

Attach an internal note to a member:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "note",
    "operation": "create",
    "workspaceId": "my-workspace",
    "memberId": "member_123",
    "note": "Had a great conversation about the new feature roadmap"
  }
}
```

Revise an existing note:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "note",
    "operation": "update",
    "workspaceId": "my-workspace",
    "memberId": "member_123",
    "noteId": "note_456",
    "note": "Updated note content with additional details"
  }
}
```

Track a member's blog post:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "post",
    "operation": "create",
    "workspaceId": "my-workspace",
    "memberId": "member_123",
    "url": "https://blog.example.com/my-latest-post",
    "additionalFields": {
      "publishedAt": "2026-01-15T14:00:00Z"
    }
  }
}
```

List every post by one member:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "post",
    "operation": "getAll",
    "workspaceId": "my-workspace",
    "returnAll": true,
    "filters": {
      "memberId": "member_123"
    }
  }
}
```

Remove a post:

```json
{
  "type": "orbit",
  "parameters": {
    "resource": "post",
    "operation": "delete",
    "workspaceId": "my-workspace",
    "memberId": "member_123",
    "postId": "post_789"
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Manage community members, activities, notes, and posts in Orbit workspaces for developer relations analytics.