diff --git a/bun.lock b/bun.lock
index 5d46cd05..39ad79db 100644
--- a/bun.lock
+++ b/bun.lock
@@ -1,6 +1,5 @@
{
"lockfileVersion": 1,
- "configVersion": 0,
"workspaces": {
"": {
"name": "superwall-docs",
@@ -45,6 +44,7 @@
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^5.1.4",
+ "next-validate-link": "^1.6.4",
"oxfmt": "^0.36.0",
"oxlint": "^1.51.0",
"srvx": "^0.11.8",
@@ -1256,6 +1256,8 @@
"next-themes": ["next-themes@0.4.6", "", { "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA=="],
+ "next-validate-link": ["next-validate-link@1.6.4", "", { "dependencies": { "gray-matter": "^4.0.3", "picocolors": "^1.1.1", "remark": "^15.0.1", "remark-gfm": "^4.0.1", "remark-mdx": "^3.1.1", "tinyglobby": "^0.2.15", "unist-util-visit": "^5.0.0" } }, "sha512-wR/VKyJlaTbUT5k1uujEnk6O616YtWGt52s9FJa3tRCQ2qL2TGFTAklXJ0QdX1NTAEeP6rGFOTtHEDwveFrc2g=="],
+
"node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="],
"normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="],
diff --git a/content/docs/advanced-paywall-creation.mdx b/content/docs/advanced-paywall-creation.mdx
index 16acb620..1302b544 100644
--- a/content/docs/advanced-paywall-creation.mdx
+++ b/content/docs/advanced-paywall-creation.mdx
@@ -4,7 +4,7 @@ title: "External Paywall Creation"
The legacy editor is deprecated. Please visit the docs covering our new
- [editor](/paywall-editor-overview).
+ [editor](/dashboard/dashboard-creating-paywalls/paywall-editor-overview).
The following is only necessary if you're looking to build your own paywall website outside of Superwall. We strongly recommend using the paywall editor or templates instead.
@@ -24,7 +24,7 @@ There are seven different types of data tag:
| data-pw-purchase | Either primary, secondary, or tertiary. | This relates to your primary, secondary, or tertiary product set up in the Superwall dashboard respectively. When the tagged element is tapped, it tells the SDK to initialize a purchase of the specified product. |
| data-pw-open-url | A valid url. E.g.` .` | Normal href links do not work in a paywall. However, attaching this tag to an element opens the provided url. |
| data-pw-open-deep-link | A valid deep link url. E.g. fb://profile/33138223345. | Opens a deeplink from a button on a paywall. |
-| data-pw-custom | A name for a custom action | When the tagged element is tapped, the SDK calls its delegate method handleCustomPaywallAction(withName:). The value you provide is passed to the function, from which you can perform custom logic. Check out [Custom Paywall Buttons](/docs/custom-paywall-events) for more. |
+| data-pw-custom | A name for a custom action | When the tagged element is tapped, the SDK calls its delegate method handleCustomPaywallAction(withName:). The value you provide is passed to the function, from which you can perform custom logic. Check out [Custom Paywall Buttons](/sdk/guides/advanced/custom-paywall-actions) for more. |
| data-pw-skip-inner-html | true | This prevents an element's text from being edited. It tells Paywall.js to keep looking into the element's children for more data-pw-var tags. This is useful when you want to hide a whole section or edit the style of a container, rather than edit its text. |
Here are a few examples of what data tags look like in the webpage HTML:
diff --git a/content/docs/android/guides/web-checkout/linking-membership-to-iOS-app.mdx b/content/docs/android/guides/web-checkout/linking-membership-to-iOS-app.mdx
index bd9012ed..7b44df78 100644
--- a/content/docs/android/guides/web-checkout/linking-membership-to-iOS-app.mdx
+++ b/content/docs/android/guides/web-checkout/linking-membership-to-iOS-app.mdx
@@ -4,13 +4,13 @@ description: "Handle a deep link in your app and use the delegate methods."
---
After purchasing from a web paywall, the user will be redirected to your app by a deep link to redeem their purchase on device.
-Please follow our [Post-Checkout Redirecting](/web-checkout-post-checkout-redirecting) guide to handle this user experience.
+Please follow our [Post-Checkout Redirecting](/android/guides/web-checkout/post-checkout-redirecting) guide to handle this user experience.
If you're using Superwall to handle purchases, then you don't need to do anything here.
-If you're using your own `PurchaseController`, you will need to update the subscription status with the redeemed web entitlements. If you're using RevenueCat, you should follow our [Using RevenueCat](/web-checkout-using-revenuecat) guide.
+If you're using your own `PurchaseController`, you will need to update the subscription status with the redeemed web entitlements. If you're using RevenueCat, you should follow our [Using RevenueCat](/android/guides/web-checkout/using-revenuecat) guide.
### Using a PurchaseController
@@ -98,4 +98,4 @@ If you aren't using a Purchase Controller, the SDK will refresh the web entitlem
### Redeeming while a paywall is open
-If a redeem event occurs when a paywall is open, the SDK will track that as a restore event and the paywall will close.
\ No newline at end of file
+If a redeem event occurs when a paywall is open, the SDK will track that as a restore event and the paywall will close.
diff --git a/content/docs/android/guides/web-checkout/post-checkout-redirecting.mdx b/content/docs/android/guides/web-checkout/post-checkout-redirecting.mdx
index 6bd786fe..f2f1398f 100644
--- a/content/docs/android/guides/web-checkout/post-checkout-redirecting.mdx
+++ b/content/docs/android/guides/web-checkout/post-checkout-redirecting.mdx
@@ -7,7 +7,7 @@ After a user completes a web purchase, Superwall needs to redirect them back to
## Post-Purchase Behavior Modes
-You can configure how users are redirected after checkout in your [Application Settings](/web-checkout-configuring-stripe-keys-and-settings#post-purchase-behavior):
+You can configure how users are redirected after checkout in your [Application Settings](/web-checkout/web-checkout-configuring-stripe-keys-and-settings#post-purchase-behavior):
### Redeem Mode (Default)
@@ -49,15 +49,15 @@ You'll need to implement your own logic to handle the redirect and deep link use
Whether you're showing a checkout page in a browser or using the In-App Browser, the Superwall SDK relies on deep links to redirect back to your app.
#### Prerequisites
-1. [Configuring Stripe Keys and Settings](/web-checkout-configuring-stripe-keys-and-settings)
-2. [Deep Links](/in-app-paywall-previews)
+1. [Configuring Stripe Keys and Settings](/web-checkout/web-checkout-configuring-stripe-keys-and-settings)
+2. [Deep Links](/android/quickstart/in-app-paywall-previews)
If you're not using Superwall to handle purchases, then you'll need to follow extra steps to redeem the web purchase in your app.
-- [Using RevenueCat](/web-checkout-using-revenuecat)
-- [Using a PurchaseController](/web-checkout-linking-membership-to-iOS-app#using-a-purchasecontroller)
+- [Using RevenueCat](/android/guides/web-checkout/using-revenuecat)
+- [Using a PurchaseController](/android/guides/web-checkout/linking-membership-to-iOS-app#using-a-purchasecontroller)
---
@@ -134,4 +134,4 @@ class SWDelegate : SuperwallDelegate {
}
}
}
-```
\ No newline at end of file
+```
diff --git a/content/docs/android/guides/web-checkout/using-revenuecat.mdx b/content/docs/android/guides/web-checkout/using-revenuecat.mdx
index 9002e7de..70fd6a0d 100644
--- a/content/docs/android/guides/web-checkout/using-revenuecat.mdx
+++ b/content/docs/android/guides/web-checkout/using-revenuecat.mdx
@@ -3,7 +3,7 @@ title: "Using RevenueCat"
description: "Handle a deep link in your app and use the delegate methods to link web checkouts with RevenueCat."
---
-After purchasing from a web paywall, the user will be redirected to your app by a deep link to redeem their purchase on device. Please follow our [Post-Checkout Redirecting](/web-checkout-post-checkout-redirecting) guide to handle this user experience.
+After purchasing from a web paywall, the user will be redirected to your app by a deep link to redeem their purchase on device. Please follow our [Post-Checkout Redirecting](/android/guides/web-checkout/post-checkout-redirecting) guide to handle this user experience.
If you're using Superwall to handle purchases, then you don't need to do anything here.
@@ -11,7 +11,7 @@ After purchasing from a web paywall, the user will be redirected to your app by
You only need to use a `PurchaseController` if you want end-to-end control of the purchasing pipeline. The recommended way to use RevenueCat with Superwall is by putting it in observer mode.
-If you're using your own `PurchaseController`, you should follow our [Redeeming In-App](/web-checkout-linking-membership-to-iOS-app) guide.
+If you're using your own `PurchaseController`, you should follow our [Redeeming In-App](/android/guides/web-checkout/linking-membership-to-iOS-app) guide.
### Using a PurchaseController with RevenueCat
@@ -136,4 +136,4 @@ class SWDelegate : SuperwallDelegate {
The web entitlements will be returned along with other existing entitlements in the `CustomerInfo` object accessible via RevenueCat's SDK.
-If you're logging in and out of RevenueCat, make sure to resend the Stripe subscription IDs to RevenueCat's endpoint after logging in.
\ No newline at end of file
+If you're logging in and out of RevenueCat, make sure to resend the Stripe subscription IDs to RevenueCat's endpoint after logging in.
diff --git a/content/docs/android/quickstart/tracking-subscription-state.mdx b/content/docs/android/quickstart/tracking-subscription-state.mdx
index 6d7507f8..1002c7ae 100644
--- a/content/docs/android/quickstart/tracking-subscription-state.mdx
+++ b/content/docs/android/quickstart/tracking-subscription-state.mdx
@@ -272,7 +272,7 @@ class MyApplication : Application() {
## Superwall checks subscription status for you
-Remember that the Superwall SDK uses its [audience filters](/campaigns-audience#matching-to-entitlements) for determining when to show paywalls. You generally don't need to wrap your calls to register placements with subscription status checks:
+Remember that the Superwall SDK uses its [audience filters](/dashboard/dashboard-campaigns/campaigns-audience#matching-to-entitlements) for determining when to show paywalls. You generally don't need to wrap your calls to register placements with subscription status checks:
```kotlin
// ❌ Unnecessary
@@ -284,4 +284,4 @@ if (Superwall.instance.subscriptionStatus.value !is SubscriptionStatus.Active) {
Superwall.instance.register("campaign_trigger")
```
-In your [audience filters](/campaigns-audience#matching-to-entitlements), you can specify whether the subscription state should be considered, which keeps your codebase cleaner and puts the "Should this paywall show?" logic where it belongs—in the Superwall dashboard.
+In your [audience filters](/dashboard/dashboard-campaigns/campaigns-audience#matching-to-entitlements), you can specify whether the subscription state should be considered, which keeps your codebase cleaner and puts the "Should this paywall show?" logic where it belongs—in the Superwall dashboard.
diff --git a/content/docs/configuring-a-paywall.mdx b/content/docs/configuring-a-paywall.mdx
index 64808ebe..3203ff13 100644
--- a/content/docs/configuring-a-paywall.mdx
+++ b/content/docs/configuring-a-paywall.mdx
@@ -6,7 +6,7 @@ description: "Superwall maintains a growing list of paywall templates for you to
The legacy editor is deprecated. Please visit the docs covering our new
- [editor](/paywall-editor-overview).
+ [editor](/dashboard/dashboard-creating-paywalls/paywall-editor-overview).
On the Superwall dashboard under **Paywalls**, click **\+ New Paywall** and select **From Template**:
diff --git a/content/docs/dashboard/dashboard-campaigns/campaign-rules.mdx b/content/docs/dashboard/dashboard-campaigns/campaign-rules.mdx
index 88916445..f81b8d9b 100644
--- a/content/docs/dashboard/dashboard-campaigns/campaign-rules.mdx
+++ b/content/docs/dashboard/dashboard-campaigns/campaign-rules.mdx
@@ -4,7 +4,7 @@ description: "Rules allow you to decide _which users_ see a paywall."
---
- This page is outdated. Please visit this [one](/campaigns-audience) for the most relevant
+ This page is outdated. Please visit this [one](/dashboard/dashboard-campaigns/campaigns-audience) for the most relevant
information.