# Members

**Summary:** A member is a person or company record within one publisher account.

- Role: [Technical Support](https://www.subrite.no/technical-support)
- Source: https://www.subrite.no/technical-support/members
- Updated: 2026-09-28
- Markdown index: https://www.subrite.no/technical-support/llms.txt

A member can have a separate login user and be linked to subscriptions and consent records.

<a id="member-identity-and-connected-records"></a>
## Member identity and connected records

A tenant is one publisher account. Member numbers use a tenant-specific sequence; the underlying member ID is separate.

Identify a record by tenant and member ID.

| Record | Values to inspect |
| --- | --- |
| Member | Contact details, individual/company fields and custom properties |
| User | Login email, phone and verification state; a member can lack this record |
| Member package | Subscription owned by the payer |
| Product seat | Another member's accepted place on that subscription |
| Addresses | Primary contact, subscription billing and product delivery addresses |
| Consent and history | Recorded choices and changes |

For example, Kari pays for a group subscription while Ola accepts a seat. Both have member records; Ola can show **Active Subscription** without being the payer.

The badge includes direct active subscriptions and accepted, undeleted seats on active subscriptions. An unaccepted invitation does not qualify. [Sources: member model](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/entities/member.entity.ts#L39-L150), [active classification](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/sql/active-subscription-sql.ts#L47-L106), [member numbers](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/subscribers/member.subscriber.ts#L10-L18).

<a id="an-expected-member-does-not-appear"></a>
## An expected member does not appear

| Control | Search behavior |
| --- | --- |
| Members list search | Partial name, company-name or email match |
| **Phone** filter | Partial phone match; other filters also restrict results |
| Top-bar **Search** | Exact identifiers and configured custom values, then broader contact matching if no exact result exists |

Different list filters combine with AND. Clear unrelated filters when the expected member is missing.

Global search tries member ID, then numeric member/order/invoice/subscription identifiers and searchable custom values. The numeric identifier checks require fewer than 10 digits.

Any exact result stops the broader search; broader matching requires at least 3 characters.

An invoice-number result opens the linked member's **Activity**. Select **Invoices** on that member to inspect the invoice. [Sources: list search](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/services/member-filter.service.ts#L554-L592), [filter combination](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/services/member-filter.service.ts#L75-L102), [global search](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/services/member.service.ts#L1710-L1960).

<a id="a-contact-record-exists-but-login-differs"></a>
## A contact record exists, but login differs

Basic admin creation saves a member and primary address. It creates a login user only when an email is supplied.

Adding an email later can create a missing login user.

Creation does not buy a subscription, grant access, accept consent or send a welcome message. [Source: basic creation](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/services/member.service.ts#L213-L300).

For members with a login user, contact edits update both records. Email changes clear email verification; phone changes clear phone verification.

The edit sends no verification code and does not transfer subscriptions.

Live user emails are unique within a tenant. Verified phones are also unique within a tenant; unverified, empty and soft-deleted phone records are excluded from that constraint.

`phoneAlreadyVerified` is a field error against `phone`. Check the other verified user in the same tenant. [Sources: contact update](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/services/member.service.ts#L747-L812), [user uniqueness](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/user/entities/user.entity.ts#L25-L40), [phone check](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/services/member.service.ts#L2495-L2513).

<a id="a-contact-edit-did-not-change-another-address"></a>
## A contact edit did not change another address

Member email changes update the existing primary address email. Related billing and delivery addresses only receive missing email, name, company-name and organization-number values.

Populated values and postal fields remain unchanged. Compare the member contact, login user, subscription billing address and product delivery address separately. [Source: related-address update](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/services/member.service.ts#L2550-L2620).

If an old email-status record exists, changing email removes it and calls provider hard-bounce removal. Check external newsletter or shop contacts separately; those are not migrated by this cleanup.

Profile updates can record activity and emit configured `member.updated` webhooks. Activity capture errors are caught, so a missing activity entry alone does not prove the edit failed. [Sources: profile update](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/services/member.service.ts#L1637-L1707), [warning removal](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/services/member-email-status.service.ts#L35-L49), [activity capture](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/services/member.service.ts#L2045-L2071), [webhook event](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/activity-log/services/activity-log.service.ts#L192-L198).

<a id="consent-or-its-history-is-missing"></a>
## Consent or its history is missing

The admin **Consent** tab includes only active consents with `showOnMyPage=true`. Subscriber/non-subscriber visibility then filters choices that are not accepted. Accepted choices bypass the second filter only.

Check the consent's configuration and stored status when a row is missing. Ordinary **Activity** excludes consent changes by default; use **Consent** \> **View History** for the relevant choice.

**Accept** and **Withdraw** write immediately. If a newsletter provider is linked, its call runs before the local save.

`newsletterProviderError` prevents that save.

The provider can succeed before a later local save fails. Compare provider membership with local consent and history when a request fails.

Consent changes can trigger configured newsletter automation. Reversing a choice adds history; it cannot retract messages already sent. [Sources: consent update and visibility](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/services/member-consent.service.ts#L89-L334), [automation events](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/activity-log/services/activity-log.service.ts#L141-L164).

<a id="a-member-tab-or-history-is-unavailable"></a>
## A member tab or history is unavailable

The Members section requires the `subscription` feature and Members access.

| Area | Additional requirement |
| --- | --- |
| Member lookup | Members read permission |
| **Internal notes**, including reads | Members update permission |
| **Activity** | Analytics read permission |
| **Consent**, **Communication** | Email feature |
| **Invoices** | Invoices feature |
| **Ledger** | Accounting feature |

Check the affected role's permissions and tenant features. [Sources: section gate](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/frontend/src/app/%28admin%29/admin/%28panel%29/members-and-subscriptions/layout.tsx#L24-L49), [note permission](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/member/controllers/member.controller.ts#L304-L315), [activity permission](https://github.com/subrite/subrite-crm/blob/6cd1850569be3b1702ca736a19320c7626efb7bc/api-server/src/modules/activity-log/controllers/activity-log.controller.ts#L34-L46).

<a id="sources-and-verification"></a>
## Sources and verification

Source checked 28 September 2026 at `6cd1850569be3b1702ca736a19320c7626efb7bc`. UI evidence from 27 September covers navigation and blank forms.

Member-detail changes, ordinary-role visibility and provider outcomes have not been replayed. Partial-failure recovery remains unverified.

For routine procedures, see the [Administrators Members guide](https://www.subrite.no/administrators/members?md=true).

## Related pages

- [Members](https://www.subrite.no/administrators/members?md=true): A member is a person or company recorded in Subrite. The record holds contact details, consent and internal notes.
