@capgo/capacitor-contacts

May 11, 2026 · View on GitHub

Capgo - Instant updates for Capacitor

➡️ Get Instant updates for your App with Capgo

Missing a feature? We’ll build the plugin for you 💪

Manage device contacts across iOS, Android, and the Web with a unified Capacitor API.

Documentation

The most complete doc is available here: https://capgo.app/docs/plugins/contacts/

Compatibility

Plugin versionCapacitor compatibilityMaintained
v8.*.*v8.*.*
v7.*.*v7.*.*On demand
v6.*.*v6.*.*
v5.*.*v5.*.*

Note: The major version of this plugin follows the major version of Capacitor. Use the version that matches your Capacitor installation (e.g., plugin v8 for Capacitor 8). Only the latest major version is actively maintained.

Install

npm install @capgo/capacitor-contacts
npx cap sync

API

Capacitor Contacts Plugin interface for managing device contacts.

countContacts()

countContacts() => Promise<CountContactsResult>

Count the total number of contacts on the device.

Returns: Promise<CountContactsResult>

Since: 1.0.0


createContact(...)

createContact(options: CreateContactOptions) => Promise<CreateContactResult>

Create a new contact programmatically.

ParamTypeDescription
optionsCreateContactOptions- The contact information to create

Returns: Promise<CreateContactResult>

Since: 1.0.0


createGroup(...)

createGroup(options: CreateGroupOptions) => Promise<CreateGroupResult>

Create a new contact group.

ParamTypeDescription
optionsCreateGroupOptions- The group information to create

Returns: Promise<CreateGroupResult>

Since: 1.0.0


deleteContactById(...)

deleteContactById(options: DeleteContactByIdOptions) => Promise<void>

Delete a contact by ID.

ParamTypeDescription
optionsDeleteContactByIdOptions- The ID of the contact to delete

Since: 1.0.0


deleteGroupById(...)

deleteGroupById(options: DeleteGroupByIdOptions) => Promise<void>

Delete a group by ID.

ParamTypeDescription
optionsDeleteGroupByIdOptions- The ID of the group to delete

Since: 1.0.0


displayContactById(...)

displayContactById(options: DisplayContactByIdOptions) => Promise<void>

Display a contact using the native contact viewer.

ParamTypeDescription
optionsDisplayContactByIdOptions- The ID of the contact to display

Since: 1.0.0


displayCreateContact(...)

displayCreateContact(options?: DisplayCreateContactOptions | undefined) => Promise<DisplayCreateContactResult>

Display the native create contact UI.

ParamTypeDescription
optionsDisplayCreateContactOptions- Optional pre-filled contact information

Returns: Promise<DisplayCreateContactResult>

Since: 1.0.0


displayUpdateContactById(...)

displayUpdateContactById(options: DisplayUpdateContactByIdOptions) => Promise<void>

Display the native update contact UI for a specific contact.

ParamTypeDescription
optionsDisplayUpdateContactByIdOptions- The ID of the contact to update

Since: 1.0.0


getAccounts()

getAccounts() => Promise<GetAccountsResult>

Get all accounts available on the device.

Returns: Promise<GetAccountsResult>

Since: 1.0.0


getContactById(...)

getContactById(options: GetContactByIdOptions) => Promise<GetContactByIdResult>

Get a specific contact by ID.

ParamTypeDescription
optionsGetContactByIdOptions- The ID and optional fields to retrieve

Returns: Promise<GetContactByIdResult>

Since: 1.0.0


getContacts(...)

getContacts(options?: GetContactsOptions | undefined) => Promise<GetContactsResult>

Get all contacts from the device.

ParamTypeDescription
optionsGetContactsOptions- Optional filters and pagination options

Returns: Promise<GetContactsResult>

Since: 1.0.0


getGroupById(...)

getGroupById(options: GetGroupByIdOptions) => Promise<GetGroupByIdResult>

Get a specific group by ID.

ParamTypeDescription
optionsGetGroupByIdOptions- The ID of the group to retrieve

