Klaviyo Apple Developer Account Configuration Doc: App Groups
This guide walks you through the steps on the Apple Developer website (developer.apple.com) to configure App Groups for your main iOS application and its service extension, which is necessary for Klaviyo Rich Push integration.
⚠️ IMPORTANT NOTE: Bundle Identifier Replacement
You must replace all instances of the placeholder
[BUNDLE_IDENTIFIER]with your actual, primary iOS application bundle identifier (e.g.,com.yourcompany.appname) throughout this entire document, including in the Appmaker dashboard configuration.
This configuration is mandatory for sharing data between your:
- Main App:
[BUNDLE_IDENTIFIER] - Service Extension:
[BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension
1. Prerequisites
You must be logged into your Apple Developer Account with the Account Holder or Admin role.
Required Identifiers
- App Group Identifier:
group.[BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension.shared
2. Check and Create Missing Extension App ID
You must ensure that the App IDs for your main app and the service extension are registered in the Apple Developer Portal before configuring capabilities.
Targets to Check/Create:
[BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension(Service Extension)
How to Check if App ID Exists:
- Navigate to Certificates, IDs & Profiles -> Identifiers.
- Press CTRL+F (or CMD+F on Mac) to open your browser's Find function.
- Search for the partial identifier:
KlaviyoNotificationServiceExtension. - If the App ID is found, you can proceed to the next section.
Steps to Create the Extension App ID (If Missing):
- Click the add button (+) to register a new identifier.
- Select App IDs, then click Continue.
- Select type App, then click Continue.
- Description: Enter a name (e.g., "Klaviyo Notification Service Extension").
- Bundle ID: Select Explicit and enter the full identifier:
[BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension - Scroll down, click Continue, and then Register.
3. Create the Shared App Group
An App Group provides a shared data container and acts as a common security boundary.
Steps:
- Navigate to Certificates, IDs & Profiles -> Identifiers.
- Click the add button (+) to register a new identifier.
- Select App Groups from the list, then click Continue.
- Description: Enter a meaningful name (e.g., "Klaviyo Shared Data Group").
- Identifier: Enter the required identifier:
group.[BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension.shared - Click Continue, then Register.
4. Enable App Groups on All App IDs
You must enable the App Groups capability for the main App ID and the Extension App ID.
Targets to Configure (Repeat Steps below for both App IDs):
[BUNDLE_IDENTIFIER][BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension
Configuration Steps:
- In Certificates, IDs & Profiles, select Identifiers.
- Find and click on one of the App IDs.
- Click Edit.
- Check the App Groups box.
- Click the Configure button.
- In the list, check the box next to the identifier you created:
group.[BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension.shared. - Click Continue, then Save to confirm changes to the App ID.
5. Regenerate Provisioning Profiles
Any change to the capabilities of an App ID invalidates all associated Provisioning Profiles. These profiles must be regenerated and downloaded.
Steps:
- In Certificates, IDs & Profiles, select Profiles.
- Find the Provisioning Profile associated with one of your targets (it will likely show an Invalid status).
- Click Edit on the invalid profile.
- Click Generate (or Save) to create a new profile.
- Download the new Provisioning Profile.
- Repeat these steps for all other Provisioning Profiles (
DevelopmentandApp Store/Ad Hoc) associated with your Main App and the Service Extension Target.
6. Appmaker Configuration Steps
After completing the portal steps, configure the required settings in the Appmaker dashboard.
6.1 Provisioning Profile Upload (In Appmaker)
- Go to the Appmaker dashboard -> Extensions.
- Search for the Provisioning Profiles extension and enable it.
- Add the following profile value:
| Order | Field | Value |
|---|---|---|
| First | Bundle Identifier | [BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension |
| Target Name | KlaviyoNotificationServiceExtension | |
| Environment Variable | KLAVIYO_NOTIFICATION_SERVICE_PROFILE |
- After configuring the value, save the changes.
6.2 Disable Firebase Notification Image
If you use Firebase Analytics, disable its notification handling to avoid conflict:
- Go to Appmaker Dashboard -> Extensions -> Firebase Analytics.
- Enable the
Disable ios notification imagefeature. - Click Save.
6.3 Finalizing the Build
- Contact Appmaker support to request regeneration of existing profiles on their system.
- Once confirmation is received, you can proceed to generate successful builds with Klaviyo integration.