Claude Skill

Autotask 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.

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download wyre-ai-msp-claude-plugins-msp-claude-plugins_kaseya_autotask_skills_crm-147da75.zip · 2 KB
Part of wyre-ai/msp-claude-plugins — 48 skills

Install

skills CLI npx skills add https://github.com/WYRE-AI/msp-claude-plugins/tree/main/msp-claude-plugins/kaseya/autotask/skills/crm
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install wyre-ai-msp-claude-plugins@llmmart
Git git clone https://github.com/WYRE-AI/msp-claude-plugins.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole wyre-ai/msp-claude-plugins collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

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
}

Common Workflows

Client Onboarding

  1. Create company record

    • Set company type to Customer
    • Assign account manager
    • Add billing information
  2. Create primary contact

    • Mark as primary contact
    • Verify email address
  3. Create site(s)

    • Add all service locations
    • Mark primary location
  4. Set up contract

    • Associate with company
    • Define service levels
  5. Configure billing

    • Payment terms
    • Tax information

Contact Management

  1. Verify before creating

    • Search for existing contact by email
    • Check for duplicates
  2. Maintain accuracy

    • Update titles when employees change roles
    • Mark contacts inactive when they leave
    • Add new contacts as needed
  3. Track relationships

    • Note who can authorize work
    • Track technical vs billing contacts

Company Hierarchy

For MSPs managing parent/child company relationships:

  1. Create parent company first
  2. Create child companies with parentCompanyID
  3. Contracts can roll up to parent
  4. Reporting aggregates by hierarchy

Error Handling

Common API Errors

Code Message Resolution
400 Duplicate company name Check for existing company, use unique name
400 Invalid email format Verify email address syntax
404 Company not found Verify company ID exists
409 Contact already exists Search for existing contact first

Validation Errors

"CompanyName is required" - Company name cannot be empty or null

"Invalid companyType" - Must use valid company type ID from picklist

"Email already exists" - Contact with this email already exists

Best Practices

  1. Standardize naming - Use consistent company name formats
  2. Maintain data quality - Regular audits of contact information
  3. Use classifications - Categorize companies for reporting
  4. Track account managers - Assign ownerResourceID for accountability
  5. Document relationships - Use notes for key account information

Related Skills

Files (msp-claude-plugins)
  • SKILL.md 7.5 KB
    ---
    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
    
    ```http
    POST /v1.0/Companies
    Content-Type: application/json
    ```
    
    ```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
    
    ```http
    GET /v1.0/Companies/query?search={"filter":[{"field":"companyName","op":"contains","value":"acme"}]}
    ```
    
    #### Common Search Patterns
    
    **Search by name:**
    ```json
    {
      "filter": [
        {"field": "companyName", "op": "contains", "value": "acme"}
      ]
    }
    ```
    
    **Active customers only:**
    ```json
    {
      "filter": [
        {"field": "companyType", "op": "eq", "value": 1},
        {"field": "isActive", "op": "eq", "value": true}
      ]
    }
    ```
    
    **Companies by account manager:**
    ```json
    {
      "filter": [
        {"field": "ownerResourceID", "op": "eq", "value": 29744150}
      ]
    }
    ```
    
    ### Updating a Company
    
    ```http
    PATCH /v1.0/Companies
    Content-Type: application/json
    ```
    
    ```json
    {
      "id": 12345,
      "phone": "555-987-6543",
      "webAddress": "https://newsite.acme.com"
    }
    ```
    
    ### Creating a Contact
    
    ```http
    POST /v1.0/Contacts
    Content-Type: application/json
    ```
    
    ```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:**
    ```json
    {
      "filter": [
        {"field": "companyID", "op": "eq", "value": 12345},
        {"field": "isActive", "op": "eq", "value": 1}
      ]
    }
    ```
    
    **Search by email:**
    ```json
    {
      "filter": [
        {"field": "emailAddress", "op": "eq", "value": "john.smith@acme.example.com"}
      ]
    }
    ```
    
    ### Creating a Site
    
    ```http
    POST /v1.0/CompanyLocations
    Content-Type: application/json
    ```
    
    ```json
    {
      "companyID": 12345,
      "name": "Main Office",
      "address1": "123 Main Street",
      "city": "Springfield",
      "state": "IL",
      "postalCode": "62701",
      "country": "United States",
      "isPrimaryLocation": true,
      "isActive": 1
    }
    ```
    
    ## Common Workflows
    
    ### Client Onboarding
    
    1. **Create company record**
       - Set company type to Customer
       - Assign account manager
       - Add billing information
    
    2. **Create primary contact**
       - Mark as primary contact
       - Verify email address
    
    3. **Create site(s)**
       - Add all service locations
       - Mark primary location
    
    4. **Set up contract**
       - Associate with company
       - Define service levels
    
    5. **Configure billing**
       - Payment terms
       - Tax information
    
    ### Contact Management
    
    1. **Verify before creating**
       - Search for existing contact by email
       - Check for duplicates
    
    2. **Maintain accuracy**
       - Update titles when employees change roles
       - Mark contacts inactive when they leave
       - Add new contacts as needed
    
    3. **Track relationships**
       - Note who can authorize work
       - Track technical vs billing contacts
    
    ### Company Hierarchy
    
    For MSPs managing parent/child company relationships:
    
    1. **Create parent company first**
    2. **Create child companies with parentCompanyID**
    3. **Contracts can roll up to parent**
    4. **Reporting aggregates by hierarchy**
    
    ## Error Handling
    
    ### Common API Errors
    
    | Code | Message | Resolution |
    |------|---------|------------|
    | 400 | Duplicate company name | Check for existing company, use unique name |
    | 400 | Invalid email format | Verify email address syntax |
    | 404 | Company not found | Verify company ID exists |
    | 409 | Contact already exists | Search for existing contact first |
    
    ### Validation Errors
    
    **"CompanyName is required"** - Company name cannot be empty or null
    
    **"Invalid companyType"** - Must use valid company type ID from picklist
    
    **"Email already exists"** - Contact with this email already exists
    
    ## Best Practices
    
    1. **Standardize naming** - Use consistent company name formats
    2. **Maintain data quality** - Regular audits of contact information
    3. **Use classifications** - Categorize companies for reporting
    4. **Track account managers** - Assign ownerResourceID for accountability
    5. **Document relationships** - Use notes for key account information
    
    ## Related Skills
    
    - [Autotask Tickets](../tickets/SKILL.md) - Service tickets for companies
    - [Autotask Contracts](../contracts/SKILL.md) - Service agreements
    - [Autotask Projects](../projects/SKILL.md) - Project management
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related