Notes Management

The Brevo CRM Notes API enables you to document customer interactions, meeting summaries, and important details associated with contacts, companies, and deals within the Tajo platform.

Overview

Notes management is essential for:

  • Interaction history documenting customer conversations and meeting outcomes
  • Team collaboration sharing context about accounts across your sales team
  • Deal documentation recording negotiation details and decisions
  • Loyalty program notes tracking customer preferences and program feedback
  • Compliance records maintaining audit trails for customer communications

Quick Start

Create Note

POST https://api.brevo.com/v3/crm/notes
Content-Type: application/json
api-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"]
}

Response

{
"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 Notes

List All Notes

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

Response

{
"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
}

Filter Notes

GET https://api.brevo.com/v3/crm/notes?filters[companyIds]=comp_123456789&sort=created_at:desc

Get Single Note

GET https://api.brevo.com/v3/crm/notes/{note_id}
Content-Type: application/json
api-key: YOUR_API_KEY

Automated Note Creation

Activity-Based Notes

Create notes automatically from CRM activities:

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]
});
}
}

Meeting Summary Notes

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 Methods Reference

// Create a note
const note = await notesApi.createNote({
text: 'Customer interested in premium loyalty tier',
contactIds: [12345],
dealIds: ['deal_abc123']
});
// Get note by ID
const note = await notesApi.getNote('note_001');
// Update note
await notesApi.updateNote('note_001', {
text: 'Updated: Customer confirmed interest in premium loyalty tier. Meeting scheduled for next week.'
});
// Delete note
await notesApi.deleteNote('note_001');
// List notes with filtering
const notes = await notesApi.getNotes({
filters: { companyIds: 'comp_123456789' },
sort: 'created_at:desc',
limit: 50
});

Best Practices

  1. Be specific: Include relevant details like amounts, dates, and next steps
  2. Link records: Associate notes with all related contacts, deals, and companies
  3. Automate logging: Create notes automatically for stage changes and key events
  4. Use consistent format: Adopt a team-wide note structure for meeting summaries
  5. Timely documentation: Create notes immediately after interactions while details are fresh

Error Handling

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);
}
}

Next Steps

AI Assistant

Hi! Ask me anything about the docs.

Commencez gratuitement avec Brevo