---
description: Capacitor plugin to read, write, or select device contacts with advanced features like filtering and pagination.
title: Capacitor Contacts Plugin for iOS & Android - Capawesome
image: https://capawesome.io/docs/assets/images/social/blog/announcing-the-capacitor-contacts-plugin.png
---

<!doctype html> 

[Skip to content ](#capacitor-contacts-plugin-for-ios-android) 

[🖥️ Introducing the **Capacitor Electron Platform** — build desktop apps for macOS, Windows, and Linux. Free & open source. ](/blog/announcing-the-capacitor-electron-platform/) 

* [ SDKs ](/docs/sdks/)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Intercom ](/docs/sdks/capacitor/intercom/)
* [ Intune ](/docs/sdks/capacitor/intune/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Tauri ](/docs/sdks/capacitor/tauri/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ YouTube Player ](/docs/sdks/capacitor/youtube-player/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ FAQ ](#faq)
* [ Related Posts ](#related-posts)
* [ Conclusion ](#conclusion)

* Related links

# Capacitor Contacts Plugin for iOS & Android[¶](#capacitor-contacts-plugin-for-ios-android "Permanent link")

Reading, creating, and updating a user's contacts from a Capacitor app usually means wiring up two very different native APIs. The [Capacitor Contacts plugin](/docs/sdks/capacitor/contacts/) gives you a single API to access the device's contacts — including a native contact picker, accounts, and groups — with cross-platform support for Android, iOS, and Web. It's available to all Capawesome [Insiders](/docs/insiders/).

Let's take a quick look at the [API](/docs/sdks/capacitor/contacts/#api) and how you can use the plugin to retrieve and manage contacts.

## Installation[¶](#installation "Permanent link")

To install the Capacitor Contacts plugin, please refer to the [Installation](/docs/sdks/capacitor/contacts/#installation) section in the plugin documentation.

## Usage[¶](#usage "Permanent link")

Let's take a look at the basic usage of the plugin. You can find the complete API reference in the [API](/docs/sdks/capacitor/contacts/#api) section of the documentation.

### Create a contact[¶](#create-a-contact "Permanent link")

First, let's create a new contact. You can use the [createContact(...)](/docs/sdks/capacitor/contacts/#createcontact) method to create a new contact:

`[](#%5F%5Fcodelineno-0-1)import { Contacts, EmailAddressType, PhoneNumberType, PostalAddressType } from "@capawesome-team/capacitor-contacts";
[](#%5F%5Fcodelineno-0-2)
[](#%5F%5Fcodelineno-0-3)const createContact = async () => {
[](#%5F%5Fcodelineno-0-4)  return Contacts.createContact({
[](#%5F%5Fcodelineno-0-5)    contact: {
[](#%5F%5Fcodelineno-0-6)      givenName: 'John',
[](#%5F%5Fcodelineno-0-7)      familyName: 'Doe',
[](#%5F%5Fcodelineno-0-8)      emailAddresses: [
[](#%5F%5Fcodelineno-0-9)        {
[](#%5F%5Fcodelineno-0-10)          value: 'mail@example.com',
[](#%5F%5Fcodelineno-0-11)          type: EmailAddressType.Home,
[](#%5F%5Fcodelineno-0-12)          isPrimary: true
[](#%5F%5Fcodelineno-0-13)        }
[](#%5F%5Fcodelineno-0-14)      ],
[](#%5F%5Fcodelineno-0-15)      phoneNumbers: [
[](#%5F%5Fcodelineno-0-16)        {
[](#%5F%5Fcodelineno-0-17)          value: '1234567890',
[](#%5F%5Fcodelineno-0-18)          type: PhoneNumberType.Mobile,
[](#%5F%5Fcodelineno-0-19)          isPrimary: true
[](#%5F%5Fcodelineno-0-20)        }
[](#%5F%5Fcodelineno-0-21)      ],
[](#%5F%5Fcodelineno-0-22)      postalAddresses: [
[](#%5F%5Fcodelineno-0-23)        {
[](#%5F%5Fcodelineno-0-24)          street: '123 Main St',
[](#%5F%5Fcodelineno-0-25)          city: 'Springfield',
[](#%5F%5Fcodelineno-0-26)          state: 'IL',
[](#%5F%5Fcodelineno-0-27)          postalCode: '62701',
[](#%5F%5Fcodelineno-0-28)          country: 'USA',
[](#%5F%5Fcodelineno-0-29)          type: PostalAddressType.Home,
[](#%5F%5Fcodelineno-0-30)          isPrimary: true
[](#%5F%5Fcodelineno-0-31)        }
[](#%5F%5Fcodelineno-0-32)      ]
[](#%5F%5Fcodelineno-0-33)    }
[](#%5F%5Fcodelineno-0-34)  });
[](#%5F%5Fcodelineno-0-35)};
`

This method takes a `Contact` object as a parameter, which contains the contact's information such as name, email addresses, phone numbers, and postal addresses.

### Retrieve contacts[¶](#retrieve-contacts "Permanent link")

You can retrieve contacts from the device's address book using the [getContacts(...)](/docs/sdks/capacitor/contacts/#getcontacts) method:

`[](#%5F%5Fcodelineno-1-1)import { Contacts } from "@capawesome-team/capacitor-contacts";
[](#%5F%5Fcodelineno-1-2)
[](#%5F%5Fcodelineno-1-3)const getContacts = async () => {
[](#%5F%5Fcodelineno-1-4)  const { contacts } = await Contacts.getContacts({
[](#%5F%5Fcodelineno-1-5)    fields: ['givenName', 'familyName', 'emailAddresses', 'phoneNumbers', 'postalAddresses'],
[](#%5F%5Fcodelineno-1-6)  });
[](#%5F%5Fcodelineno-1-7)  return contacts;
[](#%5F%5Fcodelineno-1-8)};
`

This method returns an array of contacts, each containing the requested fields. You can specify which fields you want to retrieve using the `fields` parameter. This is useful to limit the amount of data returned and improve performance.

There is also a `getContactById(...)` method that allows you to retrieve a contact by its ID:

`[](#%5F%5Fcodelineno-2-1)import { Contacts } from "@capawesome-team/capacitor-contacts";
[](#%5F%5Fcodelineno-2-2)
[](#%5F%5Fcodelineno-2-3)const getContactById = async (contactId: string) => {
[](#%5F%5Fcodelineno-2-4)  const { contact } = await Contacts.getContactById({ id: contactId });
[](#%5F%5Fcodelineno-2-5)  return contact;
[](#%5F%5Fcodelineno-2-6)};
`

This method takes the contact ID as a parameter and returns the contact with the specified ID. This is useful if you want to retrieve a specific contact without having to search for it in the list of all contacts.

### Update a contact[¶](#update-a-contact "Permanent link")

To update an existing contact, you can use the [updateContact(...)](/docs/sdks/capacitor/contacts/#updatecontact) method:

`[](#%5F%5Fcodelineno-3-1)import { Contacts } from "@capawesome-team/capacitor-contacts";
[](#%5F%5Fcodelineno-3-2)
[](#%5F%5Fcodelineno-3-3)const updateContact = async (contactId: string) => {
[](#%5F%5Fcodelineno-3-4)  await Contacts.updateContact({ 
[](#%5F%5Fcodelineno-3-5)    id: contactId, 
[](#%5F%5Fcodelineno-3-6)    contact: {
[](#%5F%5Fcodelineno-3-7)      givenName: 'John',
[](#%5F%5Fcodelineno-3-8)      familyName: 'Doe'
[](#%5F%5Fcodelineno-3-9)    } 
[](#%5F%5Fcodelineno-3-10)  });
[](#%5F%5Fcodelineno-3-11)};
`

This method takes the contact ID and a `Contact` object as parameters. You can update the contact's information such as name, email addresses, phone numbers, and postal addresses. This is useful if you want to modify an existing contact's information.

All contact fields are required 

All contact fields are required to be provided, even if they are not updated. Fields that are not provided will be removed from the contact. This bevavior will be changed in v8.0.0 of the plugin. From then on, only the fields that are provided will be updated, and the other fields will remain unchanged. If you want to remove a field, you can set it to `null`.

### Delete a contact[¶](#delete-a-contact "Permanent link")

You can delete a contact using the [deleteContact(...)](/docs/sdks/capacitor/contacts/#deletecontact) method:

`[](#%5F%5Fcodelineno-4-1)import { Contacts } from "@capawesome-team/capacitor-contacts";
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const deleteContact = async (contactId: string) => {
[](#%5F%5Fcodelineno-4-4)  await Contacts.deleteContact({ id: contactId });
[](#%5F%5Fcodelineno-4-5)};
`

This method takes the contact ID as a parameter and deletes the contact with the specified ID. This is useful if you want to remove a contact from the device's address book.

### Pick a contact[¶](#pick-a-contact "Permanent link")

You can let the user pick a contact from the device's address book using the [pickContact(...)](/docs/sdks/capacitor/contacts/#pickcontact) method:

`[](#%5F%5Fcodelineno-5-1)import { Contacts } from "@capawesome-team/capacitor-contacts";
[](#%5F%5Fcodelineno-5-2)
[](#%5F%5Fcodelineno-5-3)const pickContact = async () => {
[](#%5F%5Fcodelineno-5-4)  const { contact } = await Contacts.pickContact();
[](#%5F%5Fcodelineno-5-5)  return contact;
[](#%5F%5Fcodelineno-5-6)};
`

This method opens the device's contact picker and returns the selected contact. This way, you can let the user select a contact while respecting their privacy and without having to implement your own contact picker UI.

### Accounts[¶](#accounts "Permanent link")

On Android, you can retrieve the accounts associated with the device using the [getAccounts(...)](/docs/sdks/capacitor/contacts/#getaccounts) method:

`[](#%5F%5Fcodelineno-6-1)import { Contacts } from "@capawesome-team/capacitor-contacts";
[](#%5F%5Fcodelineno-6-2)
[](#%5F%5Fcodelineno-6-3)const getAccounts = async () => {
[](#%5F%5Fcodelineno-6-4)  const { accounts } = await Contacts.getAccounts();
[](#%5F%5Fcodelineno-6-5)  return accounts;
[](#%5F%5Fcodelineno-6-6)};
`

You can then create a contact and associate it with an account using the `account` property of the `Contact` object:

`[](#%5F%5Fcodelineno-7-1)import { Contacts } from "@capawesome-team/capacitor-contacts";
[](#%5F%5Fcodelineno-7-2)
[](#%5F%5Fcodelineno-7-3)const createContact = async () => {
[](#%5F%5Fcodelineno-7-4)  return Contacts.createContact({
[](#%5F%5Fcodelineno-7-5)    contact: {
[](#%5F%5Fcodelineno-7-6)      account: {
[](#%5F%5Fcodelineno-7-7)        name: 'john@doe.tld',
[](#%5F%5Fcodelineno-7-8)        type: 'com.google'
[](#%5F%5Fcodelineno-7-9)      },
[](#%5F%5Fcodelineno-7-10)      givenName: 'John',
[](#%5F%5Fcodelineno-7-11)      familyName: 'Doe'
[](#%5F%5Fcodelineno-7-12)    },
[](#%5F%5Fcodelineno-7-13)  });
[](#%5F%5Fcodelineno-7-14)};
`

### Groups[¶](#groups "Permanent link")

On iOS, you can retrieve the groups associated with the device using the [getGroups(...)](/docs/sdks/capacitor/contacts/#getgroups) method:

`[](#%5F%5Fcodelineno-8-1)import { Contacts } from "@capawesome-team/capacitor-contacts";
[](#%5F%5Fcodelineno-8-2)
[](#%5F%5Fcodelineno-8-3)const getGroups = async () => {
[](#%5F%5Fcodelineno-8-4)  const { groups } = await Contacts.getGroups();
[](#%5F%5Fcodelineno-8-5)  return groups;
[](#%5F%5Fcodelineno-8-6)};
`

Just like with accounts, you can create a contact and associate it with one (or more) group(s) using the `groupIds` property of the `Contact` object:

`[](#%5F%5Fcodelineno-9-1)import { Contacts } from "@capawesome-team/capacitor-contacts";
[](#%5F%5Fcodelineno-9-2)
[](#%5F%5Fcodelineno-9-3)const createContact = async () => {
[](#%5F%5Fcodelineno-9-4)  return Contacts.createContact({
[](#%5F%5Fcodelineno-9-5)    contact: {
[](#%5F%5Fcodelineno-9-6)      groupIds: ['904DE809-D144-4562-8552-DFEB91F0E4BD:ABGroup'],
[](#%5F%5Fcodelineno-9-7)      givenName: 'John',
[](#%5F%5Fcodelineno-9-8)      familyName: 'Doe'
[](#%5F%5Fcodelineno-9-9)    },
[](#%5F%5Fcodelineno-9-10)  });
[](#%5F%5Fcodelineno-9-11)};
`

You can even create a new group using the [createGroup(...)](/docs/sdks/capacitor/contacts/#creategroup) method:

`[](#%5F%5Fcodelineno-10-1)import { Contacts } from "@capawesome-team/capacitor-contacts";
[](#%5F%5Fcodelineno-10-2)
[](#%5F%5Fcodelineno-10-3)const createGroup = async () => {
[](#%5F%5Fcodelineno-10-4)  return Contacts.createGroup({
[](#%5F%5Fcodelineno-10-5)    group: {
[](#%5F%5Fcodelineno-10-6)      name: 'Friends'
[](#%5F%5Fcodelineno-10-7)    }
[](#%5F%5Fcodelineno-10-8)  });
[](#%5F%5Fcodelineno-10-9)};
`

## FAQ[¶](#faq "Permanent link")

### Which platforms does the Capacitor Contacts plugin support?[¶](#which-platforms-does-the-capacitor-contacts-plugin-support "Permanent link")

The plugin provides cross-platform support for Android, iOS, and the Web through a single API.

### Can I let users pick a contact without reading their whole address book?[¶](#can-i-let-users-pick-a-contact-without-reading-their-whole-address-book "Permanent link")

Yes. `pickContact()` opens the device's native contact picker and returns only the contact the user selects, so you can respect their privacy without requesting access to the full address book.

### Can I limit which contact fields are returned?[¶](#can-i-limit-which-contact-fields-are-returned "Permanent link")

Yes. `getContacts(...)` takes a `fields` array, so you only fetch the fields you need (for example `givenName`, `phoneNumbers`, or `emailAddresses`). This reduces the amount of data returned and improves performance.

### Does the plugin support Android accounts and iOS groups?[¶](#does-the-plugin-support-android-accounts-and-ios-groups "Permanent link")

Yes. On Android you can read accounts with `getAccounts()` and associate a new contact with one; on iOS you can read groups with `getGroups()`, create groups with `createGroup()`, and add contacts to them.

### How do I call, text, or email a contact?[¶](#how-do-i-call-text-or-email-a-contact "Permanent link")

The Contacts plugin gives you the contact's details; to act on them, hand the phone number or email address to one of the composer plugins. The [Capacitor Phone Dialer plugin](/docs/sdks/capacitor/phone-dialer/) opens the native dialer prefilled with a number, the [Capacitor SMS Composer plugin](/docs/sdks/capacitor/sms-composer/) opens the SMS composer with recipients and a message body, and the [Capacitor Mail Composer plugin](/docs/sdks/capacitor/mail-composer/) opens the email composer prefilled with recipients, subject, body, and attachments. Each one hands control to the user's own app, so nothing is sent without their confirmation.

## Related Posts[¶](#related-posts "Permanent link")

* [Alternative to the Capacitor Community Contacts plugin](/blog/alternative-to-capacitor-community-contacts-plugin/)
* [Exploring the Capacitor Contacts API](/blog/exploring-the-capacitor-contacts-api/)

## Conclusion[¶](#conclusion "Permanent link")

The [Capacitor Contacts plugin](/docs/sdks/capacitor/contacts/) gives you full create, read, update, and delete access to device contacts — plus a native picker, accounts, and groups — behind one cross-platform API for Android, iOS, and Web.

**Missing a feature?** [Create a feature request](https://github.com/capawesome-team/capacitor-plugins/issues/new/choose) in our [GitHub repository](https://github.com/capawesome-team/capacitor-plugins). You can also explore the full [API Reference](/docs/sdks/capacitor/contacts/#api).

Join the Capawesome [Discord](https://discord.gg/VCXxSVjefW) server for questions and subscribe to the Capawesome [newsletter](https://capawesome.io/newsletter/) to stay updated.

July 16, 2026 

Back to top

```json
{
      "@context": "https://schema.org",
      "@type": "BlogPosting",
      "headline": "Capacitor Contacts Plugin for iOS \u0026 Android",
      "description": "Capacitor plugin to read, write, or select device contacts with advanced features like filtering and pagination.",
      "image": "https://capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png",
      "datePublished": "2025-03-24T00:00:00+00:00",
      "dateModified": "2026-07-14T00:00:00+00:00",
      "author": [
        {
          "@type": "Person",
          "name": "Robin Genz",
          "url": "https://github.com/robingenz"
        }
      ],
      "publisher": {
        "@type": "Organization",
        "name": "Capawesome",
        "url": "https://capawesome.io",
        "logo": {
          "@type": "ImageObject",
          "url": "https://capawesome.io/assets/images/logo.svg"
        }
      },
      "articleSection": "Announcements",
      "keywords": ["Announcements", "Capacitor", "SDKs"],
      "isPartOf": {
        "@type": "Blog",
        "@id": "https://capawesome.io/blog/#blog"
      },
      "mainEntityOfPage": "https://capawesome.io/blog/announcing-the-capacitor-contacts-plugin/",
      "url": "https://capawesome.io/blog/announcing-the-capacitor-contacts-plugin/"
    }
{
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://capawesome.io/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://capawesome.io/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Capacitor Contacts Plugin for iOS \u0026 Android",
          "item": "https://capawesome.io/blog/announcing-the-capacitor-contacts-plugin/"
        }
      ]
    }
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Which platforms does the Capacitor Contacts plugin support?", "acceptedAnswer": {"@type": "Answer", "text": "The plugin provides cross-platform support for Android, iOS, and the Web through a single API."}}, {"@type": "Question", "name": "Can I let users pick a contact without reading their whole address book?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. pickContact() opens the device's native contact picker and returns only the contact the user selects, so you can respect their privacy without requesting access to the full address book."}}, {"@type": "Question", "name": "Can I limit which contact fields are returned?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. getContacts(...) takes a fields array, so you only fetch the fields you need (for example givenName, phoneNumbers, or emailAddresses). This reduces the amount of data returned and improves performance."}}, {"@type": "Question", "name": "Does the plugin support Android accounts and iOS groups?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. On Android you can read accounts with getAccounts() and associate a new contact with one; on iOS you can read groups with getGroups(), create groups with createGroup(), and add contacts to them."}}, {"@type": "Question", "name": "How do I call, text, or email a contact?", "acceptedAnswer": {"@type": "Answer", "text": "The Contacts plugin gives you the contact's details; to act on them, hand the phone number or email address to one of the composer plugins. The Capacitor Phone Dialer plugin opens the native dialer prefilled with a number, the Capacitor SMS Composer plugin opens the SMS composer with recipients and a message body, and the Capacitor Mail Composer plugin opens the email composer prefilled with recipients, subject, body, and attachments. Each one hands control to the user's own app, so nothing is sent without their confirmation."}}], "url": "https://capawesome.io/blog/announcing-the-capacitor-contacts-plugin/"}
```
