---
id: SCR-CRM-ACT-002
title: Activity link landing
route: '/console/{tenantId}/crm/activities/{id}'
surface: console
product_area: crm
module: activities-tasks
revision: 1
status: draft
design_intent: proposed
implementation_evidence: observed
inference: []
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
purpose: >-
  Resolve an interaction link to a related contact or organization timeline and open its
  entry.
supports:
  - CAP-CRM-ACT-007
  - CAP-CRM-ACT-018
permission: crm.activities.read
entry_from:
  - A selection from the workspace Activities explorer.
  - An interaction reference elsewhere in the console.
exits_to:
  - The selected contact’s Activity tab.
  - The selected organization’s Activity tab.
displays:
  - field: A waiting indicator during interaction retrieval.
    source: getActivity
  - field: 'Absence, access-denied or failed-retrieval feedback.'
    source: getActivity refusals and the console's permission check
actions:
  - label: Redirect to the record timeline
    operation_id: getActivity
    permission: crm.activities.read
    confirm: false
states:
  - loading
  - error
  - read-only
validation:
  - BR-CAP-CRM-ACT-007-05
patterns:
  - Redirect page with loading and message states
  - Primary-contact-first landing rule
component: components/activities/activity-link-redirect.tsx
evidence:
  - >-
    react-console at baf6dae3:
    app/(console)/console/[tenantId]/crm/activities/[id]/page.tsx;
    components/activities/activity-link-redirect.tsx (activityLandingPath,
    ActivityLinkRedirect).
controls: [TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-006, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PRV-001, TC-PRV-002, TC-TEN-001, TC-TEN-002, TC-TEN-003]
---

# Activity link landing

## What the Screen Is For

This address provides navigation to an interaction’s record context. It does not render an independent interaction detail page.

## What It Shows and Lets People Do

After reading the interaction, the component selects the primary contact when present, otherwise the first contact, otherwise the primary-or-first organization. It replaces the current address with the chosen record’s Activity tab and interaction selection.

## States and Errors

Unauthorized readers receive an access message. A missing interaction or an interaction with no surviving links receives the not-found state. Other retrieval failures display their described error. Retained unlinked interactions therefore still lack a usable landing.

## Patterns It Must Respect

The redirect uses the existing loading and record-problem components. Its contact-first selection follows the planning rule; the examination adds no alternative landing policy.
