> For the complete documentation index, see [llms.txt](https://docs.thewalletcrew.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.thewalletcrew.io/guides-enrolment/enrolment/enrolment-form/social-sign-in/apple-sign-in.md).

# Apple Sign-in configuration

Configure Sign in with Apple and connect it to The Wallet Crew social sign-in.

Use this page to enable the **Apple** button in an enrolment form.

Start with [Social sign-in](/guides-enrolment/enrolment/enrolment-form/social-sign-in.md) to understand the customer flow. Then come back here for the provider setup.

<figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FBP9fhwq1Tpq6pxxvW29G%2FApple-Social-Sign-In.png?alt=media&#x26;token=24b7931d-1046-4f99-aff1-b6c4a37d2aab" alt="Apple-Social-Sign-In-Example" width="375"><figcaption><p>Connect with Apple in an enrolment form example</p></figcaption></figure>

### Overview

Use this page to configure **Sign in with Apple** (Apple ID login) for **The Wallet Crew** enrolment forms.

Apple is configured in two places:

1. **Apple Developer**: App ID + Service ID + domains + return URLs.
2. **The Wallet Crew admin**: paste the Apple **Service ID**.

#### Terminology (Apple)

These terms are used in Apple Developer and OAuth setups.

* **App ID**: identifies the app. Uses a **Bundle ID** like `com.brand.app`.
* **Service ID**: identifies a web sign-in integration. This is the value pasted in The Wallet Crew.
* **Domains and subdomains**: where the enrolment form is hosted.
* **Return URLs**: OAuth / OpenID Connect callback URLs used after Apple login.

#### Prerequisites

* Access to the brand’s **Apple Developer** account.
* Permission to manage **Identifiers** and **Service IDs**.
* The list of domains where the enrolment forms will run (prod + staging + dev + custom).

#### Apple behavior notes

Sign in with Apple has a few behaviors that impact the enrolment journey and the matching rules.

On the **first sign-in** with a given Apple account, Apple can provide **first name**, **last name**, and **email**. On **subsequent sign-ins**, Apple typically returns **email only**. Plan forms as if only the email will be available long term.

{% hint style="warning" %}
Apple customers can enable **Hide My Email**. In that case, Apple returns a relay address instead of the customer’s real email.

That relay email can create duplicates if the CRM expects another identifier. When customers are emailed, delivery to Apple relay addresses may also need to be supported.
{% endhint %}

Apple’s reference: [Communicating Using the Private Email Relay Service](https://developer.apple.com/documentation/signinwithapple/communicating-using-the-private-email-relay-service/).

### Configure Sign in with Apple

{% stepper %}
{% step %}

#### **Open Identifiers**

1. Log in to the Apple Developer account.

<p align="center"><a href="https://developer.apple.com/account" class="button secondary" data-icon="chevrons-right">Developer Account</a></p>

2. Go to `Certificates, IDs & Profiles` → `Identifiers`.
   {% endstep %}

{% step %}

#### **Create (or reuse) an App ID**

1. Click `+` and select `App IDs`.

<div><figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FcYzPs1fAjRKczs5TLDTs%2Fenroll-apple-sign-click.png?alt=media&#x26;token=a49d5bb5-438e-4002-8347-e14c7caa3f3c" alt="Click on +"><figcaption><p>Click the + button in the identifier list.</p></figcaption></figure> <figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FJdEyrLcxNs6vf0469trW%2Fenroll-apple-sign-select-app-id.png?alt=media&#x26;token=ef126398-73e9-459d-81fe-09ae0649559c" alt="Select App ID"><figcaption><p>Check that App IDs is the selected identifier type.</p></figcaption></figure></div>

> An existing App ID for the same domain or app can sometimes be reused. This can unlock advanced scenarios. When in doubt, ask The Wallet Crew team.

2. Select the `App` type.
3. Fill the form with:
   1. **Description**: a meaningful name for the project
   2. **Bundle ID**: use the value provided by The Wallet Crew (example: `cloud.neostore.molia.app`)
   3. **Capabilities**: enable `Sign In with Apple`

<div><figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FJFBA0Xs6gWKpFTCky66i%2Fenroll-apple-sign-description-bundle-id.png?alt=media&#x26;token=6e9265e7-da90-4b7e-8699-b12123a02a7f" alt="Description and Bundle ID" width="520"><figcaption><p>Check the Bundle ID against the value provided by The Wallet Crew.</p></figcaption></figure> <figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FNrV4vfbTBze7JhFZRSzO%2Fenroll-apple-sign-capabilities.png?alt=media&#x26;token=e2ccbac7-637a-4ac5-9e38-577bdb4ca88f" alt="Capabilities" width="563"><figcaption><p>Check that Sign In with Apple is enabled in the capabilities list.</p></figcaption></figure></div>

4. Validate the form and click `Register`.

<figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FB2dEdk2bdq36K9FLmgjB%2Fenroll-apple-sign-create-or-reuse-app-id.png?alt=media&#x26;token=cdfbf4e5-8014-43b7-8470-844ffb048b07" alt="Create (or reuse) an App ID"><figcaption><p>Check that the registered App ID appears in the identifier list.</p></figcaption></figure>
{% endstep %}

{% step %}

#### **Create (or reuse) a Service ID**

A **Service ID** is required for Sign in with Apple on the web.

1. In the identifier list, switch the filter to `Service IDs`.
2. Click `+` and select `Service IDs`.

<div><figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FcYzPs1fAjRKczs5TLDTs%2Fenroll-apple-sign-click.png?alt=media&#x26;token=a49d5bb5-438e-4002-8347-e14c7caa3f3c" alt="Click on +" width="420"><figcaption><p>Click on +</p></figcaption></figure> <figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FW5S81oHDz821XRBtA0X1%2Fenroll-apple-sign-service-id.png?alt=media&#x26;token=9090bd74-0f39-43ce-9c06-a5d7a0de0a20" alt="Service ID" width="563"><figcaption><p>Service ID</p></figcaption></figure></div>

3. Fill the form with:
   1. **Description**: a meaningful name for the service
   2. **Identifier**: use the value provided by The Wallet Crew (example: `cloud.neostore.molia.service`)

<figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FLAtXxqNpviwmZBp0ZWVz%2Fenroll-apple-sign-identifier.png?alt=media&#x26;token=0a0feeb1-4639-420b-8094-61bf2c65f518" alt="Identifier"><figcaption><p>Check the Service ID identifier against the value provided by The Wallet Crew.</p></figcaption></figure>

4. Validate the form and click `Register`.

{% hint style="info" %}
The **Service ID identifier** is the value to paste in The Wallet Crew admin.
{% endhint %}
{% endstep %}

{% step %}

#### **Configure Sign in with Apple (domains + return URLs)**

1. On the identifier list, select the Service ID just created.
2. Enable `Sign in with Apple` and click `Configure`.

<figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FfOqYBv3X5QBlsbI1ZQXt%2Fenroll-apple-sign-configure-sign-apple-domains-return-urls.png?alt=media&#x26;token=63e553c4-401a-4159-bf79-b87ec14669b8" alt="Configure Sign in with Apple (domains + return URLs)"><figcaption><p>Check that Sign in with Apple is enabled before opening Configure.</p></figcaption></figure>

3. Fill the form with:
   1. **Primary App ID**: the App ID created earlier (example: `cloud.neostore.molia.app`)
   2. **Domains and subdomains**: add all domains that will host the enrolment forms (prod + staging + dev + custom)
   3. **Return URLs**: add the OAuth callback URL(s) for each environment

<figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2F7H0WPRVsriaX38ErKopd%2Fenroll-apple-sign-return-urls.png?alt=media&#x26;token=f4e0aba1-7fc3-4a2e-ae0a-3447cf77890b" alt="Return URLs"><figcaption><p>Check every return URL for an exact match, including scheme and trailing slash.</p></figcaption></figure>

4. Validate the form and click **Continue**.

{% hint style="warning" %}
Apple is strict here. Use the exact values.

When the callback URL format is unclear, ask The Wallet Crew team.
{% endhint %}
{% endstep %}

{% step %}

#### Configure Email Communication Domains

This step is required when the brand app sends emails to customers who selected **Hide My Email** when signing in with Apple.

Apple generates a relay address like:

> <randomstring@privaterelay.appleid.com>

The sending domain must be registered, or Apple will reject those emails. Treat relay addresses like normal email addresses in the backend.

{% hint style="info" %}
This step is required when email is sent to customers who chose **Hide My Email**.

Apple returns a **relay email address**. Treat it like a real mailbox.
{% endhint %}

**Open the Services section**

* In **Certificates, Identifiers & Profiles**, click **Services** in the left menu.
* Click **Sign in with Apple for Email Communication**.
* Click **Configure**.

<figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FepEkquqXE1fI7pCSDQBP%2Fenroll-apple-sign-configure.png?alt=media&#x26;token=0b3eb4c9-0cfc-4386-81af-96e5be6b8434" alt="Configure"><figcaption><p>Check that Sign in with Apple for Email Communication is the section being configured.</p></figcaption></figure>

* Under **Email Sources**, click the **+** button to add a new email source.

<figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FFksR9cMQ8DGx1UlLeD2u%2Fenroll-apple-sign-email-sources.png?alt=media&#x26;token=a8002154-7709-4575-a975-095331137cf3" alt="Email Sources"><figcaption><p>Check that every sending domain and address appears under Email Sources.</p></figcaption></figure>

**Fill the form with:**

* **Domains and Subdomains**:\
  Add the domain(s) used to send email.\
  Example:

  ```
  myapp.com
  mail.myapp.com
  ```
* **Email Addresses**:\
  Add the sender email address(es) used by the application.\
  Example:

```
noreply@myapp.com
support@myapp.com
```

<figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FBxNTARJf4jAQDqSmxwRw%2Fenroll-apple-sign-fill-form.png?alt=media&#x26;token=5372fa81-7198-40db-914b-5f2fea735d6a" alt="Fill the form with"><figcaption><p>Check the domains and sender addresses before submitting the form.</p></figcaption></figure>

* Click **Next** and complete validation (SPF/DKIM verification if required).
  {% endstep %}
  {% endstepper %}

### Configure Apple in The Wallet Crew

1. On The Wallet Crew administration console, open:

<p align="center"><a href="https://admin.thewalletcrew.io/tenant/~/settings/social/apple" class="button secondary" data-icon="chevrons-right">Social Login → Apple</a></p>

<div data-with-frame="true"><figure><img src="https://831874859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlFokgwgJiwLXu7G8MVSJ%2Fuploads%2FfXNatUPmOfIY0BlVRHmj%2Fimage.png?alt=media&#x26;token=282cd58a-081b-4a7b-8b9a-109ffde50307" alt="The Wallet Crew - Apple Social Sign In configuration" width="563"><figcaption><p>The Wallet Crew - Apple Social Sign In configuration</p></figcaption></figure></div>

2. Fill the **Service ID** with the identifier used when creating the Service ID (example: `cloud.neostore.molia.service`).
3. Save.

{% hint style="info" %}
Paste the **Service ID** identifier.

Do not paste the App ID name or the Bundle ID.
{% endhint %}

### Enable Apple on the enrolment form

Enable the provider in the enrolment form settings.

Go into `advanced configuration -> Layout`. Open the layout where social sign-in should be activated and add these lines:

```yaml
signinOptions:
  providers:
    - type: apple
      displayProps:
        isMobile: true
        isIOS: true
```

For more information see [Enrolment form](/guides-enrolment/enrolment/enrolment-form.md).

### FAQ

<details>

<summary>Which domains do I need to add in Apple Developer?</summary>

Add every domain that can host the enrolment form.

Include prod, staging, dev, and any custom domain.

</details>

<details>

<summary>What should I put in “Return URLs”?</summary>

Add the callback URL for each environment and each form domain.

Keep it exact. Scheme, path, and trailing slash must match.

</details>

<details>

<summary>Why is only the customer’s email returned after the first login?</summary>

Apple only returns name fields on the first consent.

On later logins, Apple typically returns email only.

</details>

<details>

<summary>What is “Hide My Email” and what does it change?</summary>

Apple may return a relay email instead of the customer’s real email.

That can create duplicates when customers are matched by email only.

Apple’s reference: [Communicating Using the Private Email Relay Service](https://developer.apple.com/documentation/signinwithapple/communicating-using-the-private-email-relay-service/){target="\_blank"}.

</details>

<details>

<summary>Which value do I paste in The Wallet Crew admin: Bundle ID, App ID, or Service ID?</summary>

Paste the **Service ID**.

Example: `cloud.thewalletcrew.molia.service`.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.thewalletcrew.io/guides-enrolment/enrolment/enrolment-form/social-sign-in/apple-sign-in.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
