---
title: "Notes Management"
description: "Create and manage customer notes and interaction records in Brevo CRM for Tajo"
url: https://tajo.io/docs/sales-crm/notes/
markdown: https://tajo.io/docs/sales-crm/notes.md
lang: en-US
---

# 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

```http
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

```json
{
  "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

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

### Response

```json
{
  "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

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

### Get Single Note

```http
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:

```javascript
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

```javascript
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

```javascript
// 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

```javascript
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

- **[Companies Management](https://tajo.io/docs/sales-crm/companies)** - Manage corporate accounts
- **[Deals Management](https://tajo.io/docs/sales-crm/deals)** - Track sales pipeline
- **[Task Management](https://tajo.io/docs/sales-crm/tasks)** - Manage sales activities
- **[Files](https://tajo.io/docs/sales-crm/files)** - Manage deal attachments
