Skip to content

Activities

Notes at /notes, Calls at /calls, and CRM Emails at /crm-emails are one model with three lenses: the same activity list surface showing notes, logged calls, and tracked emails against the CRM records they concern. Pick the lens that matches what happened; the record underneath is shared.

Every activity is a timestamped note on a relationship: what was said, decided, or sent, attached to the contact, company, or deal it concerns. The three surfaces share list chrome — the type lens is the only thing that changes.

  • The All Notes tab sits above the table (note, status, body, owner, occurred, last modified); search, sort, columns, and filters narrow the rows, and New Note adds a row.
  • This tenant holds no notes yet, so the table reads No notes found — the empty state is the honest capture, not a missing surface.
Notes at /notes: All Notes tab above a table with note, status, body, owner, occurred, and last-modified columns reading No notes found
  • The All Calls tab sits above the table (call, status, direction, recipient, outcome, owner, queued, duration); search, sort, columns, and filters narrow the rows, and New Call adds a row.
  • This tenant holds no logged calls yet, so the table reads No calls found — the empty state is the honest capture.
Calls at /calls: All Calls tab above a table with call, status, direction, recipient, outcome, owner, queued, and duration columns reading No calls found
  • The All Emails tab sits above the table (subject, status, direction, from, to, owner, sent, last modified); search, sort, columns, and filters narrow the rows, and New Email adds a row.
  • This is the correspondence log at /crm-emails, not the template directory — outbound mail renders from templates at Email Templates (/emails). This tenant holds no tracked emails yet, so the table reads No CRM emails found.
CRM Emails at /crm-emails: All Emails tab above a table with subject, status, direction, from, to, owner, sent, and last-modified columns reading No CRM emails found
  • Notes: written observations pinned to the record — the lightest lens, for anything worth remembering.
  • Calls: logged phone contact — who was reached, what was covered, what follows.
  • CRM Emails: tracked email threads against the record — the correspondence half of the relationship.

Activities attach to CRM records through contact, company, and deal junctions — the activity names the relationship it belongs to. They do not attach to work items: project tracking lives on the Work items hub, and an activity pointing at a task is a record in the wrong system.

  • The detail names its relationship in the open: source (Manual Log), owner, and body beside a Relationships card carrying the ALYKAS TECH LLC company junction.
  • This is what an attached activity looks like from the record side — the same junction that puts the note on the company timeline.
Note detail at /notes: Wiki UAT note for ALYKAS with Manual Log source, owner, body, and a Relationships junction to ALYKAS TECH LLC
  • Creation names the relationship up front: title, occurred, owner, and body above Relationships pickers for contact, company, and deal; Create Note files the note onto each picked record’s timeline.
New Note at /notes: creation form with title, occurred, owner, and body fields above contact, company, and deal junction pickers
  • Log the activity where the relationship lives. A call about a deal belongs on the deal; a note about a person belongs on the contact.
  • A missing junction is a follow-up, not a filing choice. Unattached activity cannot surface on any timeline — attach before closing the tab.

Each CRM record carries its timeline: the activities attached to it in chronological order. Open the company or contact and the history reads itself — every note, call, and email in one place.

  • The company record reads its own history: lifecycle stage and engagement cards above the Activity feed, with contacts, deals, and projects riding the right rail.
  • The feed here holds two transcribed meetings (Discovery Call, Office Hours Promo Check In) with transcript links — meetings surface on the timeline; what was said lives at Meetings.
Company timeline for ALYKAS TECH LLC: lifecycle stage and engagement cards above an activity feed with two transcribed meetings, beside contacts, deals, and projects rails
  • The contact record filters its timeline by type: All, Calls, Notes, Emails, Record Updates. This contact has no attached activity yet, so the tab reads No activity yet — the empty state is the honest capture.
  • The right rail still names the relationship: company and open deal ride alongside even when the feed is empty.
Contact timeline for Faisal Bhutto: Activity tab with All, Calls, Notes, Emails, and Record Updates filters reading No activity yet
  • Companies: the organization timeline behind each client.
  • Contacts: the person timeline behind each relationship.
  • Sales deals: the deal timeline behind each pipeline row.

CRM history does not start the day the tenant does. Existing notes, calls, and emails arrive through the HubSpot import: the registered adapter, package, bindings, and authorized sync are worked end to end in the HubSpot e2e example, and the installs behind it live under Connectors.

  • Events: calendar-synced entries — scheduling data, not relationship history. Separate page, separate model.
  • Meetings: AI-transcribed meeting records — adjacent, but their own surface.
  • Email Templates: the template directory at /emails that outbound mail renders from — not the correspondence log. This hub’s email lens is CRM Emails at /crm-emails.
  • Notes: the written-observation lens at /notes.
  • Calls: the logged-call lens at /calls.
  • CRM Emails: the tracked-email lens at /crm-emails.
  • Events: calendar sync, kept separate from activities.
  • Companies: the organizations activities attach to.
  • Contacts: the people activities attach to.
  • Sales deals: the pipeline rows activities attach to.
  • Connectors: the installs behind CRM sync.