Skip to content

feat: Auth0 Identity Conversion Suite - #1870

Open
BcnCarlos wants to merge 47 commits into
mainfrom
Update-anonymous-sessons-EA
Open

BcnCarlos wants to merge 47 commits into
mainfrom
Update-anonymous-sessons-EA

Conversation

@BcnCarlos

@BcnCarlos BcnCarlos commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Summary

  1. Create new doc for Auth0 Identity Conversion Suite

  2. Update Experiment Center docs to EA

  3. Update Anonymous Sessions docs to EA, add custom claims doc.

Test plan

  • Review rendered Mintlify preview for the four changed/new pages
  • Confirm mermaid diagrams render correctly (transfer-ticket sequence diagram)
  • Confirm the new page appears in navigation under Anonymous Sessions
  • Link checker passes with no new broken fragments

🤖 Generated with Claude Code

Fixes several gaps found comparing our anonymous sessions docs against
the Anonymous Sessions Architecture & Implementation Guide and the
Management API OAS artifact:

- anonymous-sessions.mdx: document the transfer-ticket mechanism for
  cross-domain session transfer (anon_transfer_token), the ROPG
  transfer scenario, and the lack of server-side session invalidation.
  Removed an unverified Auth0-Anonymous-Session header example not
  present in the OAS or the architecture guide.
- configure-anonymous-sessions.mdx: add Dashboard instructions
  alongside the existing Management API steps for tenant, application,
  API, and client-grant configuration. Fixed the resource-server PATCH
  example, which included allow_anonymous_access — a field that does
  not exist in the Management API schema (additionalProperties: false
  on UpdateResourceServerRequestContent). Added the missing
  activate_cookie parameter and corrected the example lifetime value
  to match our own 30-day-or-longer best practice guidance.
- configure-custom-claims-for-anonymous-sessions.mdx (new): documents
  Claims Mapping, which lets an API map anonymous_session.metadata
  fields directly into access token custom claims, since anonymous
  sessions have no post-login Action execution to call
  setCustomClaim(). Registered in manage-users.json navigation.
@BcnCarlos
BcnCarlos requested a review from a team as a code owner September 12, 2026 13:30
@mintlify

mintlify Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
auth0 🟢 Ready View Preview Sep 17, 2026, 3:07 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

@mintlify

mintlify Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
auth0-docs-dev 🟢 Ready View Preview Sep 16, 2026, 4:55 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

@mintlify

mintlify Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
auth0-docs-staging 🟢 Ready View Preview Sep 16, 2026, 4:55 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Status Count
🔍 Total 75
🔗 Unique 48
✅ Successful 61
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 14
⛔ Unsupported 0

Errors per input

Errors in main/docs/customize/experiment-center.mdx

  • [ERROR] </docs/customize/login-pages/advanced-customizations#advanced-customizations-for-universal-login-acul> (at 74:1) | Cannot find fragment
  • [ERROR] </docs/customize/login-pages/universal-login/customize-templates#customize-universal-login-page-templates> (at 77:57) | Cannot find fragment

Errors in main/docs/customize/experiment-center/integrations/actions-integration-guide.mdx

  • [ERROR] </docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger> (at 23:3) | File not found. Check if file exists and path is correct
  • [ERROR] </docs/customize/actions/explore-triggers/signup-and-login-triggers/post-user-registration-trigger> (at 25:3) | File not found. Check if file exists and path is correct
  • [ERROR] </docs/customize/actions/explore-triggers/signup-and-login-triggers/pre-user-registration-trigger> (at 24:3) | File not found. Check if file exists and path is correct

Errors in main/docs/customize/experiment-center/integrations/page-templates-integration-guide.mdx

  • [ERROR] </docs/customize/login-pages/universal-login/customize-templates#customize-universal-login-page-templates> (at 16:117) | Cannot find fragment

Errors in main/docs/manage-users/sessions/anonymous-sessions.mdx

  • [ERROR] </docs/customize/actions/explore-triggers/password-reset-triggers#password-reset-triggers> (at 195:3) | File not found. Check if file exists and path is correct
  • [ERROR] </docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger> (at 119:209) | File not found. Check if file exists and path is correct
  • [ERROR] </docs/customize/actions/explore-triggers/signup-and-login-triggers/pre-user-registration-trigger> (at 119:81) | File not found. Check if file exists and path is correct

