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

> Node: SyncroMSP (`syncro_msp`) · Action · v1
> Category: Productivity · Credentials: SyncroMSP API (`syncroMspApi`)
> Updated: 2026-08-16

# SyncroMSP

> Manage customers, contacts, tickets, and RMM alerts in SyncroMSP.

## Overview

SyncroMSP is an MSP (Managed Service Provider) platform that provides ticketing, RMM (Remote Monitoring and Management), billing, and customer management. This tool enables CRUD operations on customers, contacts, tickets, and RMM alerts via the SyncroMSP REST API.

**Category:** Productivity  
**Tool Name:** `syncro_msp`  
**Version:** 1

**Appearance:** Icon: `lucide-Wrench` | Color: `#2962FF`

## Node Type

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

## Input / Output

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

## Credentials

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

### Resources

| Resource | Value |
|----------|-------|
| Contact | `contact` |
| Customer | `customer` |
| RMM Alert | `rmm` |
| Ticket | `ticket` |

### Operations

**Customer** (`customer`)

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create new customer |
| Delete | `delete` | Delete customer |
| Get | `get` | Retrieve customer |
| Get Many | `getAll` | Retrieve many customers |
| Update | `update` | Update customer |

**Contact** (`contact`)

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create new contact |
| Delete | `delete` | Delete contact |
| Get | `get` | Retrieve contact |
| Get Many | `getAll` | Retrieve many contacts |
| Update | `update` | Update contact |

**Ticket** (`ticket`)

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create new ticket |
| Delete | `delete` | Delete ticket |
| Get | `get` | Retrieve ticket |
| Get Many | `getAll` | Retrieve many tickets |
| Update | `update` | Update ticket |

**RMM Alert** (`rmm`)

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create new RMM alert |
| Delete | `delete` | Delete RMM alert |
| Get | `get` | Retrieve RMM alert |
| Get Many | `getAll` | Retrieve many RMM alerts |
| Mute | `mute` | Mute RMM alert |

### Parameters

#### Customer: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Email (`email`) | `string` | No | — | Email address for the customer. Supports expressions. |
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Optional customer details sent with the new record. |
| — Address | `fixedCollection` | No | `{}` | The customer's postal address. |
| — — Line 1 | `string` | No | — | Street address. |
| — — Line 2 | `string` | No | — | Second address line, such as a suite or unit number. |
| — — City | `string` | No | — | City. |
| — — State | `string` | No | — | State or region. |
| — — ZIP | `string` | No | — | Postal code. |
| — Business Name | `string` | No | — | The customer's company name. |
| — First Name | `string` | No | — | The customer's first name. |
| — Get SMS | `boolean` | No | `false` | Whether the customer receives SMS messages. |
| — Invoice Emails | `string` | No | — | Comma-separated list of CC email addresses for invoices. |
| — Last Name | `string` | No | — | The customer's last name. |
| — No Email | `boolean` | No | `false` | Whether to stop emailing this customer. |
| — Notes | `string` | No | — | Free-text notes stored on the customer. |
| — Notification Email | `string` | No | — | Address that receives notifications for this customer. |
| — Phone | `string` | No | — | Contact phone number. |
| — Referred By | `string` | No | — | Source from which customer is referred (e.g., LinkedIn, Google, customer name). |

#### Customer: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`customerId`) | `string` | Yes | — | Get specific customer by ID. Supports expressions. |

#### Customer: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All (`returnAll`) | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit (`limit`) | `number` | No | `25` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters (`filters`) | `collection` | No | `{}` | Narrows the customers that are returned. |
| — Business Name | `string` | No | — | Match customers by company name. |
| — Email | `string` | No | — | Match customers by email address. |
| — First Name | `string` | No | — | Match customers by first name. |
| — Include Disabled | `boolean` | No | `false` | Include disabled customers in the results. |
| — Last Name | `string` | No | — | Match customers by last name. |
| — Search Query | `string` | No | — | Search query related to customer data like name, etc. |
| — Sort | `string` | No | — | Customer field to order by (e.g., "firstname ASC", "city DESC"). |

#### Customer: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`customerId`) | `string` | Yes | — | ID of the customer to update. Supports expressions. |
| Update Fields (`updateFields`) | `collection` | No | `{}` | The customer fields to change. |
| — Address | `fixedCollection` | No | `{}` | The customer's postal address. |
| — — Line 1 | `string` | No | — | Street address. |
| — — Line 2 | `string` | No | — | Second address line, such as a suite or unit number. |
| — — City | `string` | No | — | City. |
| — — State | `string` | No | — | State or region. |
| — — ZIP | `string` | No | — | Postal code. |
| — Business Name | `string` | No | — | The customer's company name. |
| — Email | `string` | No | — | Email address for the customer. |
| — First Name | `string` | No | — | The customer's first name. |
| — Get SMS | `boolean` | No | `true` | Whether the customer receives SMS messages. |
| — Invoice Emails | `string` | No | — | Comma-separated list of CC email addresses for invoices. |
| — Last Name | `string` | No | — | The customer's last name. |
| — No Email | `boolean` | No | `false` | Whether to stop emailing this customer. |
| — Notes | `string` | No | — | Free-text notes stored on the customer. |
| — Notification Email | `string` | No | — | Address that receives notifications for this customer. |
| — Phone | `string` | No | — | Contact phone number. |
| — Referred By | `string` | No | — | Source from which customer is referred (e.g., LinkedIn, Google, customer name). |

#### Customer: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`customerId`) | `string` | Yes | — | Delete a specific customer by ID. Supports expressions. |

#### Contact: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`customerId`) | `string` | Yes | — | ID of the customer this contact belongs to. Supports expressions. |
| Email (`email`) | `string` | No | — | Email address for the contact. Supports expressions. |
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Optional contact details sent with the new record. |
| — Address | `fixedCollection` | No | `{}` | The contact's postal address. |
| — — Line 1 | `string` | No | — | Street address. |
| — — Line 2 | `string` | No | — | Second address line, such as a suite or unit number. |
| — — City | `string` | No | — | City. |
| — — State | `string` | No | — | State or region. |
| — — ZIP | `string` | No | — | Postal code. |
| — Name | `string` | No | — | The contact's full name. |
| — Notes | `string` | No | — | Free-text notes stored on the contact. |
| — Phone | `string` | No | — | Contact phone number. |

#### Contact: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Contact ID (`contactId`) | `string` | Yes | — | Get specific contact by ID. Supports expressions. |

#### Contact: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All (`returnAll`) | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit (`limit`) | `number` | No | `25` | Max number of results to return. _(shown when Return All is `false`)_ |

#### Contact: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Contact ID (`contactId`) | `string` | Yes | — | ID of the contact to update. Supports expressions. |
| Update Fields (`updateFields`) | `collection` | No | `{}` | The contact fields to change. |
| — Address | `fixedCollection` | No | `{}` | The contact's postal address. |
| — — Line 1 | `string` | No | — | Street address. |
| — — Line 2 | `string` | No | — | Second address line, such as a suite or unit number. |
| — — City | `string` | No | — | City. |
| — — State | `string` | No | — | State or region. |
| — — ZIP | `string` | No | — | Postal code. |
| — Customer ID | `string` | No | — | Move the contact to this customer. |
| — Email | `string` | No | — | Email address for the contact. |
| — Name | `string` | No | — | The contact's full name. |
| — Notes | `string` | No | — | Free-text notes stored on the contact. |
| — Phone | `string` | No | — | Contact phone number. |

#### Contact: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Contact ID (`contactId`) | `string` | Yes | — | Delete a specific contact by ID. Supports expressions. |

#### Ticket: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`customerId`) | `string` | Yes | — | ID of the customer this ticket belongs to. Supports expressions. |
| Subject | `string` | Yes | — | Subject line for the ticket. Supports expressions. |
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Optional ticket details sent with the new record. |
| — Asset ID | `string` | No | — | ID of the asset the ticket relates to. |
| — Assign to Contact | `string` | No | — | The ID of the contact you want to assign the ticket to. |
| — Issue Type | `options` | No | — | The category of work the ticket covers. |
| | | | | Options: `Contract Work`, `Network Project`, `Other`, `Regular Maintenance`, `Remote Support` |
| — Status | `options` | No | `New` | Ticket status. |
| | | | | Options: `Customer Reply`, `In Progress`, `New`, `Resolved`, `Scheduled`, `Waiting for Parts`, `Waiting on Customer` |

#### Ticket: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Ticket ID (`ticketId`) | `string` | Yes | — | Get specific ticket by ID. Supports expressions. |

#### Ticket: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All (`returnAll`) | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit (`limit`) | `number` | No | `25` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters (`filters`) | `collection` | No | `{}` | Narrows the tickets that are returned. |
| — Search Query | `string` | No | — | Search query related to ticket data like user, etc. |
| — Status | `options` | No | `New` | Return only tickets in this status. |
| | | | | Options: `Customer Reply`, `In Progress`, `New`, `Resolved`, `Scheduled`, `Waiting for Parts`, `Waiting on Customer` |