Returns: Promise<GetGroupByIdResult>

Since: 1.0.0


getGroups()

getGroups() => Promise<GetGroupsResult>

Get all contact groups.

Returns: Promise<GetGroupsResult>

Since: 1.0.0


isAvailable()

isAvailable() => Promise<IsAvailableResult>

Check if contacts are available on the device.

Returns: Promise<IsAvailableResult>

Since: 1.0.0


isSupported()

isSupported() => Promise<IsSupportedResult>

Check if the plugin is supported on the current platform.

Returns: Promise<IsSupportedResult>

Since: 1.0.0


openSettings()

openSettings() => Promise<void>

Open the device's contacts settings.

Since: 1.0.0


pickContact(...)

pickContact(options?: PickContactsOptions | undefined) => Promise<PickContactResult>

Pick a single contact using the native contact picker.

ParamTypeDescription
optionsPickContactsOptions- Optional fields to retrieve and picker configuration

Returns: Promise<PickContactsResult>

Since: 1.0.0


pickContacts(...)

pickContacts(options?: PickContactsOptions | undefined) => Promise<PickContactsResult>

Pick one or more contacts using the native contact picker.

ParamTypeDescription
optionsPickContactsOptions- Optional fields to retrieve and picker configuration

Returns: Promise<PickContactsResult>

Since: 1.0.0


updateContactById(...)

updateContactById(options: UpdateContactByIdOptions) => Promise<void>

Update an existing contact by ID.

ParamTypeDescription
optionsUpdateContactByIdOptions- The ID and updated contact information

Since: 1.0.0


checkPermissions()

checkPermissions() => Promise<PermissionStatus>

Check the current permission status for contacts.

Returns: Promise<PermissionStatus>

Since: 1.0.0


requestPermissions(...)

requestPermissions(options?: RequestPermissionsOptions | undefined) => Promise<PermissionStatus>

Request permissions to access contacts.

ParamTypeDescription
optionsRequestPermissionsOptions- Optional specific permissions to request

Returns: Promise<PermissionStatus>

Since: 1.0.0


getPluginVersion()

getPluginVersion() => Promise<{ version: string; }>

Get the native Capacitor plugin version.

Returns: Promise<{ version: string; }>

Since: 1.0.0


Interfaces

CountContactsResult

Result from counting contacts.

PropTypeDescriptionSince
countnumberTotal number of contacts.1.0.0

CreateContactResult

Result from creating a contact.

PropTypeDescriptionSince
idstringThe ID of the newly created contact.1.0.0

CreateContactOptions

Options for creating a contact.

PropTypeDescriptionSince
contactOmit<Contact, 'id'>Contact information to create. The 'id' field will be generated automatically.1.0.0

Contact

Contact information.

PropTypeDescriptionSince
idstringUnique identifier for the contact.1.0.0
accountAccountAccount information for the contact.1.0.0
birthdayBirthdayBirthday information for the contact.1.0.0
emailAddressesEmailAddress[]Email addresses for the contact.1.0.0
familyNamestringFamily name (last name) of the contact.1.0.0
fullNamestringFull name of the contact.1.0.0
givenNamestringGiven name (first name) of the contact.1.0.0
groupIdsstring[]Group IDs the contact belongs to.1.0.0
jobTitlestringJob title of the contact.1.0.0
middleNamestringMiddle name of the contact.1.0.0
namePrefixstringName prefix (e.g., "Dr.", "Mr.", "Ms.") of the contact.1.0.0
nameSuffixstringName suffix (e.g., "Jr.", "Sr.", "III") of the contact.1.0.0
notestringNotes about the contact.1.0.0
organizationNamestringOrganization name of the contact.1.0.0
phoneNumbersPhoneNumber[]Phone numbers for the contact.1.0.0
photostringBase64-encoded photo of the contact.1.0.0
postalAddressesPostalAddress[]Postal addresses for the contact.1.0.0
urlAddressesUrlAddress[]URL addresses for the contact.1.0.0

Account

Account information for a contact.