Errors in main/docs/manage-users/sessions/anonymous-sessions/anonymous-sessions-use-cases.mdx

  • [ERROR] </docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger> (at 100:15) | File not found. Check if file exists and path is correct
  • [ERROR] </docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger> (at 131:15) | File not found. Check if file exists and path is correct
  • [ERROR] </docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger> (at 68:15) | File not found. Check if file exists and path is correct
  • [ERROR] </docs/customize/actions/explore-triggers/signup-and-login-triggers/pre-user-registration-trigger> (at 36:15) | File not found. Check if file exists and path is correct

Errors in main/docs/manage-users/sessions/anonymous-sessions/configure-custom-claims-for-anonymous-sessions.mdx

  • [ERROR] </docs/actions/reference/credentials-exchange/credentials-exchange-api-object#api-accesstoken-setcustomclaim-key-value> (at 16:400) | Cannot find fragment

Full Github Actions output

Run on commit ad8961b.

The #update-the-session-with-metadata anchor never existed in
configure-anonymous-sessions.mdx, and no such update flow is
documented in the Management API OAS or the architecture guide.
Dropped the dangling fragment link rather than invent a heading for
behavior that isn't documented.
- Remove all em dashes per house style ("use sparingly") and per
  reviewer preference; replaced with periods or restructured
  sentences.
- Remove "etc." (banned; use "such as" instead) and a stray trailing
  quote mark left over from a prior edit.
