Notes, Tasks & Activities
The three tools that keep your team on the same page — notes for freeform context, tasks for assigned follow-ups, and logged activities for a chronological record of every customer interaction.
Every customer record in Knowledge ERP has a live Activity Timeline that surfaces notes, assignable tasks, and logged interactions in a single reverse-chronological feed. The timeline also pulls in sales orders, invoices, checkouts, and opportunity stage changes — so anyone opening a customer page immediately understands the full history without digging through separate modules.
The timeline is embedded on the customer's View page, below the detail infolist and above the relation manager tabs. You add notes, tasks, and activities directly from the timeline — no separate list pages.
Notes #
A note is a freeform piece of context tied to a customer, optionally linked to a specific contact. Notes are the right choice when you want to record something you already know — a conversation recap, a preference, a warning — without creating a follow-up action.
Creating a note — click + Note in the timeline toolbar to expand the inline form. Type the note body and submit. The note is attributed to the current user automatically.
- Body — the note text. Required. Supports
@mentionsyntax: type@and start typing a name to tag a team member (stored in the body as@[Name](user-id)). Mentions are parsed into structured records on every save — whether the note is written in the UI or created through the API — so each note response carries amentionsarray, and you can query them across notes via thecustomer-note-mentionsendpoint. - Contact (optional) — tie the note to a specific contact on the customer, useful when you need to distinguish "Anna said X" from a general observation.
Deleting a note — in the UI, only the author can delete their own notes. Soft-deleted notes disappear from the timeline immediately.
Tasks #
A task is an actionable to-do item assigned to a team member, with an optional due date and priority. Tasks are how you turn a conversation into a commitment: "follow up on quote by Friday."
Creating a task — click + Task in the timeline toolbar. Fill in the quick form and save. All fields except Title are optional.
- Title — a short description of the action needed. Required.
- Body — optional longer description or instructions.
- Priority — Low, Normal (default), or High. High-priority tasks display a warning color in the timeline.
- Assigned To — the team member responsible. If left blank the task is unassigned.
- Due At — an optional deadline. Tasks past their due date without a completion timestamp are flagged as overdue in the feed.
Completing and reopening — click the checkbox next to any task in the
timeline to toggle it complete. A completed task records a completed_at
timestamp. Clicking again reopens it (clears completed_at). You can also set
completed_at directly from the API.
Tasks are visible in the customer's timeline regardless of who they're assigned to, so the whole team can see what's in flight.
Activities #
An activity is a logged interaction — something that happened, rather than something that needs to happen. Where tasks look forward, activities look back.
Creating an activity — click + Activity in the timeline toolbar. Activities require a type; the Subject field is required in the UI form and the when field defaults to right now.
- Type — one of Call, Meeting, Demo, Email, or Other. Each type displays a distinct icon in the timeline.
- Subject — a brief headline for the interaction (e.g. "Introductory call"). Required.
- Body — optional notes or transcript from the interaction.
- Duration (minutes) — how long the interaction lasted. Optional, useful for reporting on time spent per customer.
- Occurred At — the actual date and time of the interaction. Defaults to now, but can be backdated when logging activities after the fact. The timeline sorts on this field, so a backdated activity slots into the correct position.
- Contact — optionally link the activity to a specific contact on the customer.
Unlike notes, activities do not support deletion from the API — they are
append-only from the POST endpoint. Records can be soft-deleted if needed via
direct model operations or future UI additions.
The Activity Timeline #
The timeline on a customer page aggregates all of the above alongside system-generated events:
| Entry | Source |
|---|---|
| Note | Manual — authored by a team member |
| Task | Manual — assigned follow-up |
| Activity | Manual — logged interaction |
| Inbound/Outbound Email | Email Sync |
| Sales Order created | Sales Orders |
| Invoice issued | Customer Invoices |
| Item checked out | Asset Checkout |
| Opportunity created / won / lost | Opportunities |
| Opportunity stage change | Opportunities |
The feed is sorted newest-first. Each entry shows its type icon, a human-readable label, the timestamp, and — where relevant — a link to the related record in its own module.
Doing it from the API #
# List all notes for a customer
curl "https://your-domain.com/api/v1/customer-notes?customer_id=<id>" \
-H "Authorization: Bearer $TOKEN"
# Create a note, @mentioning a teammate in the body
curl -X POST "https://your-domain.com/api/v1/customer-notes" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"customer_id": "<id>", "body": "Prefers email only — cc @[Jane Rep](<user-id>)"}'
# Find every note that @mentions a given user
curl "https://your-domain.com/api/v1/customer-note-mentions?user_id=<user-id>" \
-H "Authorization: Bearer $TOKEN"
# …or filter the notes list itself by mentioned user
curl "https://your-domain.com/api/v1/customer-notes?mentioned_user_id=<user-id>" \
-H "Authorization: Bearer $TOKEN"
# Create a task assigned to a user, due next week
curl -X POST "https://your-domain.com/api/v1/customer-tasks" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "<id>",
"assigned_to_id": "<user-id>",
"title": "Follow up on renewal quote",
"priority": "high",
"due_at": "2026-06-09"
}'
# Log a completed call
curl -X POST "https://your-domain.com/api/v1/customer-activities" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "<id>",
"type": "call",
"subject": "Pricing discussion",
"duration_minutes": 22,
"occurred_at": "2026-06-02T14:30:00"
}'
# List only open, high-priority tasks for a customer
curl "https://your-domain.com/api/v1/customer-tasks?customer_id=<id>&priority=high&completed=false" \
-H "Authorization: Bearer $TOKEN"
Task list results can be filtered by
customer_id,assigned_to_id,priority, andcompleted(true/false). Activity list results can be filtered bycustomer_idandtype. Each note response includes amentionsarray; the read-onlycustomer-note-mentionsendpoint lists those records on their own and acceptsuser_id,note_id, andcustomer_idfilters.