From a38577ad82b0cec22d134dd1d3f212bb37254fa7 Mon Sep 17 00:00:00 2001 From: Adam Grossman Date: Wed, 26 Aug 2026 16:35:39 -0700 Subject: [PATCH] Clarify Journeys GA allowlist behavior --- .../capabilities/analytics/devvit-journeys.md | 4 +-- .../analytics/journeys-receipts.md | 28 ++++++++++--------- .../capabilities/analytics/devvit-journeys.md | 4 +-- .../analytics/journeys-receipts.md | 28 ++++++++++--------- 4 files changed, 34 insertions(+), 30 deletions(-) diff --git a/docs/capabilities/analytics/devvit-journeys.md b/docs/capabilities/analytics/devvit-journeys.md index b383a518..a1da8225 100644 --- a/docs/capabilities/analytics/devvit-journeys.md +++ b/docs/capabilities/analytics/devvit-journeys.md @@ -134,7 +134,7 @@ Events must reflect **intentional, committed user actions**. ### App allowlist -Telemetry is restricted by a server-side allowlist. Only approved apps can emit journey events. Requests from non-allowlisted apps will get a message that the event was dropped. +Devvit Journeys is generally available, and apps do not need to be individually added to an allowlist to emit journey events. The telemetry service may still apply server-side controls, such as disabling telemetry or excluding an app. Check the receipt returned by each telemetry call: `JOURNEY_RECEIPT_VALID` means the event was accepted and recorded. See [Journeys Receipts](./journeys-receipts.md) for other outcomes. ### Platform constraints @@ -147,7 +147,7 @@ Here's how to implement journey tracking in your app. ### Permissions -Set Journeys permissions to `true` in `devvit.json`. +Set Journeys permissions to `true` in `devvit.json`. ``` "permissions": { diff --git a/docs/capabilities/analytics/journeys-receipts.md b/docs/capabilities/analytics/journeys-receipts.md index 3fd16dbe..e59daa59 100644 --- a/docs/capabilities/analytics/journeys-receipts.md +++ b/docs/capabilities/analytics/journeys-receipts.md @@ -33,10 +33,10 @@ Other Journey calls return: Covered calls: -- Start Journey -- Journey Progress -- Journey Interaction -- End Journey +- Start Journey +- Journey Progress +- Journey Interaction +- End Journey - App Ready ## Receipt fields @@ -45,6 +45,8 @@ Covered calls: `message` is the human-readable diagnostic. You can log it or display it during implementation/debugging. +Devvit Journeys is generally available, so apps do not need to request individual allowlist enrollment as part of normal setup. The server may still return a denied receipt when a server-side rollout or exclusion control applies. + ## Upgrade note for existing devs `startJourney()` changed from returning only the Journey ID information to returning the Journey ID plus a receipt. If you’re upgrading existing code, you may need to update any custom response types, mocks, or destructuring assumptions so they account for the new `receipt` field. @@ -63,14 +65,14 @@ For example, code that only typed the response as `{ journeyId: string }` should ## Possible receipt outcomes -| Status | Meaning | Current Message | -| :---- | :---- | :---- | -| `JOURNEY_RECEIPT_VALID` | Event was accepted and recorded. | `Success: Event was recorded.` | -| `JOURNEY_RECEIPT_DENIED_NOT_ALLOWLISTED` | Event was valid, but the app is not enabled for Journey telemetry yet. | `Denied: Your app is not allowlisted for Journey telemetry yet.` | -| `JOURNEY_RECEIPT_DENIED_RATE_LIMITED` | Event was valid, but skipped because the app sent too many events. | `Denied: Event was rate limited.` | -| `JOURNEY_RECEIPT_DENIED_DUPLICATE` | Event was valid, but skipped because it was already recorded. | `Denied: Event was already recorded.` | -| `JOURNEY_RECEIPT_INVALID` | Event payload was invalid and was not recorded. | `Invalid: Event payload was not recorded.` | -| `JOURNEY_RECEIPT_UNSPECIFIED` | Recording status could not be confirmed. | `Unknown: Telemetry recording status could not be confirmed.` | +| Status | Meaning | Current Message | +| :--------------------------------------- | :------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- | +| `JOURNEY_RECEIPT_VALID` | Event was accepted and recorded. | `Success: Event was recorded.` | +| `JOURNEY_RECEIPT_DENIED_NOT_ALLOWLISTED` | Event was valid, but Journey telemetry was not enabled for the app by a server-side control. | `Denied: Your app is not allowlisted for Journey telemetry yet.` | +| `JOURNEY_RECEIPT_DENIED_RATE_LIMITED` | Event was valid, but skipped because the app sent too many events. | `Denied: Event was rate limited.` | +| `JOURNEY_RECEIPT_DENIED_DUPLICATE` | Event was valid, but skipped because it was already recorded. | `Denied: Event was already recorded.` | +| `JOURNEY_RECEIPT_INVALID` | Event payload was invalid and was not recorded. | `Invalid: Event payload was not recorded.` | +| `JOURNEY_RECEIPT_UNSPECIFIED` | Recording status could not be confirmed. | `Unknown: Telemetry recording status could not be confirmed.` | Example: @@ -84,7 +86,7 @@ Example: } ``` -That receipt is an indicator to reach out to the Devvit team for allowlisting. After allowlist, the dev sees: +This receipt indicates that a server-side control prevented the event from being recorded. If you receive it unexpectedly, contact the Devvit team. After the control is removed, the dev sees: ```javascript { diff --git a/versioned_docs/version-0.13/capabilities/analytics/devvit-journeys.md b/versioned_docs/version-0.13/capabilities/analytics/devvit-journeys.md index b383a518..a1da8225 100644 --- a/versioned_docs/version-0.13/capabilities/analytics/devvit-journeys.md +++ b/versioned_docs/version-0.13/capabilities/analytics/devvit-journeys.md @@ -134,7 +134,7 @@ Events must reflect **intentional, committed user actions**. ### App allowlist -Telemetry is restricted by a server-side allowlist. Only approved apps can emit journey events. Requests from non-allowlisted apps will get a message that the event was dropped. +Devvit Journeys is generally available, and apps do not need to be individually added to an allowlist to emit journey events. The telemetry service may still apply server-side controls, such as disabling telemetry or excluding an app. Check the receipt returned by each telemetry call: `JOURNEY_RECEIPT_VALID` means the event was accepted and recorded. See [Journeys Receipts](./journeys-receipts.md) for other outcomes. ### Platform constraints @@ -147,7 +147,7 @@ Here's how to implement journey tracking in your app. ### Permissions -Set Journeys permissions to `true` in `devvit.json`. +Set Journeys permissions to `true` in `devvit.json`. ``` "permissions": { diff --git a/versioned_docs/version-0.13/capabilities/analytics/journeys-receipts.md b/versioned_docs/version-0.13/capabilities/analytics/journeys-receipts.md index 3fd16dbe..e59daa59 100644 --- a/versioned_docs/version-0.13/capabilities/analytics/journeys-receipts.md +++ b/versioned_docs/version-0.13/capabilities/analytics/journeys-receipts.md @@ -33,10 +33,10 @@ Other Journey calls return: Covered calls: -- Start Journey -- Journey Progress -- Journey Interaction -- End Journey +- Start Journey +- Journey Progress +- Journey Interaction +- End Journey - App Ready ## Receipt fields @@ -45,6 +45,8 @@ Covered calls: `message` is the human-readable diagnostic. You can log it or display it during implementation/debugging. +Devvit Journeys is generally available, so apps do not need to request individual allowlist enrollment as part of normal setup. The server may still return a denied receipt when a server-side rollout or exclusion control applies. + ## Upgrade note for existing devs `startJourney()` changed from returning only the Journey ID information to returning the Journey ID plus a receipt. If you’re upgrading existing code, you may need to update any custom response types, mocks, or destructuring assumptions so they account for the new `receipt` field. @@ -63,14 +65,14 @@ For example, code that only typed the response as `{ journeyId: string }` should ## Possible receipt outcomes -| Status | Meaning | Current Message | -| :---- | :---- | :---- | -| `JOURNEY_RECEIPT_VALID` | Event was accepted and recorded. | `Success: Event was recorded.` | -| `JOURNEY_RECEIPT_DENIED_NOT_ALLOWLISTED` | Event was valid, but the app is not enabled for Journey telemetry yet. | `Denied: Your app is not allowlisted for Journey telemetry yet.` | -| `JOURNEY_RECEIPT_DENIED_RATE_LIMITED` | Event was valid, but skipped because the app sent too many events. | `Denied: Event was rate limited.` | -| `JOURNEY_RECEIPT_DENIED_DUPLICATE` | Event was valid, but skipped because it was already recorded. | `Denied: Event was already recorded.` | -| `JOURNEY_RECEIPT_INVALID` | Event payload was invalid and was not recorded. | `Invalid: Event payload was not recorded.` | -| `JOURNEY_RECEIPT_UNSPECIFIED` | Recording status could not be confirmed. | `Unknown: Telemetry recording status could not be confirmed.` | +| Status | Meaning | Current Message | +| :--------------------------------------- | :------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- | +| `JOURNEY_RECEIPT_VALID` | Event was accepted and recorded. | `Success: Event was recorded.` | +| `JOURNEY_RECEIPT_DENIED_NOT_ALLOWLISTED` | Event was valid, but Journey telemetry was not enabled for the app by a server-side control. | `Denied: Your app is not allowlisted for Journey telemetry yet.` | +| `JOURNEY_RECEIPT_DENIED_RATE_LIMITED` | Event was valid, but skipped because the app sent too many events. | `Denied: Event was rate limited.` | +| `JOURNEY_RECEIPT_DENIED_DUPLICATE` | Event was valid, but skipped because it was already recorded. | `Denied: Event was already recorded.` | +| `JOURNEY_RECEIPT_INVALID` | Event payload was invalid and was not recorded. | `Invalid: Event payload was not recorded.` | +| `JOURNEY_RECEIPT_UNSPECIFIED` | Recording status could not be confirmed. | `Unknown: Telemetry recording status could not be confirmed.` | Example: @@ -84,7 +86,7 @@ Example: } ``` -That receipt is an indicator to reach out to the Devvit team for allowlisting. After allowlist, the dev sees: +This receipt indicates that a server-side control prevented the event from being recorded. If you receive it unexpectedly, contact the Devvit team. After the control is removed, the dev sees: ```javascript {