---
description: Capacitor plugin to open the native phone dialer prefilled with a phone number. Supports Android and iOS.
title: Capacitor Phone Dialer Plugin - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/phone-dialer.png
---

<!doctype html> 

[Skip to content ](#capacitor-phone-dialer-plugin) 

[🔐 Introducing the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode. ](/blog/announcing-the-capacitor-vault-plugin/) 

* [ 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/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ 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/)
* Phone Dialer [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Direct Calling ](#direct-calling)
* [ Number Sanitization ](#number-sanitization)
* [ Changelog ](#changelog)
* [ License ](#license)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ 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/)
* [ 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/)
* [ 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

* [ Configuration ](#configuration)
* [ Usage ](#usage)
* [ API ](#api)
* [ Direct Calling ](#direct-calling)
* [ Number Sanitization ](#number-sanitization)
* [ Changelog ](#changelog)
* [ License ](#license)

# Capacitor Phone Dialer Plugin[¶](#capacitor-phone-dialer-plugin "Permanent link")

Capacitor plugin to open the native phone dialer prefilled with a phone number.

[ ![Deliver Live Updates to your Capacitor app with Capawesome Cloud](../../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://cloud.capawesome.io/) 

## Features[¶](#features "Permanent link")

* 📞 **Dial**: Open the native phone dialer prefilled with a phone number.
* ✅ **Capability check**: Check whether the device is able to open the phone dialer.
* 🔒 **Privacy-friendly**: The user always reviews the number and places the call. The plugin never calls on its own.
* 📦 **CocoaPods & SPM**: Supports CocoaPods and Swift Package Manager for iOS.
* 🔁 **Up-to-date**: Always supports the latest Capacitor version.
* 🤝 **Compatibility**: Works alongside the [Mail Composer](https://capawesome.io/docs/sdks/capacitor/mail-composer/) and [SMS Composer](https://capawesome.io/docs/sdks/capacitor/sms-composer/) plugins.

Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!

## Newsletter[¶](#newsletter "Permanent link")

Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).

## Compatibility[¶](#compatibility "Permanent link")

| Plugin Version | Capacitor Version | Status         |
| -------------- | ----------------- | -------------- |
| 0.x.x          | \>=8.x.x          | Active support |

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

You can use our **AI-Assisted Setup** to install the plugin. Add the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:

`[](#%5F%5Fcodelineno-0-1)npx skills add capawesome-team/skills --skill capacitor-plugins
`

Then use the following prompt:

`` [](#%5F%5Fcodelineno-1-1) Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-phone-dialer` plugin in my project.
 ``

If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:

`[](#%5F%5Fcodelineno-2-1)npm install @capawesome/capacitor-phone-dialer
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

This plugin is only available on **Android** and **iOS**. On Web, all methods reject as unimplemented. Use an `<a href="tel:...">` link on the web instead.

### Android[¶](#android "Permanent link")

No additional configuration is required. The plugin declares the necessary `<queries>` element for the `tel` scheme in its `AndroidManifest.xml`, so the phone dialer can be detected on Android 11 (API level 30) and higher.

### iOS[¶](#ios "Permanent link")

To be able to detect whether the device can open the phone dialer, add the `tel` scheme to the `LSApplicationQueriesSchemes` array in your app's `Info.plist` file:

`[](#%5F%5Fcodelineno-3-1)<key>LSApplicationQueriesSchemes</key>
[](#%5F%5Fcodelineno-3-2)<array>
[](#%5F%5Fcodelineno-3-3)  <string>tel</string>
[](#%5F%5Fcodelineno-3-4)</array>
`

## Configuration[¶](#configuration "Permanent link")

No configuration required for this plugin.

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

`[](#%5F%5Fcodelineno-4-1)import { PhoneDialer } from '@capawesome/capacitor-phone-dialer';
[](#%5F%5Fcodelineno-4-2)
[](#%5F%5Fcodelineno-4-3)const canDial = async () => {
[](#%5F%5Fcodelineno-4-4)  const { canDial } = await PhoneDialer.canDial();
[](#%5F%5Fcodelineno-4-5)  return canDial;
[](#%5F%5Fcodelineno-4-6)};
[](#%5F%5Fcodelineno-4-7)
[](#%5F%5Fcodelineno-4-8)const dial = async () => {
[](#%5F%5Fcodelineno-4-9)  await PhoneDialer.dial({ number: '+41791234567' });
[](#%5F%5Fcodelineno-4-10)};
`

## API[¶](#api "Permanent link")

* [canDial()](#candial)
* [dial(...)](#dial)
* [Interfaces](#interfaces)

### canDial()[¶](#candial "Permanent link")

`[](#%5F%5Fcodelineno-5-1)canDial() => Promise<CanDialResult>
`

Check whether the device is able to open the phone dialer.

On devices without telephony capability (e.g. Wi-Fi-only tablets or iPod touch), this resolves with `canDial` set to `false`.

Only available on Android and iOS.

**Returns:** `Promise<[CanDialResult](#candialresult)>`

**Since:** 0.1.0

---

### dial(...)[¶](#dial "Permanent link")

`[](#%5F%5Fcodelineno-6-1)dial(options: DialOptions) => Promise<void>
`

Open the native phone dialer prefilled with the given number.

The user reviews the number and decides whether to place the call. The plugin never places the call itself.

If the device is not able to open the phone dialer, the call rejects as unavailable.

Only available on Android and iOS.

| Param       | Type                        |
| ----------- | --------------------------- |
| **options** | [DialOptions](#dialoptions) |

**Since:** 0.1.0

---

### Interfaces[¶](#interfaces "Permanent link")

#### CanDialResult[¶](#candialresult "Permanent link")

| Prop        | Type    | Description                                          | Since |
| ----------- | ------- | ---------------------------------------------------- | ----- |
| **canDial** | boolean | Whether the device is able to open the phone dialer. | 0.1.0 |

#### DialOptions[¶](#dialoptions "Permanent link")

| Prop       | Type   | Description                                                                                                                                                              | Since |
| ---------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----- |
| **number** | string | The phone number to prefill in the dialer. Only digits and the characters +, \* and # are kept. All other characters (e.g. spaces or dashes) are removed before dialing. | 0.1.0 |

## Direct Calling[¶](#direct-calling "Permanent link")

This plugin only **opens** the phone dialer prefilled with the number. It never places the call directly. This is a deliberate design decision:

* On **Android**, direct calling would require the `android.permission.CALL_PHONE` runtime permission and comes with additional Google Play policy requirements. The plugin uses `Intent.ACTION_DIAL`, which does not require any permission.
* On **iOS**, there is no public API to place a call without user confirmation. The plugin opens the `tel:` URL, which shows the system Call/Cancel confirmation.

## Number Sanitization[¶](#number-sanitization "Permanent link")

Before opening the dialer, the phone number is sanitized: all characters except digits and `+`, `*` and `#` are removed. If nothing remains after sanitization, the call rejects with an error.

## Changelog[¶](#changelog "Permanent link")

See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/phone-dialer/CHANGELOG.md).

## License[¶](#license "Permanent link")

See [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/phone-dialer/LICENSE).

July 7, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/phone-dialer/#article", "headline": "Capacitor Phone Dialer Plugin", "name": "Capacitor Phone Dialer Plugin", "description": "Capacitor plugin to open the native phone dialer prefilled with a phone number. Supports Android and iOS.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/phone-dialer/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/phone-dialer/", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "about": {"@id": "https://capawesome.io/docs/sdks/capacitor/phone-dialer/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/phone-dialer/#software", "name": "Capacitor Phone Dialer Plugin", "description": "Capacitor plugin to open the native phone dialer prefilled with a phone number. Supports Android and iOS.", "url": "https://capawesome.io/docs/sdks/capacitor/phone-dialer/", "programmingLanguage": "TypeScript", "runtimePlatform": "Capacitor", "codeRepository": "https://github.com/capawesome-team", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}}]}
```
