Skip to content
Development
Skill

/crm

Autotask CRM entities - companies (accounts), contacts, and sites/locations - including field references, company type classifications, and how these records underpin tickets, contracts, and projects for MSP account management.

From plugin
msp-claude-plugins
52200 skills146 agents200 commands4 MCP

Claude Code

$ npx -y skills add wyre-ai/msp-claude-plugins --skill crm --agent claude-code

SKILL.md

crm.SKILL.md
name: "Autotask CRM"
description: >
  Autotask CRM entities - companies (accounts), contacts, and sites/locations -
  including field references, company type classifications, and how these
  records underpin tickets, contracts, and projects for MSP account management.
when_to_use: >-
  When working with companies, contacts, sites/locations, or opportunities in Autotask CRM. Use
  when: autotask company, autotask contact, autotask account, autotask crm, company management,
  contact management, client onboarding, autotask site, or autotask location.

Autotask CRM Management

Overview

Autotask CRM manages the core entities that define your client relationships: companies (accounts), contacts, and sites. Proper CRM data is foundational - tickets, contracts, projects, and billing all depend on accurate company and contact information.

Anti-triggers

  • **The same client as a documentation record** — use

`itglue-organizations`, and `itglue-contacts` for the people.

  • **The client's grouping in monitoring or SOC tooling** — Datto RMM

calls it a site (`datto-rmm-sites`), RocketCyber calls it an account (`rocketcyber-accounts`). Neither shares IDs with an Autotask company.

  • **Kaseya BMS accounts and contacts** — a separate PSA with its own

client records; use `kaseya-bms-api-patterns`.

Key Concepts

Company (Account)

The primary entity representing a client organization.

| Field | Description | Required | |-------|-------------|----------| | `id` | Unique identifier | System | | `companyName` | Official company name | Yes | | `companyType` | Customer, Lead, Prospect, etc. | Yes | | `phone` | Main phone number | No | | `address1` | Street address | No | | `city` | City | No | | `state` | State/Province | No | | `postalCode` | ZIP/Postal code | No | | `country` | Country | No | | `webAddress` | Website URL | No | | `parentCompanyID` | Parent company for hierarchies | No | | `ownerResourceID` | Account manager | No | | `classification` | Classification category | No |

Company Types

| ID | Type | Use Case | |----|------|----------| | 1 | Customer | Active paying clients | | 2 | Lead | Potential new business | | 3 | Prospect | Qualified leads | | 4 | Dead | Churned/lost clients | | 5 | Vendor | Suppliers and partners | | 6 | Partner | Strategic partners |

Contact

Individual people at a company.

| Field | Description | Required | |-------|-------------|----------| | `id` | Unique identifier | System | | `companyID` | Associated company | Yes | | `firstName` | First name | Yes | | `lastName` | Last name | Yes | | `emailAddress` | Primary email | No | | `phone` | Direct phone | No | | `mobilePhone` | Mobile number | No | | `title` | Job title | No | | `isActive` | Active status | Yes | | `isPrimaryContact` | Primary contact flag | No |

Site/Location

Physical locations for a company (for on-site service).

| Field | Description | Required | |-------|-------------|----------| | `id` | Unique identifier | System | | `companyID` | Parent company | Yes | | `name` | Site name | Yes | | `address1` | Street address | No | | `city` | City | No | | `isActive` | Active status | Yes | | `isPrimaryLocation` | Primary site flag | No |

API Patterns

Creating a Company

POST /v1.0/Companies
Content-Type: application/json
{
  "companyName": "Acme Corporation",
  "companyType": 1,
  "phone": "555-123-4567",
  "address1": "123 Main Street",
  "city": "Springfield",
  "state": "IL",
  "postalCode": "62701",
  "country": "United States",
  "webAddress": "https://acme.example.com",
  "ownerResourceID": 29744150
}

Searching Companies

GET /v1.0/Companies/query?search={"filter":[{"field":"companyName","op":"contains","value":"acme"}]}

Common Search Patterns

**Search by name:**

{
  "filter": [
    {"field": "companyName", "op": "contains", "value": "acme"}
  ]
}

**Active customers only:**

{
  "filter": [
    {"field": "companyType", "op": "eq", "value": 1},
    {"field": "isActive", "op": "eq", "value": true}
  ]
}

**Companies by account manager:**

{
  "filter": [
    {"field": "ownerResourceID", "op": "eq", "value": 29744150}
  ]
}

Updating a Company

PATCH /v1.0/Companies
Content-Type: application/json
{
  "id": 12345,
  "phone": "555-987-6543",
  "webAddress": "https://newsite.acme.com"
}

Creating a Contact

POST /v1.0/Contacts
Content-Type: application/json
{
  "companyID": 12345,
  "firstName": "John",
  "lastName": "Smith",
  "emailAddress": "john.smith@acme.example.com",
  "phone": "555-123-4567",
  "mobilePhone": "555-987-6543",
  "title": "IT Director",
  "isActive": 1,
  "isPrimaryContact": true
}

Searching Contacts

**Contacts for a company:**

{
  "filter": [
    {"field": "companyID", "op": "eq", "value": 12345},
    {"field": "isActive", "op": "eq", "value": 1}
  ]
}

**Search by email:**

{
  "filter": [
    {"field": "emailAddress", "op": "eq", "value": "john.smith@acme.example.com"}
  ]
}

Creating a Site

POST /v1.0/CompanyLocations
Content-Type: application/json
{
  "companyID": 12345,
  "name": "Main Office",
  "address1": "123 Main Street",
  "city": "Springfield",
  "state": "IL",
  "postalCode": "62701",
  "country": "United States",
  "isPrimaryLocation": true,
  "isActive": 1
}

Update an Opportunity

`autotask_update_opportunity` (write tier; `opportunityId` plus only the fields to change) moves stage, status, probability, owner and close date, and records win/loss reasons.

  • Revenue: set the per-period fields (`monthlyRevenue`, `yearlyRevenue`, `onetimeRevenue`, ...). Setting `amount` **replaces** the breakdown with a one-time value and clears recurring revenue; `cost` behaves the same way.
  • `useQuoteTotals: true` overwrites every revenue and cost field from the primary quote, and zeroes them if no quote is attached.
  • Stage, win-rea
Read more
@wyre-technology
Ships withmsp-claude-plugins

One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai

52200 skills146 agents4 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
52
Star history of wyre-technology/msp-claude-plugins on GitHub, a chart by star-history.com

Other skills on msp-claude-plugins.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills13d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react4d252k
@facebook@facebookInstall Skill

Questions about crm.

Which coding agents can use crm?
crm installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.