PropTypeDescriptionSince
namestringThe name of the account.1.0.0
typestringThe type of the account.1.0.0

Birthday

Birthday information for a contact.

PropTypeDescriptionSince
daynumberThe day of the month (1-31).1.0.0
monthnumberThe month (1-12).1.0.0
yearnumberThe year.1.0.0

EmailAddress

Email address information for a contact.

PropTypeDescriptionSince
valuestringThe email address value.1.0.0
typeEmailAddressTypeThe type of email address.1.0.0
labelstringCustom label for the email address.1.0.0
isPrimarybooleanWhether this is the primary email address.1.0.0

PhoneNumber

Phone number information for a contact.

PropTypeDescriptionSince
valuestringThe phone number value.1.0.0
typePhoneNumberTypeThe type of phone number.1.0.0
labelstringCustom label for the phone number.1.0.0
isPrimarybooleanWhether this is the primary phone number.1.0.0

PostalAddress

Postal address information for a contact.

PropTypeDescriptionSince
citystringThe city name.1.0.0
countrystringThe country name.1.0.0
formattedstringThe formatted address string.1.0.0
isoCountryCodestringThe ISO country code.1.0.0
isPrimarybooleanWhether this is the primary postal address.1.0.0
labelstringCustom label for the postal address.1.0.0
neighborhoodstringThe neighborhood name.1.0.0
postalCodestringThe postal code.1.0.0
statestringThe state or province name.1.0.0
streetstringThe street address.1.0.0
typePostalAddressTypeThe type of postal address.1.0.0

UrlAddress

URL address information for a contact.

PropTypeDescriptionSince
valuestringThe URL value.1.0.0
typeUrlAddressTypeThe type of URL.1.0.0
labelstringCustom label for the URL.1.0.0

CreateGroupResult

Result from creating a group.

PropTypeDescriptionSince
idstringThe ID of the newly created group.1.0.0

CreateGroupOptions

Options for creating a group.

PropTypeDescriptionSince
groupOmit<Group, 'id'>Group information to create. The 'id' field will be generated automatically.1.0.0

Group

Contact group information.

PropTypeDescriptionSince
idstringUnique identifier for the group.1.0.0
namestringName of the group.1.0.0

DeleteContactByIdOptions

Options for deleting a contact by ID.

PropTypeDescriptionSince
idstringThe ID of the contact to delete.1.0.0

DeleteGroupByIdOptions

Options for deleting a group by ID.

PropTypeDescriptionSince
idstringThe ID of the group to delete.1.0.0

DisplayContactByIdOptions

Options for displaying a contact by ID.

PropTypeDescriptionSince
idstringThe ID of the contact to display.1.0.0

DisplayCreateContactResult

Result from displaying the native create contact UI.

PropTypeDescriptionSince
idstringThe ID of the created contact, if one was created. Undefined if the user cancelled.1.0.0

DisplayCreateContactOptions

Options for displaying the native create contact UI.

PropTypeDescriptionSince
contactOmit<Contact, 'id'>Optional pre-filled contact information for the create UI.1.0.0

DisplayUpdateContactByIdOptions

Options for displaying the native update contact UI.

PropTypeDescriptionSince
idstringThe ID of the contact to update.1.0.0

GetAccountsResult

Result from getting accounts.

PropTypeDescriptionSince
accountsAccount[]List of accounts available on the device.1.0.0

GetContactByIdResult

Result from getting a contact by ID.

PropTypeDescriptionSince
contactContact | nullThe contact, or null if not found.1.0.0

GetContactByIdOptions

Options for getting a contact by ID.

PropTypeDescriptionSince
idstringThe ID of the contact to retrieve.1.0.0
fields(keyof Contact)[]Optional list of specific fields to retrieve. If not specified, all fields are returned.1.0.0

GetContactsResult

Result from getting contacts.

PropTypeDescriptionSince
contactsContact[]List of contacts.1.0.0

GetContactsOptions

Options for getting contacts.

PropTypeDescriptionSince
fields(keyof Contact)[]Optional list of specific fields to retrieve. If not specified, all fields are returned.1.0.0
limitnumberMaximum number of contacts to return.1.0.0
offsetnumberNumber of contacts to skip before starting to return results.1.0.0

GetGroupByIdResult

Result from getting a group by ID.

PropTypeDescriptionSince
groupGroup | nullThe group, or null if not found.1.0.0

GetGroupByIdOptions

Options for getting a group by ID.

PropTypeDescriptionSince
idstringThe ID of the group to retrieve.1.0.0

GetGroupsResult

Result from getting groups.

PropTypeDescriptionSince
groupsGroup[]List of groups.1.0.0

IsAvailableResult

Result from checking if contacts are available on the device.

PropTypeDescriptionSince
isAvailablebooleanWhether contacts are available on this device.1.0.0

IsSupportedResult

Result from checking if the plugin is supported on the platform.

PropTypeDescriptionSince
isSupportedbooleanWhether the plugin is supported on this platform.1.0.0

PickContactsResult

Result from picking contacts.

PropTypeDescriptionSince
contactsContact[]List of selected contacts.1.0.0

PickContactsOptions

Options for picking contacts using the native contact picker.

PropTypeDescriptionSince
fields(keyof Contact)[]Optional list of specific fields to retrieve. If not specified, all fields are returned.1.0.0
multiplebooleanWhether to allow selecting multiple contacts. Default is false.1.0.0

UpdateContactByIdOptions

Options for updating a contact by ID.

PropTypeDescriptionSince
idstringThe ID of the contact to update.1.0.0
contactOmit<Contact, 'id'>Updated contact information.1.0.0

PermissionStatus

Status of contacts permissions.

PropTypeDescriptionSince
readContactsContactsPermissionStatePermission state for reading contacts.1.0.0
writeContactsContactsPermissionStatePermission state for writing contacts.1.0.0

RequestPermissionsOptions

Options for requesting contacts permissions.

PropTypeDescriptionSince
permissionsContactsPermissionType[]Specific permissions to request. If not provided, all permissions will be requested.1.0.0

Type Aliases

Omit

Construct a type with the properties of T except for those in type K.

Pick<T, Exclude<keyof T, K>>

Pick

From T, pick a set of properties whose keys are in the union K

{ [P in K]: T[P]; }

Exclude

Exclude from T those types that are assignable to U

T extends U ? never : T

EmailAddressType

Type of email address.

'CUSTOM' | 'HOME' | 'ICLOUD' | 'OTHER' | 'WORK'

PhoneNumberType

Type of phone number.

'ASSISTANT' | 'CALLBACK' | 'CAR' | 'COMPANY_MAIN' | 'CUSTOM' | 'FAX_HOME' | 'FAX_WORK' | 'HOME' | 'HOME_FAX' | 'ISDN' | 'MAIN' | 'MMS' | 'MOBILE' | 'OTHER' | 'OTHER_FAX' | 'PAGER' | 'RADIO' | 'TELEX' | 'TTY_TDD' | 'WORK' | 'WORK_MOBILE' | 'WORK_PAGER'

PostalAddressType

Type of postal address.

'CUSTOM' | 'HOME' | 'OTHER' | 'WORK'

UrlAddressType

Type of URL address.

'BLOG' | 'CUSTOM' | 'FTP' | 'HOME' | 'HOMEPAGE' | 'OTHER' | 'PROFILE' | 'SCHOOL' | 'WORK'

ContactField

Field names available in a Contact object.

keyof Contact

PickContactOptions

Alias for PickContactsOptions.

PickContactsOptions

PickContactResult

Alias for PickContactsResult.

PickContactsResult

ContactsPermissionState

Permission state for contacts access, including the 'limited' state for iOS 18+.

PermissionState | 'limited'

PermissionState

'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'

ContactsPermissionType

Type of contacts permission to request.

'readContacts' | 'writeContacts'

Credit

This plugin was inspired from: https://github.com/kesha-antonov/react-native-background-downloader