笔记管理
Brevo CRM 笔记 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); }}