Skip to main content

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 bucketWhat it groups
TodayEvents logged on the current calendar date
This weekEvents from the last 7 days (excluding today)
YYYY-MMOlder events grouped by calendar month (for example, 2026-09)
No valid dateImported 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 task activity (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:

  1. Log call: opens the description input so you can summarize the call and saves a call entry when you click Log call or press Enter.
  2. Log meeting: opens the description input to record meeting notes or attendees and saves a meeting entry.
  3. 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​

  1. Open the client record and select the Notes tab (shortcut n).
  2. Type your comment in the Write a note... field.
  3. Click Save or press Cmd+Enter (Ctrl+Enter on 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:

OperationREST EndpointMCP Tool
List activitiesGET /v1/clients/{clientId}/activitieslist_client_activities
Log activityPOST /v1/clients/{clientId}/activitieslog_client_activity
Get activityGET /v1/clients/{clientId}/activities/{activityId}—
List notesGET /v1/clients/{clientId}/noteslist_client_notes
Create notePOST /v1/clients/{clientId}/notescreate_client_note
Get noteGET /v1/clients/{clientId}/notes/{noteId}—
Update notePATCH /v1/clients/{clientId}/notes/{noteId}—
Delete noteDELETE /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 the log_client_activity MCP 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 PATCH nor DELETE is supported). Internal notes can be updated in place from the web app (Edit note) or via PATCH /v1/clients/{clientId}/notes/{noteId} in the REST API; the MCP server exposes list, create, and delete operations (list_client_notes, create_client_note, and delete_client_note).
  • Maximum lengths in REST API and MCP: for activities, title is required (up to 500 characters), description is optional (up to 5000 characters), and metadata (in the REST API) accepts string values up to 1000 characters; for notes, content is required (up to 10000 characters).

Related: Client detail · Contact persons · Kanban CRM