#### Ticket: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Ticket ID (`ticketId`) | `string` | Yes | — | ID of the ticket to update. Supports expressions. |
| Update Fields (`updateFields`) | `collection` | No | `{}` | The ticket fields to change. At least one field has to be set. |
| — Asset ID | `string` | No | — | ID of the asset the ticket relates to. |
| — Assign to Contact | `string` | No | — | The ID of the contact you want to assign the ticket to. |
| — Customer ID | `string` | No | — | Move the ticket to this customer. |
| — Due Date | `dateTime` | No | — | When the ticket is due. |
| — Issue Type | `options` | No | — | The category of work the ticket covers. |
| | | | | Options: `Contract Work`, `Network Project`, `Other`, `Regular Maintenance`, `Remote Support` |
| — Status | `options` | No | `New` | Ticket status. |
| | | | | Options: `Customer Reply`, `In Progress`, `New`, `Resolved`, `Scheduled`, `Waiting for Parts`, `Waiting on Customer` |
| — Subject | `string` | No | — | Subject line for the ticket. |

#### Ticket: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Ticket ID (`ticketId`) | `string` | Yes | — | Delete a specific ticket by ID. Supports expressions. |

#### RMM Alert: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Asset ID | `string` | No | — | ID of the asset associated with this alert. Supports expressions. |
| Customer ID (`customerId`) | `string` | No | — | ID of the customer associated with this alert. Supports expressions. |
| Description | `string` | No | — | Description of the RMM alert. Supports expressions. |
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Optional alert details sent with the new record. |
| — Resolved | `boolean` | No | `false` | Whether the alert is created in a resolved state. |

#### RMM Alert: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| RMM Alert ID (`alertId`) | `string` | Yes | — | Get specific RMM alert by ID. Supports expressions. |

#### RMM Alert: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All (`returnAll`) | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit (`limit`) | `number` | No | `25` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters (`filters`) | `collection` | No | `{}` | Narrows the alerts that are returned. |
| — Status | `options` | No | `all` | Return only alerts in this state. |
| | | | | Options: `active`, `all`, `resolved` |

#### RMM Alert: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| RMM Alert ID (`alertId`) | `string` | Yes | — | Delete the RMM alert by ID. Supports expressions. |

#### RMM Alert: Mute

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| RMM Alert ID (`alertId`) | `string` | Yes | — | Mute the RMM alert by ID. Supports expressions. |
| Mute Period | `options` | No | — | Length of time to mute the alert for. |
| | | | | Options: `1-hour`, `1-day`, `2-days`, `1-week`, `2-weeks`, `1-month`, `forever` |

#### All Operations

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

## Output Data

Every response is treated as a list before it is written out: each record is merged into the item JSON at the top level, so the incoming fields pass through and the record's fields are written over them. Binary data on the input item is forwarded unchanged.

`Customer: Get Many`, `Contact: Get Many`, `Ticket: Get Many` and `RMM Alert: Get Many` are the operations that fan out — they emit **one output item per record**. A search that matches nothing emits no output item at all for that input item, so the branch goes quiet rather than producing an empty result; guard against that downstream. Every other operation emits exactly one output item per input item.

Customer, Ticket and RMM Alert reads and writes unwrap the record from its response envelope before merging, so the record's own fields (`id`, `name`, `email`, `status` and the rest of the record) land at the top level of the item. Contact operations merge the response exactly as the service returns it.

| Resource: Operation | What lands on the item |
|---------------------|------------------------|
| `Customer: Create`, `Customer: Get`, `Customer: Update` | The customer record's fields |
| `Customer: Get Many` | One item per customer record |
| `Contact: Create`, `Contact: Get`, `Contact: Update` | The response as returned by the service |
| `Contact: Get Many` | One item per contact record |
| `Ticket: Create`, `Ticket: Get`, `Ticket: Update` | The ticket record's fields |
| `Ticket: Get Many` | One item per ticket record |
| `RMM Alert: Create`, `RMM Alert: Get` | The alert record's fields |
| `RMM Alert: Get Many` | One item per alert record |
| `Delete` (any resource), `RMM Alert: Mute` | The service's response. These calls usually answer with an empty body, and the item then carries only the fields it arrived with |

Reference the result downstream by expression, e.g. `{{ $json.id }}`.

## Usage Examples

- Create a new customer in SyncroMSP
- Get all open tickets from SyncroMSP
- Update a contact in SyncroMSP
- Mute an RMM alert for 1 day
- Delete a ticket in SyncroMSP

## Example Configuration

