Ability to define Tags and tag Contacts

Created on 21 May 2025, 17 days ago

Problem/Motivation

Many CRMs, including CiviCRM, offer the ability to define arbitrary "tags" such that contacts can be tagged to meet the needs of organizations with diverse requirements.

Proposed resolution

Provide tagging capability

Remaining tasks

  1. Define requirements
  2. Propose information architecture
  3. Review proposal
  4. Update IS to implement

User interface changes

API changes

Data model changes

✨ Feature request
Status

Active

Version

1.0

Component

Code

Created by

πŸ‡ΊπŸ‡ΈUnited States jdleonard Austin, TX, USA

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

  • Issue created by @jdleonard
  • πŸ‡ΊπŸ‡ΈUnited States jdleonard Austin, TX, USA

    Just a quick note that I'd advocate for the use of Tagify β†’ as a modern accessible solution (adopted by Drupal CMS) for handling tagging UX.

    Aside: this could also be used for entity reference fields targeting Contacts and we could implement a Tagify CRM Contact List module in the same vein as Tagify User List β†’ to provide a rich experience:

  • πŸ‡ΊπŸ‡ΈUnited States bluegeek9

    Which vocab(s) do we use?

    Would Tagify be a dependency or a dev dependency?

  • πŸ‡ΊπŸ‡ΈUnited States jdleonard Austin, TX, USA

    IMO the most flexible and powerful tagging system would allow a site builder to manage multiple vocabularies for tagging, including to which entity types and bundles each can apply. This idea is only half-baked...

    There could also be one default vocabulary (for each entity type?) for tags that don't require additional context/grouping that could support free-tagging. I'm not convinced it would be best to use Drupal's built-in concept of vocabulary (probably doesn't need to be fieldable, revisionable, or mixed in with the various non-CRM tag vocabs).

    I'm also thinking of mutually exclusive labels e.g. GitLab's Scoped Labels.

    Examples that a site builder might create:
    "Lead source" vocab that applies to Contacts of type Organization
    "VIP" term in the default vocab that applies to Contacts of type Person (note that this introduces the concept of specific terms applying to only certain entities/bundles
    "Industry" vocab that applies to Contacts of type Organization or Person
    "Eldest" term in the default vocab that applies to Relationships of type Household Member
    "Past" term in the default vocab that applies to Relationships (assuming CRM doesn't provide an OOTB way to track this)
    "No longer valid" term in the default vocab that applies to Contact Details (though I think CRM should provide a semantic field for this)
    "Type" vocab that applies to Contacts of type Organization (e.g. "non-profit")

    Probably worth some discussion whether a (non-dev) dependency like Tagify be adopted by CRM. Alternatively there could be a more opinionated, dependency-heavy "CRM Starter" kit that adds these sorts of things, leaving CRM itself very low dependency. Feels like an overall policy would be helpful so that each such thing doesn't require a bespoke debate.

  • πŸ‡ΊπŸ‡ΈUnited States bluegeek9

    "Type" vocab that applies to Contacts of type Organization (e.g. "non-profit")

    I think we should talk about sub-bundles/sub-types, and how they can fill the same role, and better than taxonomy terms.

    "Industry" vocab that applies to Contacts of type Organization or Person

    This makes sense.

    "Eldest" term in the default vocab that applies to Relationships of type Household Member

    I am unsure I understand this one. If it is the Eldest child in a household, should this be computed instead of a static tag?

Production build 0.71.5 2024