ReferenceConversations

Conversations permissions and states

Understand workspace and meeting access, visibility, sharing, request, connection, ingestion, notification, and deletion boundaries.

Conversations uses two authorization layers. The workspace gate requires a current non-guest organization membership. The meeting policy then decides which records that member can read and which meeting-level actions they can perform. An organization-admin role does not bypass the second layer.

Workspace access

Organization relationshipConversations workspace
Current memberAvailable.
Current administratorAvailable. Administrator standing does not grant general private-meeting access, except for the strict orphan recovery below.
GuestNot available for that organization.
Former member or no membershipNot available for that organization.

With one available workspace, Conversations selects it automatically. With more than one, the root route requires Select an organization. An explicit organization slug is accepted only when it matches an available workspace.

Meeting read access

Every row starts with current workspace access. Conversations then permits the meeting when at least one condition is true:

Read access can come from Org-visible state, a current owner, a current member attendee, or an explicit share. An administrator does not receive every private meeting.

Access basisResult
Org-visible meetingEvery current non-guest member can open it.
Current ownerThe owner can open it while they remain a current non-guest member.
Organization-member attendanceA participant row records that the person attended as a member. They can open it while currently in the organization.
Explicit shareThe current non-guest recipient can open the whole meeting.
Strict administrator orphan recoveryAn administrator can open it only when it has no owner and no attendee was ever an organization member. The access filter classifies this as Unassigned.
Administrator standing aloneNo access to somebody else’s private meeting.
External attendance aloneNo Conversations workspace or meeting access.

Attendance history is sticky, but workspace membership is live. Former attendance does not preserve meeting access without current membership. Someone who leaves the organization loses access; if they later rejoin, their recorded member attendance can grant access again. A departed attendee still prevents that meeting from being classified as a strict orphan, so another administrator does not inherit it merely because the attendee left.

Content and management authority

Viewer relationshipMeeting content actionsVisibility, shares, and deletionResolve access requests
Current ownerYesYesYes
Current organization-member attendeeYesYesYes
Explicit-share recipient onlyYesNoNo
Organization-visibility viewer onlyYesNoNo
Administrator with no other relationshipOnly when the strict read-orphan rule appliesNoOnly under the stranded-request fallback

Meeting content actions include star, tags, notes, Summarize, and add, extract, toggle, or delete action items. These values are shared meeting state. The explicit share grants the meeting, not a management role; the current interface does not apply its stored share level as a separate content-editor restriction.

Access-request resolution has a deliberately separate fallback when no current owner remains and no current member attendee remains. An administrator can then approve or reject without gaining transcript or summary access. This administrator fallback does not grant share, visibility, deletion, or other meeting-management authority. Nobody can resolve their own request.

Access and visibility states

Access filter classifications use first-match precedence:

Access classificationDerived condition
YoursViewer is the owner or recorded organization-member attendee.
OrgMeeting is Org-visible, unless Yours matched first.
SharedAn explicit share exists, unless Yours or Org matched first.
UnassignedThe strict administrator orphan-recovery condition matched.

At the reviewed revision, the meetings table prints Yours in the Access cell when it applies. Cells for Org, Shared, and Unassigned remain blank; those values are available as filters rather than visible row labels.

Visibility is independent:

VisibilityWho can open it
PrivateCurrent owner, current member attendees, explicit-share recipients, and any strict orphan-recovery administrator.
Org-visibleEvery current non-guest organization member, in addition to the more specific paths above.

Meetings begin Private. Automatic publication occurs only when at least one genuine outside attendee matches a current, non-archived CRM Entity for the organization. An attendee who has ever held any membership in that organization, including guest membership, does not qualify as that outsider. Automation can publish a private, unpinned meeting; it never automatically makes an organization-visible meeting private.

A current owner or current member attendee can select Share with org or Make private. A human Make private choice creates a manual pin, so automation cannot republish the pinned meeting. Automatic visibility can promote other eligible meetings but does not demote them. A real manual visibility change schedules one eventual email and in-app notification describing the final state for current internal recipients; backfill operations suppress those notifications.

Explicit shares and access requests

An explicit share can target only a current non-guest member of the same organization. It grants access to the whole meeting but does not transfer ownership or management authority over shares, visibility, or deletion. A genuinely new share creates an in-app notification for the recipient; updating an existing share does not create another one. Revocation removes only the share basis.

A member without meeting access receives a separate masked page. It renders the title, date, duration, participant labels, and the viewer’s request state without rendering the transcript, utterances, summary, notes, or action items. Under the narrow administrator resolution fallback, it can also render access-request management without revealing that meeting content.

Request stateBehavior
No requestMessage accepts an optional message of at most 2,000 characters; Request access creates a pending request.
PendingAccess requested replaces the form. A second pending request for the same requester and meeting is refused.
ApprovedApproval atomically creates an explicit share and resolves the request. Both writes succeed or neither does.
RejectedNo share is created. Your last request was declined. You can ask again. appears, and another request is permitted.

Requests do not expire and have no cooldown. Creating one sends email and an in-app notification to current member attendees and the current owner, excluding the requester. When that set is empty, current administrators receive it. Approval or rejection sends email and an in-app notification to the requester if they remain a current member.

Summary and action-item states