- Fix heading nesting: anonymous-sessions.mdx had five levels of
  heading (##### ), exceeding the 3-level max. Flattened "Transfer
  anonymous session data..." to ###/#### and merged the redirect-flow
  intro into prose.
- Fix gerund headings ("Transferring a session...", "Configuring
  Claims Mapping") to simple tense ("Transfer a session...",
  "Configure Claims Mapping"), and updated the one internal anchor
  link affected by the heading rename.
- Replace curly-brace placeholders ({{anon_sessions_clientid}}) and
  angle-bracket placeholders (<username>, <password>, etc.) in code
  examples with ALL_CAPS YOUR_ prefixed placeholders, per the
  placeholder convention.
- Use the baseline cross-reference format ("To learn more, read
  [article]") instead of "see [link]".
Matches the pattern used by Social Identity Providers: the overview
page becomes the group's root instead of a duplicate first child
entry in the sidebar.
…ty-providers pattern

Moves experiment-center/overview.mdx to customize/experiment-center.mdx
(sibling to the experiment-center/ directory) and uses it as the nav
group's root, removing the redundant overview entry in the sidebar.
Adds a redirect from the old /overview URL to the new root URL.
Removes the standalone quickstart.mdx and its three references
(the Learn more section in experiment-center.mdx, the CardGroup in
entities.mdx, and the navigation entry). The entities.mdx Learn more
section now shows the ACUL integration guide as a single card rather
than a two-up CardGroup.
Adds a public overview of the Identity Conversion Suite, which
bundles Anonymous Sessions and Experiment Center. Sourced from an
internal sales enablement deck; omits pricing, customer names, and
other internal-only content, and links out to the existing Anonymous
Sessions and Experiment Center docs rather than duplicating them.
Points to /docs/customize/experiment-center instead of the old
/overview path, now that the overview page has moved to root.
BcnCarlos and others added 3 commits September 17, 2026 10:22
Converts the ### Auth0 Dashboard / ### Auth0 Management API pair
under 'Configure claims mapping' into a <Tabs> block, matching the
pattern used in configure-anonymous-sessions.mdx.
Co-authored-by: Hazel Virdó <hazel.virdo@okta.com>
Co-authored-by: Hazel Virdó <hazel.virdo@okta.com>
BcnCarlos and others added 2 commits September 17, 2026 10:30
Co-authored-by: Hazel Virdó <hazel.virdo@okta.com>
…ustom-claims-for-anonymous-sessions.mdx

Co-authored-by: Hazel Virdó <hazel.virdo@okta.com>
… Suite

Matches the Next steps pattern used in android-overview.mdx and
experiment-center/entities.mdx.
'diluted into in the avearge' -> 'diluted into the average', and
'experiment Center' -> 'Experiment Center'.
…rsion Suite docs

Removes terms="true" from all 10 ReleaseStageNotice blocks in the
Identity Conversion Suite, Experiment Center, and Anonymous Sessions
docs, keeping stage, plans, and contact.
The quickstart.mdx page was removed earlier in this PR; redirect its
old URL to the Experiment Center overview.
- configure-custom-claims-for-anonymous-sessions.mdx: drop "Learn how
  to" from the frontmatter description, remove a stray blank line,
  and remove a comma before "and include" for a smoother read.
- anonymous-sessions.mdx: remove the "How it works" H2, which had no
  content of its own, and promote its children up a level (H3->H2,
  H4->H3). This also flattens the deepest heading nesting from 4
  levels to 3.
- Add "directory": "accordion" to the Anonymous Sessions nav group
  and remove the manual "Learn more" bullet list from
  anonymous-sessions.mdx, since it's now the group's root and
  Mintlify auto-renders sibling links via the directory listing,
  matching the User Search group's convention.
Adds "directory": "accordion" to the Experiment Center nav group,
matching the Anonymous Sessions convention, and removes the manual
Learn more section from experiment-center.mdx now that Mintlify
auto-renders sibling links via the directory listing.
Converts the Next steps / Learn more bullet-link lists in
configure-anonymous-sessions.mdx, configure-custom-claims-for-anonymous-sessions.mdx,
and anonymous-sessions-use-cases.mdx into Card / CardGroup components,
matching the pattern used in android-overview.mdx,
identity-conversion-suite.mdx, and experiment-center/entities.mdx.
Matches the Card layout convention used in
customize/portals/overview.mdx.
…tion guides

- Replace em dashes with commas in 4 example headings and 1 code
  comment, per house style ('use sparingly').
- Standardize the 4 example headings to the same 'Example: <trigger>,
  <description>' format; one was missing its colon.

@hazel-nut hazel-nut left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some copyediting, lgtm!


In an [anonymous sessions](/docs/manage-users/sessions/anonymous-sessions) context, there is no login, and therefore no `post-login` Action execution. This removes the opportunity to add custom claims to the access token the usual way, leaving APIs that expect those claims unable to read them.

To solve this, Auth0 provides **Claims Mapping**: a direct translation between an anonymous session's metadata and the access tokens issued for it. For example, given a session that contains:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
To solve this, Auth0 provides **Claims Mapping**: a direct translation between an anonymous session's metadata and the access tokens issued for it. For example, given a session that contains:
To solve this, Auth0 provides claims mapping, which is a direct translation between an anonymous session's metadata and the access tokens issued for it. For example, given a session that contains:

@@ -0,0 +1,85 @@
---
title: Configure Custom Claims for Anonymous Sessions
description: Map anonymous session metadata into access token custom claims using Claims Mapping.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description: Map anonymous session metadata into access token custom claims using Claims Mapping.
description: Map anonymous session metadata into access token custom claims using claims mapping.

</Warning>

## How it works
**How it works**

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**How it works**

Comment on lines +16 to +18
Sometimes your resource servers need additional information passed to them, but an [access token](/docs/secure/tokens/access-tokens) is the only thing you are passing along. Auth0 lets you enrich access tokens with [custom claims](/docs/secure/tokens/json-web-tokens/create-custom-claims) whenever your resource server needs more information about the user interacting with it, typically by calling [`api.accessToken.setCustomClaim()`](/docs/actions/reference/credentials-exchange/credentials-exchange-api-object#api-accesstoken-setcustomclaim-key-value) in a [`post-login`](/docs/customize/actions/explore-triggers/post-login) Action.

In an [anonymous sessions](/docs/manage-users/sessions/anonymous-sessions) context, there is no login, and therefore no `post-login` Action execution. This removes the opportunity to add custom claims to the access token the usual way, leaving APIs that expect those claims unable to read them.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Sometimes your resource servers need additional information passed to them, but an [access token](/docs/secure/tokens/access-tokens) is the only thing you are passing along. Auth0 lets you enrich access tokens with [custom claims](/docs/secure/tokens/json-web-tokens/create-custom-claims) whenever your resource server needs more information about the user interacting with it, typically by calling [`api.accessToken.setCustomClaim()`](/docs/actions/reference/credentials-exchange/credentials-exchange-api-object#api-accesstoken-setcustomclaim-key-value) in a [`post-login`](/docs/customize/actions/explore-triggers/post-login) Action.
In an [anonymous sessions](/docs/manage-users/sessions/anonymous-sessions) context, there is no login, and therefore no `post-login` Action execution. This removes the opportunity to add custom claims to the access token the usual way, leaving APIs that expect those claims unable to read them.
When your resource servers need additional information about a user but you are only passing along an [access token](/docs/secure/tokens/access-tokens), you can augment the access token with [custom claims](/docs/secure/tokens/json-web-tokens/create-custom-claims) to store additional data.
A common way to set a custom claim is by calling [`api.accessToken.setCustomClaim()`](/docs/actions/reference/credentials-exchange/credentials-exchange-api-object#api-accesstoken-setcustomclaim-key-value) in a [`post-login`](/docs/customize/actions/explore-triggers/post-login) Action. However, in an [anonymous sessions](/docs/manage-users/sessions/anonymous-sessions) context, there is no login, and therefore no `post-login` Action execution.

just a suggestion for brevity :)

To set the anonymous sessions lifetime, make a `PATCH` request to the [`/api/v2/tenants/settings`](/docs/api/management/v2/tenants/patch-settings) endpoint:
![The Tenant settings page in the Auth0 Dashboard](/docs/images/sessions/anonymous_sessions/anonymous_sessions.png)

2. Enter a value for the **Anonymous Session Lifetime**, in minutes.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
2. Enter a value for the **Anonymous Session Lifetime**, in minutes.
2. Enter a value for the **Anonymous Session Lifetime** in minutes.


Auth0 does not offer server-side invalidation for anonymous sessions. Logging out a session only cleans up the anonymous session cookie. If the browser or application retains the token after the cookie is cleaned up, that token can still be used normally.

If you want more control over anonymous sessions, you can configure your tenant to not issue cookies for anonymous sessions at all. To learn more, read [Configure Anonymous Sessions](/docs/manage-users/sessions/anonymous-sessions/configure-anonymous-sessions#configure-anonymous-sessions).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If you want more control over anonymous sessions, you can configure your tenant to not issue cookies for anonymous sessions at all. To learn more, read [Configure Anonymous Sessions](/docs/manage-users/sessions/anonymous-sessions/configure-anonymous-sessions#configure-anonymous-sessions).
If you want more control over anonymous sessions, you can [configure your tenant to not issue cookies for anonymous sessions](/docs/manage-users/sessions/anonymous-sessions/configure-anonymous-sessions) at all.

<Tabs>
<Tab title="Auth0 Dashboard">
1. Navigate to [**Dashboard > Applications > APIs**](https://manage.auth0.com/#/apis), and select the API you want to configure.
2. Scroll to the **Access token expiration** section and set the **Anonymous Access Token Lifetime**, in seconds. The minimum is one day and the maximum is 30 days.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
2. Scroll to the **Access token expiration** section and set the **Anonymous Access Token Lifetime**, in seconds. The minimum is one day and the maximum is 30 days.
2. In the **Access token expiration** section, set the **Anonymous Access Token Lifetime** in seconds. The minimum is one day and the maximum is 30 days.

maybe we can say what one day and 30 days are in seconds given the requirement?


![The API settings page in the Auth0 Dashboard](/docs/images/sessions/anonymous_sessions/anonymous_sessions_api.png)

3. Scroll to **Application Access Policy**, and set the **Anonymous Access** policy to **Per-app authorization** to enable anonymous sessions using this audience for their access tokens.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
3. Scroll to **Application Access Policy**, and set the **Anonymous Access** policy to **Per-app authorization** to enable anonymous sessions using this audience for their access tokens.
3. Under **Application Access Policy**, set the **Anonymous Access** policy to **Per-app authorization** to enable anonymous sessions using this audience for their access tokens.

i had learned phrasal verbs because are tough for non-native speakers, so removing or replacing them with single word verbs (scroll to -> find, fill in -> enter) is more accessible

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DO NOT MERGE Only the PR author should merge, even if approved. main-docs Changes related to auth0's main docs (https://auth0.com/docs)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants