---
title: Self-Service Contact Profile
description: Token-based CRM contact profiles where supporters can view their engagement history, edit their details, manage communication preferences, and opt out.
icon: material/card-account-details
status: new
tags:
  - guide
  - user
  - CRM
---

# Self-Service Contact Profile

Give supporters a private, token-based link to view and manage their own contact profile -- no login required.

---

## How It Works

1. **An admin generates a profile link** from the People CRM -- each link contains a unique 64-character hex token with a configurable expiration (24 hours to 1 year).
2. **The supporter opens the link** -- if the link is password-protected, they enter the password first. If expired, they see a branded expiration notice.
3. **The supporter views and edits their profile** -- they can update their name, email, phone, address, and cover photo.
4. **Communication preferences** -- supporters can opt out of email and/or SMS communications with simple toggle switches.

---

## Profile Tabs

- **Profile** -- edit display name, first/last name, email, phone, and address
- **Preferences** -- toggle email and SMS opt-out switches
- **Activity** -- paginated timeline of all engagement: emails sent, responses submitted, shift signups, canvass visits, donations, video views, and profile edits
- **Social tabs** -- if the viewer is a logged-in user viewing their own profile and the social feature is enabled, additional tabs appear: Friends, Feed, Achievements, Notifications, and Discover

---

## Security

- **Token-based access** -- no account or login needed; the URL token grants access
- **Password protection** -- admins can optionally set a password on the profile link
- **Expiration** -- links expire after a configurable duration, showing a branded message with the expiration date
- **Rate limiting** -- separate rate limits on profile views, edits, photo uploads, and password attempts
- **Cover photo** -- supporters can upload a JPEG, PNG, or WebP cover photo (max 5 MB), automatically resized to 800x400

---

## Engagement Score

Each profile shows a circular engagement score (0-100) calculated from the contact's activity across the platform -- emails, shifts, canvass visits, donations, and video views.

---

## Public Routes

- `/profile/:token` -- self-service contact profile page
