> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thread.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Action Types Reference

> Complete reference for all action types available in Thread templates

## Overview

Actions are the building blocks of templates. Each action type has specific configuration options, execution behavior, and completion criteria. This reference covers all available action types in detail.

***

## Action Categories

Actions are organized into three categories:

| Category           | Description                          | Action Types                                  |
| ------------------ | ------------------------------------ | --------------------------------------------- |
| **Communication**  | Messages sent to customers           | SEND\_EMAIL, SLACK                            |
| **Customer Tasks** | Actions customers complete in portal | REQUEST\_DOCS, COLLECT\_INFO, REQUEST\_ASSETS |
| **Meetings**       | Scheduling and meeting coordination  | SCHEDULE\_MEETING                             |

***

## Common Configuration

All actions share these configuration options:

### Basic Settings

| Setting         | Description                              | Required |
| --------------- | ---------------------------------------- | -------- |
| **Label**       | Display name shown to CSMs and customers | Yes      |
| **Description** | Detailed explanation of the action       | No       |
| **Trigger**     | When the action activates                | Yes      |

### Trigger Configuration

```
Trigger Types:
├── milestone_start    # When milestone begins
│   └── delay_hours    # Optional delay (0-720 hours)
└── manual             # CSM triggers manually
```

| Trigger Type         | Description                                    |
| -------------------- | ---------------------------------------------- |
| **milestone\_start** | Activates when the containing milestone starts |
| **manual**           | CSM must manually trigger from dashboard       |

**Delay Configuration:**

* `delay_hours: 0` - Immediate (default)
* `delay_hours: 24` - 1 day after milestone start
* `delay_hours: 168` - 1 week after milestone start

### Visibility Settings

Control where actions appear:

**CSM Dashboard Settings:**

| Setting     | Description                    |
| ----------- | ------------------------------ |
| **visible** | Show in CSM implementation tab |
| **label**   | Custom label for CSM view      |
| **section** | Group under specific section   |

**Customer Portal Settings:**

| Setting     | Description                           |
| ----------- | ------------------------------------- |
| **visible** | Show in customer portal               |
| **label**   | Customer-facing label                 |
| **blocker** | Block milestone completion until done |

### Blocker Configuration

When `blocker: true`, the action must be completed before:

* The milestone can be marked complete
* The customer sees "completed" status
* Progress percentage reaches 100%

***

## SEND\_EMAIL

Send templated emails to customers with variable interpolation.

### Configuration

| Field       | Type      | Description                 | Required |
| ----------- | --------- | --------------------------- | -------- |
| **subject** | string    | Email subject line          | Yes      |
| **body**    | string    | Email body (HTML supported) | Yes      |
| **to**      | string\[] | Primary recipients          | Yes      |
| **cc**      | string\[] | CC recipients               | No       |
| **bcc**     | string\[] | BCC recipients              | No       |

### Variable Interpolation

Use variables in subject and body:

```
Available Variables:
├── {{company_name}}      # Customer company name
├── {{contact_name}}      # Primary contact name
├── {{contact_email}}     # Primary contact email
├── {{csm_name}}          # Assigned CSM name
├── {{csm_email}}         # Assigned CSM email
├── {{milestone_name}}    # Current milestone name
└── {{custom_field}}      # Any custom field value
```

**Example:**

```
Subject: Welcome to Thread, {{company_name}}!

Body: Hi {{contact_name}},

I'm {{csm_name}}, your Customer Success Manager.
I'm excited to help {{company_name}} get started with Thread.
```

### Execution

1. **Draft Generation**: AI generates initial draft based on template
2. **CSM Review**: CSM reviews and edits in implementation tab
3. **Approval**: CSM approves the email
4. **Sending**: Email sent via configured email provider

### Completion

* **Type**: Manual
* **Criteria**: CSM marks action as complete after sending
* **Status Flow**: `draft` → `approved` → `sent` → `completed`

### Best Practices

<CardGroup cols={2}>
  <Card title="Personalize Early" icon="user">
    Include contact name in subject for better open rates
  </Card>

  <Card title="Clear CTAs" icon="bullseye">
    One clear call-to-action per email
  </Card>

  <Card title="Mobile-Friendly" icon="mobile">
    Keep subject under 50 characters
  </Card>

  <Card title="Test Variables" icon="flask">
    Preview with real data before sending
  </Card>
</CardGroup>

***

## REQUEST\_DOCS

Request document uploads from customers through the portal.

### Configuration

| Field               | Type    | Description                   | Required |
| ------------------- | ------- | ----------------------------- | -------- |
| **document\_types** | array   | Types of documents to request | Yes      |
| **instructions**    | string  | Instructions for customer     | No       |
| **allow\_multiple** | boolean | Allow multiple files per type | No       |

### Document Type Configuration

