Skip to main content

 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:

  1. Main App: [BUNDLE_IDENTIFIER]
  2. 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:

  1. Navigate to Certificates, IDs & Profiles -> Identifiers.
  2. Press CTRL+F (or CMD+F on Mac) to open your browser's Find function.
  3. Search for the partial identifier: KlaviyoNotificationServiceExtension.
  4. If the App ID is found, you can proceed to the next section.

Steps to Create the Extension App ID (If Missing):

  1. Click the add button (+) to register a new identifier.
  2. Select App IDs, then click Continue.
  3. Select type App, then click Continue.
  4. Description: Enter a name (e.g., "Klaviyo Notification Service Extension").
  5. Bundle ID: Select Explicit and enter the full identifier: [BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension
  6. 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:

  1. Navigate to Certificates, IDs & Profiles -> Identifiers.
  2. Click the add button (+) to register a new identifier.
  3. Select App Groups from the list, then click Continue.
  4. Description: Enter a meaningful name (e.g., "Klaviyo Shared Data Group").
  5. Identifier: Enter the required identifier: group.[BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension.shared
  6. 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):

  1. [BUNDLE_IDENTIFIER]
  2. [BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension

Configuration Steps:

  1. In Certificates, IDs & Profiles, select Identifiers.
  2. Find and click on one of the App IDs.
  3. Click Edit.
  4. Check the App Groups box.
  5. Click the Configure button.
  6. In the list, check the box next to the identifier you created: group.[BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension.shared.
  7. 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:

  1. In Certificates, IDs & Profiles, select Profiles.
  2. Find the Provisioning Profile associated with one of your targets (it will likely show an Invalid status).
  3. Click Edit on the invalid profile.
  4. Click Generate (or Save) to create a new profile.
  5. Download the new Provisioning Profile.
  6. Repeat these steps for all other Provisioning Profiles (Development and App 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)

  1. Go to the Appmaker dashboard -> Extensions.
  2. Search for the Provisioning Profiles extension and enable it.
  3. Add the following profile value:
OrderFieldValue
FirstBundle Identifier[BUNDLE_IDENTIFIER].KlaviyoNotificationServiceExtension
Target NameKlaviyoNotificationServiceExtension
Environment VariableKLAVIYO_NOTIFICATION_SERVICE_PROFILE
  1. 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:

  1. Go to Appmaker Dashboard -> Extensions -> Firebase Analytics.
  2. Enable the Disable ios notification image feature.
  3. 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.