Create a customer with a full address and contact preferences:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "customer",
    "operation": "create",
    "email": "john.doe@example.com",
    "additionalFields": {
      "businessName": "Acme Corporation",
      "firstName": "John",
      "lastname": "Doe",
      "phone": "555-0123",
      "address": {
        "addressFields": {
          "address": "123 Main St",
          "address2": "Suite 100",
          "city": "New York",
          "state": "NY",
          "zip": "10001"
        }
      },
      "getSms": true,
      "noEmail": false,
      "notes": "Important customer",
      "notificationEmail": "notifications@example.com"
    }
  }
}
```

Search customers with filters:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "customer",
    "operation": "getAll",
    "returnAll": false,
    "limit": 50,
    "filters": {
      "query": "Acme",
      "businessName": "Acme Corporation",
      "email": "john.doe@example.com",
      "includeDisabled": false,
      "sort": "business_name ASC"
    }
  }
}
```

Update a customer:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "customer",
    "operation": "update",
    "customerId": "12345",
    "updateFields": {
      "businessName": "Acme Industries",
      "email": "john.doe@acmeindustries.com",
      "phone": "555-0199",
      "getSms": false,
      "notes": "Updated contact information"
    }
  }
}
```

Create a contact under an existing customer:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "contact",
    "operation": "create",
    "customerId": "12345",
    "email": "jane.smith@example.com",
    "additionalFields": {
      "name": "Jane Smith",
      "phone": "555-0456",
      "notes": "Primary contact for technical issues",
      "address": {
        "addressFields": {
          "address": "456 Oak Ave",
          "city": "Boston",
          "state": "MA",
          "zip": "02101"
        }
      }
    }
  }
}
```

Update a contact and move it to another customer:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "contact",
    "operation": "update",
    "contactId": "67890",
    "updateFields": {
      "name": "Jane Smith-Johnson",
      "email": "jane.johnson@example.com",
      "phone": "555-0789",
      "customerId": "12345"
    }
  }
}
```

Open a ticket against a customer and assign it:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "ticket",
    "operation": "create",
    "customerId": "12345",
    "subject": "Server maintenance required",
    "additionalFields": {
      "contactId": "67890",
      "assetId": "asset_123",
      "issueType": "Contract Work",
      "status": "New"
    }
  }
}
```

List tickets in one status:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "ticket",
    "operation": "getAll",
    "returnAll": false,
    "limit": 25,
    "filters": {
      "status": "New",
      "query": "server maintenance"
    }
  }
}
```

Move a ticket forward and set a due date:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "ticket",
    "operation": "update",
    "ticketId": "ticket_456",
    "updateFields": {
      "status": "In Progress",
      "subject": "Server maintenance - urgent",
      "dueDate": "2024-01-15T10:00:00Z",
      "contactId": "67890"
    }
  }
}
```

Raise an RMM alert for an asset:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "rmm",
    "operation": "create",
    "assetId": "asset_789",
    "customerId": "12345",
    "description": "High CPU usage detected on server",
    "additionalFields": {
      "resolved": false
    }
  }
}
```

Pull every alert, active and resolved:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "rmm",
    "operation": "getAll",
    "returnAll": true,
    "filters": {
      "status": "all"
    }
  }
}
```

Mute a noisy alert for a week:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "rmm",
    "operation": "mute",
    "alertId": "alert_999",
    "muteFor": "1-week"
  }
}
```

Fetch a full customer list while holding concurrency down:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "customer",
    "operation": "getAll",
    "returnAll": true,
    "maxConcurrency": 5
  }
}
```

Page through tickets instead of pulling them all:

```json
{
  "type": "syncro_msp",
  "parameters": {
    "resource": "ticket",
    "operation": "getAll",
    "returnAll": false,
    "limit": 100,
    "filters": {
      "status": "New"
    }
  }
}
```

### 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 customers, contacts, tickets, and RMM alerts in SyncroMSP MSP platform.

### Address Management

When working with addresses in `additionalFields` or `updateFields`, always use the `addressFields` object structure with the groupKey `addressFields`:

```json
{
  "address": {
    "addressFields": {
      "address": "Street address",
      "address2": "Optional second line",
      "city": "City name",
      "state": "State code",
      "zip": "Postal code"
    }
  }
}
```

### Parameter Dependencies

Remember these key relationships:
- `limit` is only available when `returnAll` is `false`
- Each resource type has its own set of valid operations
- Collection fields like `additionalFields` and `updateFields` have different structures depending on the resource
- Mute duration options for RMM alerts range from 1 hour to forever