노트 관리
Brevo CRM Notes API를 사용하면 Tajo 플랫폼 안에서 연락처, 회사, 거래에 연결된 고객 상호작용, 미팅 요약, 중요한 세부 정보를 기록할 수 있습니다.
개요
노트 관리는 다음과 같은 목적에 꼭 필요합니다:
- 상호작용 이력 고객과의 대화와 미팅 결과를 기록합니다
- 팀 협업 영업팀 전체가 계정에 대한 맥락을 공유합니다
- 거래 문서화 협상 세부 사항과 결정 내용을 기록합니다
- 로열티 프로그램 노트 고객 선호도와 프로그램 피드백을 추적합니다
- 컴플라이언스 기록 고객 커뮤니케이션의 감사 추적을 유지합니다
빠른 시작
노트 생성
POST https://api.brevo.com/v3/crm/notesContent-Type: application/jsonapi-key: YOUR_API_KEY
{ "text": "Met with Acme Corp to discuss enterprise loyalty program upgrade. They're interested in Diamond tier benefits and want to consolidate all 12 locations under a single account. Key decision maker is VP of Operations. Follow up with volume discount proposal by end of week.", "contactIds": [12345], "dealIds": ["deal_abc123def456"], "companyIds": ["comp_123456789"]}응답
{ "id": "note_001", "text": "Met with Acme Corp to discuss enterprise loyalty program upgrade...", "contactIds": [12345], "dealIds": ["deal_abc123def456"], "companyIds": ["comp_123456789"], "created_at": "2026-01-25T14:30:00Z", "updated_at": "2026-01-25T14:30:00Z"}노트 조회
전체 노트 목록
GET https://api.brevo.com/v3/crm/notes?limit=50&offset=0&sort=descContent-Type: application/jsonapi-key: YOUR_API_KEY응답
{ "items": [ { "id": "note_001", "text": "Met with Acme Corp to discuss enterprise loyalty program upgrade...", "contactIds": [12345], "dealIds": ["deal_abc123def456"], "companyIds": ["comp_123456789"], "created_at": "2026-01-25T14:30:00Z" } ], "total": 1}노트 필터링
GET https://api.brevo.com/v3/crm/notes?filters[companyIds]=comp_123456789&sort=created_at:desc단일 노트 조회
GET https://api.brevo.com/v3/crm/notes/{note_id}Content-Type: application/jsonapi-key: YOUR_API_KEY자동 노트 생성
활동 기반 노트
CRM 활동에서 노트를 자동으로 생성합니다:
class NoteAutomation { constructor() { this.notesApi = new NotesApi(); }
async logDealStageChange(deal, oldStage, newStage) { const noteText = [ `Deal stage changed: ${oldStage} → ${newStage}`, `Deal value: $${deal.attributes.amount?.toLocaleString()}`, `Probability: ${deal.attributes.probability}%`, newStage === 'Closed Won' ? `Loyalty points awarded: ${deal.attributes.loyalty_points_bonus}` : '', `Updated by: ${deal.attributes.deal_owner}` ].filter(Boolean).join('\n');
return await this.notesApi.createNote({ text: noteText, dealIds: [deal.id], companyIds: deal.attributes.company_id ? [deal.attributes.company_id] : [], contactIds: deal.attributes.contact_id ? [deal.attributes.contact_id] : [] }); }
async logLoyaltyTierChange(company, oldTier, newTier) { const noteText = [ `Loyalty tier upgraded: ${oldTier} → ${newTier}`, `Annual spend: $${company.attributes.annual_spend?.toLocaleString()}`, `New benefits: ${this.getTierBenefits(newTier).join(', ')}`, `Account manager notified: ${company.attributes.account_manager}` ].join('\n');
return await this.notesApi.createNote({ text: noteText, companyIds: [company.id] }); }
async logCustomerFeedback(contactId, feedback) { const noteText = [ `Customer feedback received:`, `Category: ${feedback.category}`, `Rating: ${feedback.rating}/5`, `Comment: ${feedback.comment}`, feedback.loyaltyRelated ? `Loyalty program feedback: ${feedback.loyaltyComment}` : '' ].filter(Boolean).join('\n');
return await this.notesApi.createNote({ text: noteText, contactIds: [contactId] }); }}미팅 요약 노트
class MeetingNotes { async createMeetingSummary(meetingData) { const noteText = [ `Meeting: ${meetingData.title}`, `Date: ${new Date(meetingData.date).toLocaleDateString()}`, `Attendees: ${meetingData.attendees.join(', ')}`, '', '## Discussion Points', ...meetingData.topics.map(t => `- ${t}`), '', '## Action Items', ...meetingData.actions.map(a => `- [ ] ${a.description} (${a.assignee}, due ${a.dueDate})`), '', '## Next Steps', meetingData.nextSteps ].join('\n');
return await this.notesApi.createNote({ text: noteText, contactIds: meetingData.contactIds || [], dealIds: meetingData.dealIds || [], companyIds: meetingData.companyIds || [] }); }}API 메서드 레퍼런스
// Create a noteconst note = await notesApi.createNote({ text: 'Customer interested in premium loyalty tier', contactIds: [12345], dealIds: ['deal_abc123']});
// Get note by IDconst note = await notesApi.getNote('note_001');
// Update noteawait notesApi.updateNote('note_001', { text: 'Updated: Customer confirmed interest in premium loyalty tier. Meeting scheduled for next week.'});
// Delete noteawait notesApi.deleteNote('note_001');
// List notes with filteringconst notes = await notesApi.getNotes({ filters: { companyIds: 'comp_123456789' }, sort: 'created_at:desc', limit: 50});모범 사례
- 구체적으로 작성하세요: 금액, 날짜, 다음 단계 같은 관련 세부 정보를 포함합니다
- 레코드를 연결하세요: 관련된 모든 연락처, 거래, 회사에 노트를 연결합니다
- 기록을 자동화하세요: 단계 변경과 주요 이벤트에 대해 노트를 자동으로 생성합니다
- 일관된 형식을 사용하세요: 미팅 요약에 팀 전체가 공유하는 노트 구조를 채택합니다
- 즉시 문서화하세요: 세부 내용이 생생할 때, 상호작용 직후에 노트를 작성합니다
오류 처리
try { const note = await notesApi.createNote(noteData); console.log('Note created:', note.id);} catch (error) { if (error.status === 400) { console.error('Invalid note data:', error.message); } else if (error.status === 404) { console.error('Associated contact, deal, or company not found'); } else { console.error('Unexpected error:', error); }}