Notes and Activities
Each client record at /contacts/:id includes a chronological interaction history (Activity) and an internal commenting system for your team (Notes).
Activity Timeline
Frihet automatically logs every relevant commercial and billing event for the client:
- Invoice created (
invoice_created), sent (invoice_sent), paid (invoice_paid), or overdue (invoice_overdue) - Quote created (
quote_created), accepted (quote_accepted), or rejected (quote_rejected) - Expense logged (
expense_logged) linked to the client - Stage transition in the sales pipeline (
stage_changed, recording the previous and new stage) - Note added (
note_added) and Client created (client_created)
The timeline orders events from newest to oldest and groups them into time buckets:
| Timeline bucket | What it groups |
|---|---|
| Today | Events logged on the current calendar date |
| This week | Events from the last 7 days (excluding today) |
YYYY-MM | Older events grouped by calendar month (for example, 2026-09) |
| No valid date | Imported events without a parseable timestamp (always rendered last) |
Next Action in the Timeline
Historical activity is paired with the client's immediate commitment (nextAction):
- When the client has an open next action (
status: "open"), it is pinned at the top of the timeline with the Next: label followed by its title and due date (or No due date). - Saving a next action from the client record also logs a
taskactivity (status: "open"). - Clicking Done in the next action panel records the completion in the timeline as
Done: {title}(status: "done").
Manual Activities
At the bottom of the Activity tab (when your workspace role includes write permissions for clients), three quick actions are available:
- Log call: opens the description input so you can summarize the call and saves a
callentry when you click Log call or pressEnter. - Log meeting: opens the description input to record meeting notes or attendees and saves a
meetingentry. - Add task: opens the next action panel at the top of the client record.
Internal Notes
Notes are internal comments attached to the client record. They are visible only to members of your workspace and are never shown to the client or exposed in the client portal.
Create Note
- Open the client record and select the Notes tab (shortcut
n). - Type your comment in the Write a note... field.
- Click Save or press Cmd+Enter (
Ctrl+Enteron Windows and Linux).
Each newly created note automatically adds a Note added entry to the activity timeline.
Edit and Delete Notes
- Hover over any note to reveal the action icons.
- Click the pencil icon (Edit note), update the text, and click Save (or press
Cmd+Enter/Ctrl+Enter). Modified notes display an (edited) indicator next to their relative timestamp. - Click the trash icon (Delete note) to remove the note.
REST API and MCP Server Usage
You can query and log client activities and notes programmatically through the REST API and the MCP server:
| Operation | REST Endpoint | MCP Tool |
|---|---|---|
| List activities | GET /v1/clients/{clientId}/activities | list_client_activities |
| Log activity | POST /v1/clients/{clientId}/activities | log_client_activity |
| Get activity | GET /v1/clients/{clientId}/activities/{activityId} | — |
| List notes | GET /v1/clients/{clientId}/notes | list_client_notes |
| Create note | POST /v1/clients/{clientId}/notes | create_client_note |
| Get note | GET /v1/clients/{clientId}/notes/{noteId} | — |
| Update note | PATCH /v1/clients/{clientId}/notes/{noteId} | — |
| Delete note | DELETE /v1/clients/{clientId}/notes/{noteId} | delete_client_note |
Example logging a follow-up call and an internal team note via the REST API:
# 1. Log a call in the client's activity timeline
curl -X POST "https://api.frihet.io/v1/clients/cli_01J8X9K2M4/activities" \
-H "X-API-Key: fri_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"type": "call",
"title": "Follow-up call on Q4 quote",
"description": "Confirmed technical scope. Awaiting procurement sign-off."
}'
# 2. Add an internal note for the team
curl -X POST "https://api.frihet.io/v1/clients/cli_01J8X9K2M4/notes" \
-H "X-API-Key: fri_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"content": "Prefers monthly billing on net-30 terms. Procurement contact: Maria Garcia."
}'
Contract Limits and Boundaries
- Accepted activity types (
ActivityType): the REST API accepts all 8 manual or integration types ("call","email","email_sent"—where the legacy"email"value is normalized and stored as"email_sent"—,"meeting","note_added","task","stage_changed", and"client_created"), while thelog_client_activityMCP tool accepts the 4 direct interaction types ("call","email","meeting", and"task"). Invoice, quote, and expense activity entries are generated automatically by the system. - Activity immutability vs. note updates: activity timeline entries are immutable once created (append-only: neither
PATCHnorDELETEis supported). Internal notes can be updated in place from the web app (Edit note) or viaPATCH /v1/clients/{clientId}/notes/{noteId}in the REST API; the MCP server exposes list, create, and delete operations (list_client_notes,create_client_note, anddelete_client_note). - Maximum lengths in REST API and MCP: for activities,
titleis required (up to500characters),descriptionis optional (up to5000characters), andmetadata(in the REST API) accepts string values up to1000characters; for notes,contentis required (up to10000characters).
Related: Client detail · Contact persons · Kanban CRM