```typescript theme={null}
{
  document_types: [
    {
      name: "Logo",
      description: "Company logo in PNG or SVG format",
      required: true,
      accepted_formats: [".png", ".svg", ".jpg"]
    },
    {
      name: "Brand Guidelines",
      description: "Brand style guide if available",
      required: false,
      accepted_formats: [".pdf", ".doc", ".docx"]
    }
  ]
}
```

### Execution

1. **Activation**: Action appears in customer portal
2. **Upload**: Customer uploads requested files
3. **Validation**: System validates file types and sizes
4. **Notification**: CSM notified when files uploaded

### Completion

* **Type**: Automatic
* **Criteria**: All required documents uploaded
* **Partial Completion**: Shows X of Y documents uploaded

### File Restrictions

| Restriction            | Default           | Configurable |
| ---------------------- | ----------------- | ------------ |
| **Max file size**      | 10 MB             | Yes          |
| **Accepted formats**   | Per document type | Yes          |
| **Max files per type** | 5                 | Yes          |

***

## COLLECT\_INFO

Collect structured information from customers via forms.

### Configuration

| Field                   | Type   | Description                    | Required |
| ----------------------- | ------ | ------------------------------ | -------- |
| **intro\_text**         | string | Introduction shown before form | No       |
| **fields**              | array  | Form field definitions         | Yes      |
| **completion\_message** | string | Message shown after submission | No       |

### Field Types

```
Available Field Types:
├── text           # Single-line text input
├── textarea       # Multi-line text area
├── select         # Dropdown selection
├── multi_select   # Multiple choice selection
├── checkbox       # Boolean checkbox
├── date           # Date picker
├── email          # Email with validation
├── phone          # Phone number
└── number         # Numeric input
```

### Field Configuration

```typescript theme={null}
{
  fields: [
    {
      id: "primary_use_case",
      type: "textarea",
      label: "What is your primary use case?",
      placeholder: "Describe how you plan to use our product...",
      required: true,
      validation: {
        min_length: 50,
        max_length: 1000
      }
    },
    {
      id: "team_size",
      type: "select",
      label: "Team size",
      options: ["1-10", "11-50", "51-200", "200+"],
      required: true
    }
  ]
}
```

### Execution

1. **Activation**: Form appears in customer portal
2. **Completion**: Customer fills out all required fields
3. **Validation**: Client and server-side validation
4. **Submission**: Data stored and CSM notified

### Completion

* **Type**: Automatic
* **Criteria**: Form submitted successfully
* **Validation**: All required fields must pass validation

### Quick-Fill Feature

Customers can use AI-powered quick-fill:

1. Paste relevant text (emails, documents)
2. AI extracts information
3. Fields auto-populated
4. Customer reviews and submits

***

## REQUEST\_ASSETS

Request brand assets combining document uploads and form fields in a unified flow.

### Configuration

| Field            | Type   | Description                   | Required |
| ---------------- | ------ | ----------------------------- | -------- |
| **asset\_types** | array  | Documents/images to request   | Yes      |
| **form\_fields** | array  | Additional information fields | No       |
| **instructions** | string | Overall instructions          | No       |

### Asset Type Configuration

```typescript theme={null}
{
  asset_types: [
    {
      name: "Primary Logo",
      description: "Main company logo",
      type: "image",
      required: true,
      dimensions: {
        min_width: 500,
        recommended: "1000x1000"
      }
    },
    {
      name: "Brand Colors",
      description: "Primary and secondary brand colors",
      type: "color_picker",
      required: true,
      count: 3
    }
  ],
  form_fields: [
    {
      id: "tagline",
      type: "text",
      label: "Company tagline",
      required: false
    }
  ]
}
```

### Combined Flow

REQUEST\_ASSETS combines:

* Document uploads (like REQUEST\_DOCS)
* Form fields (like COLLECT\_INFO)
* Special asset types (colors, dimensions)

**Use Cases:**

* Brand kit collection
* Design asset gathering
* Marketing material requests

### Execution

1. **Activation**: Combined interface appears in portal
2. **Upload**: Customer uploads images/documents
3. **Form Fill**: Customer completes additional fields
4. **Submission**: All data submitted together

### Completion

* **Type**: Automatic
* **Criteria**: All required assets and fields submitted
* **Progress**: Shows completion percentage

***

## SCHEDULE\_MEETING

Coordinate meeting scheduling with customers.

### Configuration

| Field             | Type   | Description         | Required |
| ----------------- | ------ | ------------------- | -------- |
| **meeting\_type** | string | Type of meeting     | Yes      |
| **duration**      | number | Duration in minutes | Yes      |
| **agenda**        | string | Meeting agenda      | No       |
| **attendees**     | array  | Required attendees  | No       |

### Meeting Types

```
Common Meeting Types:
├── Kickoff Call       # Initial onboarding meeting
├── Training Session   # Product training
├── Check-in           # Regular touchpoint
├── QBR                # Quarterly business review
└── Executive Sync     # Leadership meeting
```