SurfaceState and boundary
Provider summaryKrisp note_generated or a completed Granola note can supply a summary during ingestion.
No summary yet.No current summary is stored.
SummarizeEnqueues AI work only when AI features are enabled and transcript text exists. It does not complete inline.
Generating…The summary job is in progress.
Updated the summaryThe job completed and the page reloaded the stored summary. Regeneration replaces the prior summary.
Summary failureCould not generate a summary right now leaves the page out of the generating state.

Action-item extraction is parse-first: structured provider data, then the outline, then action-item lines in the summary. If those sources yield nothing, current production extraction adds no item; its external AI fallback is disabled. It inserts only missing items, deduplicates by provider identity or normalized text, preserves manual items, and does not reset existing Open or Done statuses.

Krisp note_generated ingestion attempts action-item extraction without making the whole meeting ingest depend on extraction success. Users can also select Extract from meeting or add a manual item. The cross-meeting Action items browser lists and permits status changes only for items whose meetings the current viewer can open.

Connection authority

ScopeAttributionWho can create and manage it
Team-wideProvider meetings are attributed by matched participant.Current organization administrators.
PersonalProvider meetings are attributed to the connection owner.The current owner of that connection.

Connection scope controls attribution only. A team-wide connection does not make its meetings Org-visible; every new meeting still begins Private and follows the meeting visibility policy.

Other organization members can see the team-wide connection’s ordinary status, but they cannot rotate its secret, reveal its secret value, disable, enable, sync, or delete it. The current team card also renders the Krisp webhook URL to ordinary workspace members. That URL remains a capability credential and must never enter documentation, captures, or support evidence. Administrator standing does not grant management of another member’s personal connection.

Provider lifecycle

ProviderSetup and ingestionRecovery boundary
KrispAdd team connection or Add personal connection creates a webhook endpoint and secret. Krisp must send transcript_created and note_generated with the configured secret header.Krisp does not retry. Rotation invalidates the old secret immediately and requires re-entering both provider fields. Disable rejects deliveries. Missed meetings must be resent from Krisp History. Delete destroys the endpoint and secret.
GranolaConnect Granola verifies a Business or Enterprise API key before saving it. The first poll covers the preceding 30 days; scheduled polls then use an overlapping incremental cursor.Sync now attempts to enqueue a poll rather than completing it. The page can show success even if job insertion failed, and an inserted poll is ignored while disabled, so enable the connection first. Delete is irreversible; reconnecting with another verified key starts a new 30-day initial window.

When a team needs both Krisp and Granola, team Krisp must be added first. The current Add team connection control disappears after any team connection exists; the team Granola form remains available after Krisp is present.

Granola polls completed notes and can process up to 20 pages of 50 notes in one run before resuming later. A transient per-note failure is retried across polls up to its internal limit. Repeated observations are idempotent. Granola does not supply speaker diarization, so no speaker utterance rows are expected from that provider.

Connection health states

StateMeaning
ActiveNo current health error is recorded. A successful delivery or poll returns an unhealthy connection to this state. This is not the enabled/disabled switch.
DegradedOne or two consecutive recorded health failures occurred.
ErrorAt least three consecutive recorded health failures occurred.

Disabling a connection does not change its health label, so a disabled connection can still display Active; the Enable or Disable lifecycle control is the enabled-state indicator. Not every failed request changes health: unauthenticated, invalid-token, oversized, rate-limited, and Granola backpressure paths can retain the prior tag, and isolated Granola note failures can coexist with an overall Active poll. A later successful recorded delivery or poll returns either unhealthy health state to Active and clears the displayed last error. A personal connection owner receives one in-app notification for each recorded transition from Active to an unhealthy state. Worsening from Degraded to Error does not create another notification, but recovery to Active resets eligibility, so a later unhealthy episode notifies again. A team-wide connection has no owner notification.

Krisp shows Last received and Granola shows Last synced, but both timestamps also advance when an attempt records a health failure. Read the health tag, enabled-state control, and expected meeting together. Treat Last error as potentially sensitive and do not copy it before review and redaction; neither timestamp is independent success proof.

Mutation and side-effect boundaries

TriggerDurable stateNotification or asynchronous effect
Star, tags, notes, or action-item changeShared meeting record or dependent action-item rowsNo personal copy is created.
SummarizeQueued summary job; stored summary changes only on successLive status becomes generating, completed, or failed.
New attributed meetingNew meeting and owner attributionA genuinely new insert attempts one in-app notification to its attributed owner. Unowned or unmatched team inserts do not send it.
ShareExplicit share rowA new share creates one in-app notification.
Request accessPending request rowEmail and in-app notifications go to eligible current approvers.
ApproveExplicit share and approved request in one transactionEmail and in-app notifications go to the current requester.
RejectRejected request, no shareEmail and in-app notifications go to the current requester.
Manual visibility changeVisibility, manual source, actor, and timeDebounced email and in-app notifications go to current internal meeting people except the actor.
Delete meetingInfra One meeting and dependent records removed; Contacts cleanup is attempted asynchronously. The provider source remains.Best-effort email is attempted only for other current member attendees and the current owner, excluding external, former, and share-only viewers. The action is irreversible even if cleanup or email fails.
Sync nowGranola poll enqueue attemptedThe success flash proves neither job insertion nor meeting ingestion.
Rotate, disable, or delete connectionCredential or connection state changes immediatelyProvider recovery remains external; no automatic Krisp retry occurs.

Meeting deletion attempts email to the current owner and active current member attendees. External attendees, departed members, and share-only viewers are excluded and are not notified.