Important
Help figure out what's next! I'm deciding which features to build next and would love your input. VOTE in the feature priority poll!
An Obsidian plugin that renders visual contact cards from frontmatter in designated contact notes, with a searchable and filterable contact list view.
- Contact Card in Note: Renders a contact card in reading mode for any note identified as a contact.
- Contact List View: Creates a contact list view from the list of available contact notes with search, alphabet filter, and different viewing modes.
- Contact Note Template: Create new contacts from the list view with an auto-generated frontmatter template.
- Contact File Naming Enforcement: Enforces file naming in
First [Middle] Lastformat automatically. - Multiple Values for Certain Frontmatter Properties: Supports multiple emails, phone numbers, and social media profiles per contact.
- Default Filters: Create default list filters based on any frontmatter property!
- Contact Note Identification: Contacts identified by folder or tag.
- Light and Dark Mode Support: All plugin UI is styled for both Obsidian themes.
While Contact Note is awaiting inclusion in the Obsidian Community Plugins directory, BRAT is the recommended way to install and stay up to date. BRAT installs plugins directly from their GitHub repository and auto-updates them on each release.
- Install BRAT from Settings → Community plugins → Browse and enable it.
- Open the command palette (
Ctrl/Cmd+P) and run BRAT: Add a beta plugin for testing. - Enter the repository URL:
https://github.com/Jalad25/contact-note. - Choose whether to track the latest release or the latest commit, then click Add Plugin.
- Open Settings → Community plugins and enable Contact Note.
To get future updates, run BRAT: Check for updates to all beta plugins from the command palette, or enable auto-update in BRAT's settings.
- Download
main.js,manifest.json, andstyles.cssfrom the latest release. - In your vault, create the folder
.obsidian/plugins/contact-note/if it does not already exist. - Copy the downloaded files into that folder.
- Open Obsidian, go to Settings → Community plugins, and enable Contact Note.
Coming soon — pending listing in the directory.
- Open Obsidian and go to Settings → Community plugins.
- If restricted mode is on, click Turn on community plugins.
- Click Browse and search for Contact Note.
- Click Install, then Enable.
A note is treated as a contact note in one of two ways, configured in settings:
- By folder: any note inside a specified folder (e.g.
Contacts/) is a contact note. - By tag: any note tagged with a specified tag (e.g.
#contact) is a contact note.
To manually create a new contact, create a new note with at least the firstName and lastName frontmatter properties in either the path of contact notes or with the contact tag specified in the plugin settings. For a list of all frontmatter properties recognized by the plugin, see Frontmatter Reference below.
To create a new contact using the plugin's template, click the + button in the top-right corner of the contact list view to open the new contact dialog. Enter a first and last name and click Create.
A new note will be created with a pre-populated frontmatter template and opened automatically.
Important
The plugin automatically renames contact notes to match the format First [Middle] Last whenever the firstName, middleName, or lastName frontmatter values change. Manual renames are also corrected.
If a file with the target name already exists, the rename is skipped and a notice is shown. Add a middle name to disambiguate.
In reading mode, any contact note with a valid firstName and lastName frontmatter renders a contact card in place of the frontmatter block. The card displays the contact's photo, name, title, company, email addresses, phone numbers, and social media profiles.
The display name is resolved in the following order:
displayNameif setfirstName+middleName+lastName
All fields are optional except firstName and lastName.
| Field | Type | Description |
|---|---|---|
firstName |
string | Required. The contact's first name. |
lastName |
string | Required. The contact's last name. |
middleName |
string | Middle name or initial. Used in the display name and file name. |
displayName |
string | Overrides the resolved display name everywhere if set. |
title |
string | Job title or role. |
company |
string | Company or organization name. |
email |
string or list | One or more email addresses. |
phone |
string or list | One or more phone numbers. |
photo |
string | Vault path to a photo file (e.g. Attachments/jane.jpg). |
aliases |
list | Obsidian aliases for the note. Pre-populated with firstName on creation. Not used directly by plugin for contact list view. |
socials |
list | List of social media handles. See Socials below. |
Example:
---
firstName: Geordi
middleName: Terror
lastName: La Forge
displayName: Papa
company: Geordi Bytes LLC.
title: Professional Cutie
email:
- geordi@notarealemail.com
phone:
- 123-456-7890
photo: Attachments/Geordi.jpg
aliases:
- Geordi
socials:
- github: geordiBytes
- linkedin: geordi-bytes
---Social profiles are defined as a list of single-key objects under the socials frontmatter field. The key is the platform name and the value is the handle (the @ prefix is optional).
socials:
- twitter: geordibytes
- github: geordiBytes
- linkedin: geordi-bytesSupported platforms:
| Platform | Key |
|---|---|
| Bluesky | bluesky |
| Discord | discord |
facebook |
|
| GitHub | github |
instagram |
|
linkedin |
|
pinterest |
|
reddit |
|
| Snapchat | snapchat |
| Telegram | telegram |
| TikTok | tiktok |
| Twitch | twitch |
| Twitter / X | twitter |
| YouTube | youtube |
Platforms not in this list will still display the handle as plain text without a link.
Open the contact list view from the ribbon icon or the Open contact list command.
Click the search icon in the header to show the search bar. The search filters by first name, last name, middle name, and display name.
Click any letter in the alphabet bar to filter contacts whose last name starts with that letter. Click the same letter again to clear the filter.
| Setting | Description | Default |
|---|---|---|
| Identify contacts by folder | When enabled, notes inside the specified folder are treated as contacts. When disabled, notes with the specified tag are used instead. | Enabled |
| Contacts folder path | Path to the contacts folder, relative to the vault root. | Contacts |
| Contact tag | Tag used to identify contact notes (without the #). Only shown when folder mode is disabled. |
contact |
| Setting | Description | Default |
|---|---|---|
| Contact list title | Title shown at the top of the contact list view. | Contacts |
| Show last name first in list | When enabled, names in the list are shown as Last, First Middle. Does not affect the contact card. |
Enabled |
| Condensed list view | When enabled, each card in the list shows only the photo and name. | Enabled |
Add one or more filter conditions to limit which contacts appear in the list view. All conditions must match for a contact to be shown (AND logic).
Each condition targets a frontmatter property by key and supports the following operators:
| Operator | Value required | Description |
|---|---|---|
Contains |
Yes | Property value contains the given string, or array includes a matching item. |
Is |
Yes | Property value exactly equals the given string. |
Exists |
No | Property is present and has a non-empty value. |
Is true |
No | Property value is true (boolean or string). |
Is false |
No | Property value is false (boolean or string). |
Filters apply to any frontmatter property, including custom fields not used by the plugin.
Contributions of all kinds are welcome!
See CONTRIBUTING.md for full guidelines.
GNU Affero General Public License v3.0. See LICENSE for details.



