إدارة الملاحظات
تتيح لك واجهة 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); }}الخطوات التالية
- إدارة الشركات، إدارة حسابات الشركات
- إدارة الصفقات، تتبّع مسار المبيعات
- إدارة المهام، إدارة أنشطة المبيعات
- الملفات، إدارة مرفقات الصفقات