---
description: Map provisioning profiles to specific targets for iOS apps with extensions or multiple targets in Capawesome Cloud native builds.
title: Custom iOS Provisioning Profiles - Capawesome
image: https://capawesome.io/docs/assets/images/social/cloud/native-builds/custom-ios-provisioning-profiles.png
---

[ Skip to content](#custom-ios-provisioning-profiles-for-multiple-targets) 

[ 🔐 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/)
* [  libSQL ](/docs/sdks/capacitor/libsql/)
* [  Live Update ](/docs/sdks/capacitor/live-update/)
* [  Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [  Media Session ](/docs/sdks/capacitor/media-session/)
* [  ML Kit ](/docs/sdks/capacitor/mlkit/)
* [  Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [  NFC ](/docs/sdks/capacitor/nfc/)
* [  OAuth ](/docs/sdks/capacitor/oauth/)
* [  Pedometer ](/docs/sdks/capacitor/pedometer/)
* [  Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [  PostHog ](/docs/sdks/capacitor/posthog/)
* [  Printer ](/docs/sdks/capacitor/printer/)
* [  Purchases ](/docs/sdks/capacitor/purchases/)
* [  RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [  Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [  Screenshot ](/docs/sdks/capacitor/screenshot/)
* [  Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [  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/)
* [  Torch ](/docs/sdks/capacitor/torch/)
* [  Vault ](/docs/sdks/capacitor/vault/)
* [  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 or Yarn ](/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 [  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

# Custom iOS Provisioning Profiles for Multiple Targets[¶](#custom-ios-provisioning-profiles-for-multiple-targets "Permanent link")

Capawesome Cloud automatically detects and applies provisioning profiles to all iOS targets based on their bundle identifiers. However, when working with multiple targets that use non-standard bundle ID patterns, you can manually configure the mapping between bundle IDs and target names.

## Automatic Provisioning Profile Detection[¶](#automatic-provisioning-profile-detection "Permanent link")

By default, Capawesome Cloud automatically:

1. Scans all provisioning profiles uploaded to your build
2. Matches profiles to targets based on bundle identifiers
3. Configures code signing for each target
4. Generates export options with the correct profile mappings

This automatic detection works seamlessly when your app extensions follow the standard iOS naming pattern where extension bundle IDs are prefixed with the main app bundle ID (e.g., `com.example.app` for the main app and `com.example.app.widget` for a widget extension).

## Configure Custom Mapping[¶](#configure-custom-mapping "Permanent link")

To override the automatic detection for non-standard bundle ID patterns, set the `IOS_PROVISIONING_PROFILE_MAP` environment variable:

1. Navigate to the [Environments](https://console.cloud.capawesome.io/apps/%5F/environments) page
2. Select your environment or create a new one
3. Add a variable named `IOS_PROVISIONING_PROFILE_MAP`
4. Set its value to a JSON object mapping bundle IDs to target names
JSON Format 

The value must be a valid JSON object with bundle IDs as keys and target names as values. Ensure the target names match exactly as they appear in your Xcode project.

## Example[¶](#example "Permanent link")

Consider a VPN app with the following targets:

* Main app: `com.example.vpnapp` (target: `App`)
* WireGuard extension: `com.example.wireguard` (target: `WireGuardExtension`)
* Packet tunnel: `com.example.tunnelprovider` (target: `PacketTunnel`)

To configure provisioning profiles for these targets:

1. Add an environment variable named `IOS_PROVISIONING_PROFILE_MAP`
2. Set its value to:  
`[](#%5F%5Fcodelineno-0-1){"com.example.wireguard":"WireGuardExtension","com.example.tunnelprovider":"PacketTunnel"}  
`
3. Select this environment when triggering your build

The specified mappings will be used in addition to the automatic detection for the main app target.

March 4, 2026 

 Back to top 