### Configuration Example

```typescript theme={null}
{
  meeting_type: "Kickoff Call",
  duration: 60,
  agenda: "1. Introductions\n2. Goals review\n3. Timeline walkthrough\n4. Q&A",
  attendees: {
    internal: ["csm", "implementation_lead"],
    external: ["primary_contact", "executive_sponsor"]
  }
}
```

### Execution

1. **Activation**: Meeting action becomes active
2. **Scheduling**: CSM shares scheduling link or books directly
3. **Confirmation**: Calendar invites sent to all parties
4. **Meeting**: Meeting occurs
5. **Completion**: CSM marks complete after meeting

### Completion

* **Type**: Manual
* **Criteria**: CSM marks complete after meeting held
* **Notes**: CSM can add meeting notes on completion

### Calendar Integration

When connected to Google Calendar or Microsoft:

* Availability checking
* Auto-generated meeting links (Meet/Teams)
* Calendar invites sent automatically

***

## SLACK

Send messages to Slack channels (requires Slack integration).

### Configuration

| Field          | Type   | Description                | Required |
| -------------- | ------ | -------------------------- | -------- |
| **channel**    | string | Target Slack channel       | Yes      |
| **message**    | string | Message content            | Yes      |
| **formatting** | object | Message formatting options | No       |

### Message Configuration

```typescript theme={null}
{
  channel: "#customer-{{company_slug}}",
  message: "Welcome to Thread! Your CSM {{csm_name}} will reach out shortly.",
  formatting: {
    include_logo: true,
    include_links: true
  }
}
```

### Variable Support

Same variables as SEND\_EMAIL:

* `{{company_name}}`
* `{{contact_name}}`
* `{{csm_name}}`
* Custom fields

### Execution

1. **Channel Setup**: Shared Slack channel must exist
2. **Draft**: Message prepared with variables
3. **Review**: CSM reviews message
4. **Send**: Message posted to channel

### Completion

* **Type**: Manual
* **Criteria**: CSM marks complete after sending
* **Verification**: Message delivery confirmed

### Prerequisites

* Slack integration connected
* Shared channel with customer
* Bot has channel access

***

## Comparison Table

| Action Type       | Auto-Complete | Portal Visible | Executable | Category       |
| ----------------- | ------------- | -------------- | ---------- | -------------- |
| SEND\_EMAIL       | No            | No             | Yes        | Communication  |
| REQUEST\_DOCS     | Yes           | Yes            | Yes        | Customer Tasks |
| COLLECT\_INFO     | Yes           | Yes            | Yes        | Customer Tasks |
| REQUEST\_ASSETS   | Yes           | Yes            | Yes        | Customer Tasks |
| SCHEDULE\_MEETING | No            | Optional       | No         | Meetings       |
| SLACK             | No            | No             | No         | Communication  |

***

## Best Practices

### Choosing Action Types

<AccordionGroup>
  <Accordion title="When to use SEND_EMAIL vs SLACK">
    **Use SEND\_EMAIL for:**

    * Formal communications
    * Content customers need to reference later
    * External stakeholders not in Slack

    **Use SLACK for:**

    * Quick updates
    * Casual check-ins
    * Time-sensitive notifications
  </Accordion>

  <Accordion title="When to use REQUEST_DOCS vs REQUEST_ASSETS">
    **Use REQUEST\_DOCS for:**

    * Single document type requests
    * Compliance documents
    * Contracts and agreements

    **Use REQUEST\_ASSETS for:**

    * Brand kit collection
    * Multiple related assets
    * Combined file and form data
  </Accordion>

  <Accordion title="When to use COLLECT_INFO">
    **Best for:**

    * Structured data collection
    * Survey responses
    * Configuration preferences
    * Technical requirements
  </Accordion>
</AccordionGroup>

### Trigger Timing

| Scenario            | Recommended Delay   |
| ------------------- | ------------------- |
| Welcome email       | 0 hours (immediate) |
| Follow-up check-in  | 48-72 hours         |
| Document request    | 24 hours            |
| Training scheduling | 72-168 hours        |

### Blocker Strategy

**Mark as blocker when:**

* Action is critical to milestone success
* Downstream actions depend on completion
* Customer commitment is required

**Don't mark as blocker when:**

* Action is nice-to-have
* CSM can proceed without it
* Action is informational only

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Creating Templates" icon="file-plus" href="/csm-guide/templates/creating-templates">
    Build templates using these action types
  </Card>

  <Card title="Action Execution" icon="play" href="/csm-guide/automation/action-execution">
    Learn how actions are executed
  </Card>

  <Card title="Template Best Practices" icon="star" href="/csm-guide/templates/best-practices">
    Design effective onboarding flows
  </Card>
</CardGroup>
