---
title: "작업 관리 | Tajo"
description: "Tajo용 Brevo CRM에서 영업 작업, 후속 조치, 활동을 생성하고 관리합니다"
url: https://tajo.io/kr/docs/sales-crm/tasks/
markdown: https://tajo.io/kr/docs/sales-crm/tasks.md
lang: ko-KR
author: "Set Noa"
author_url: https://tajo.io/kr/set-noa/
robots: noindex
---

Tajo 사전 이용 신청

이름과 회사 이메일 주소를 입력하세요. Tajo 이용 신청을 확인할 수 있는 링크를 이메일로 보내드립니다.

# 작업 관리

[Set Noa](https://tajo.io/kr/set-noa/)

Brevo CRM Tasks API를 사용하면 영업 활동, 후속 조치, 리마인더를 생성하고 관리하여 Tajo 플랫폼 안에서 팀을 체계적으로 운영할 수 있습니다.

## 개요

작업 관리는 다음과 같은 상황에서 꼭 필요합니다.

- **영업 후속 조치**: 자동 리마인더와 마감일을 함께 운영합니다
- **팀 협업**: 특정 팀원에게 활동을 배정합니다
- **거래 진행**: 작업을 거래 및 회사와 연결합니다
- **활동 추적**: 팀 생산성과 완료율을 모니터링합니다
- **고객 참여**: 로열티 프로그램 아웃리치와 정기 점검 일정을 잡습니다

## 빠른 시작

### 작업 생성

```http
POST https://api.brevo.com/v3/crm/tasks
Content-Type: application/json
api-key: YOUR_API_KEY

{
  "name": "Follow up on Enterprise Loyalty proposal",
  "taskType": "call",
  "date": "2026-02-15T10:00:00Z",
  "duration": 1800,
  "notes": "Discuss volume discount tier and loyalty point allocation",
  "assignTo": "sarah.johnson@tajo.io",
  "companiesIds": ["comp_123456789"],
  "dealsIds": ["deal_abc123def456"],
  "contactsIds": [12345],
  "done": false,
  "reminder": {
    "value": 15,
    "unit": "minutes"
  }
}
```

### 응답

```json
{
  "id": "task_xyz789",
  "name": "Follow up on Enterprise Loyalty proposal",
  "taskType": "call",
  "date": "2026-02-15T10:00:00Z",
  "done": false,
  "created_at": "2026-01-25T14:30:00Z"
}
```

## 작업 조회

### 전체 작업 목록 조회

```http
GET https://api.brevo.com/v3/crm/tasks?limit=50&offset=0&sort=desc
Content-Type: application/json
api-key: YOUR_API_KEY
```

### 응답

```json
{
  "items": [
    {
      "id": "task_xyz789",
      "name": "Follow up on Enterprise Loyalty proposal",
      "taskType": "call",
      "date": "2026-02-15T10:00:00Z",
      "duration": 1800,
      "assignTo": "sarah.johnson@tajo.io",
      "done": false,
      "companiesIds": ["comp_123456789"],
      "dealsIds": ["deal_abc123def456"],
      "created_at": "2026-01-25T14:30:00Z"
    }
  ],
  "total": 1
}
```

### 작업 필터링

```http
GET https://api.brevo.com/v3/crm/tasks?filters[done]=false&filters[taskType]=call&sort=date:asc
```

### 단일 작업 조회

```http
GET https://api.brevo.com/v3/crm/tasks/{task_id}
Content-Type: application/json
api-key: YOUR_API_KEY
```

## 작업 유형

CRM은 영업 활동별로 여러 작업 유형을 지원합니다.

| 유형 | 설명 | 활용 사례 |
| --- | --- | --- |
| `call` | 전화 통화 | 후속 통화, 데모, 정기 점검 |
| `email` | 이메일 아웃리치 | 제안서, 업데이트, 뉴스레터 |
| `meeting` | 대면 또는 온라인 미팅 | 데모, 협상, 리뷰 |
| `todo` | 일반 작업 | 내부 업무, 리서치, 사전 준비 |
| `deadline` | 기한이 촉박한 작업 | 계약 갱신, 마일스톤 |

## 작업 자동 생성

### 거래 기반 작업 자동화

거래가 단계별로 진행될 때 작업을 자동으로 생성합니다.

```javascript
class TaskAutomation {
  constructor() {
    this.tasksApi = new TasksApi();
  }

  async createDealFollowUp(deal, stageChange) {
    const taskTemplates = {
      'Lead': {
        name: `Qualify lead: ${deal.name}`,
        taskType: 'call',
        daysFromNow: 1,
        duration: 900
      },
      'Qualified': {
        name: `Schedule demo: ${deal.name}`,
        taskType: 'meeting',
        daysFromNow: 3,
        duration: 3600
      },
      'Demo': {
        name: `Send proposal: ${deal.name}`,
        taskType: 'email',
        daysFromNow: 1,
        duration: 1800
      },
      'Proposal': {
        name: `Follow up on proposal: ${deal.name}`,
        taskType: 'call',
        daysFromNow: 5,
        duration: 900
      },
      'Negotiation': {
        name: `Finalize contract: ${deal.name}`,
        taskType: 'deadline',
        daysFromNow: 7,
        duration: 3600
      },
      'Closed Won': {
        name: `Onboard customer: ${deal.name}`,
        taskType: 'meeting',
        daysFromNow: 2,
        duration: 3600
      }
    };

    const template = taskTemplates[stageChange.newStage];
    if (!template) return null;

    const taskDate = new Date();
    taskDate.setDate(taskDate.getDate() + template.daysFromNow);

    return await this.tasksApi.createTask({
      name: template.name,
      taskType: template.taskType,
      date: taskDate.toISOString(),
      duration: template.duration,
      assignTo: deal.attributes.deal_owner,
      dealsIds: [deal.id],
      companiesIds: deal.attributes.company_id ? [deal.attributes.company_id] : [],
      contactsIds: deal.attributes.contact_id ? [deal.attributes.contact_id] : [],
      done: false,
      reminder: { value: 30, unit: 'minutes' }
    });
  }

  async createLoyaltyCheckIn(company) {
    return await this.tasksApi.createTask({
      name: `Loyalty program check-in: ${company.name}`,
      taskType: 'call',
      date: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(),
      duration: 1800,
      assignTo: company.attributes.account_manager,
      companiesIds: [company.id],
      notes: `Review tier status: ${company.attributes.loyalty_tier}\nAnnual spend: $${company.attributes.annual_spend}`,
      done: false,
      reminder: { value: 1, unit: 'days' }
    });
  }
}
```

### 작업 일괄 처리

```javascript
class BulkTaskManager {
  async createRenewalTasks(daysBeforeExpiry = 90) {
    const renewalDate = new Date();
    renewalDate.setDate(renewalDate.getDate() + daysBeforeExpiry);

    const companies = await this.companiesApi.getCompanies({
      filters: {
        'attributes.renewal_date': `<${renewalDate.toISOString()}`
      }
    });

    const tasks = [];
    for (const company of companies.items) {
      const task = await this.tasksApi.createTask({
        name: `Contract renewal: ${company.name}`,
        taskType: 'deadline',
        date: company.attributes.renewal_date,
        assignTo: company.attributes.account_manager,
        companiesIds: [company.id],
        notes: `Contract value: $${company.attributes.contract_value}\nCurrent tier: ${company.attributes.loyalty_tier}`,
        done: false,
        reminder: { value: 7, unit: 'days' }
      });
      tasks.push(task);
    }

    return tasks;
  }
}
```

## API 메서드 레퍼런스

```javascript
// Create a new task
const task = await tasksApi.createTask({
  name: 'Follow up call',
  taskType: 'call',
  date: '2026-02-15T10:00:00Z',
  assignTo: 'sales@tajo.io',
  done: false
});

// Get task by ID
const task = await tasksApi.getTask('task_xyz789');

// Update task
await tasksApi.updateTask('task_xyz789', {
  done: true,
  notes: 'Customer agreed to upgrade tier'
});

// Delete task
await tasksApi.deleteTask('task_xyz789');

// List tasks with filtering
const tasks = await tasksApi.getTasks({
  filters: {
    done: false,
    taskType: 'call',
    assignTo: 'sarah@tajo.io'
  },
  sort: 'date:asc',
  limit: 50
});
```

## 모범 사례

1. **작업 생성을 자동화하세요**: 거래 단계 변경에 작업을 연결하면 후속 조치가 일관되게 이어집니다
2. **리마인더를 설정하세요**: 기한이 촉박한 작업에는 반드시 리마인더를 구성합니다
3. **레코드를 연결하세요**: 맥락을 유지할 수 있도록 작업을 거래, 회사, 연락처와 연결합니다
4. **완료 현황을 추적하세요**: 작업 완료율을 모니터링해 팀 성과를 파악합니다
5. **작업 유형을 활용하세요**: 활동 리포트를 정확하게 뽑을 수 있도록 작업을 알맞게 분류합니다

## 오류 처리

```javascript
try {
  const task = await tasksApi.createTask(taskData);
  console.log('Task created:', task.id);
} catch (error) {
  if (error.status === 400) {
    console.error('Invalid task data:', error.message);
  } else if (error.status === 404) {
    console.error('Associated deal or contact not found');
  } else {
    console.error('Unexpected error:', error);
  }
}
```

## 다음 단계

- **[회사 관리](https://tajo.io/kr/docs/sales-crm/companies)** - 기업 계정을 관리합니다
- **[거래 관리](https://tajo.io/kr/docs/sales-crm/deals)** - 영업 파이프라인을 추적합니다
- **[메모](https://tajo.io/kr/docs/sales-crm/notes)** - 고객 상호작용을 기록합니다
- **[파일](https://tajo.io/kr/docs/sales-crm/files)** - 거래 첨부 파일을 관리합니다
