Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions apps/portal/src/app/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,10 @@ export const connectLinks: Array<{
] as const;

const apisLinks = [
{
name: "Nebula",
href: "/nebula/api-reference",
},
{
name: "Insight",
href: "https://insight.thirdweb.com/reference",
Expand All @@ -139,11 +143,7 @@ const apisLinks = [
const supportLinks = [
{
name: "Get thirdweb support",
href: "https://thirdweb.com/support",
},
{
name: "Knowledge Base",
href: "https://support.thirdweb.com",
href: "/knowledge-base",
},
{
name: "Contact Sales",
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
68 changes: 68 additions & 0 deletions apps/portal/src/app/knowledge-base/get-started/page.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import { WalletIcon, FileIcon, MessageCircleIcon, BracesIcon, BotIcon, BlocksIcon } from "lucide-react";
import { DocImage, createMetadata, FeatureCard, GithubTemplateCard, Stack, Grid, ArticleCard, ArticleIconCard } from "@doc";
import { ExternalLink } from "lucide-react";

export const metadata = createMetadata({
title: "thirdweb Knowledge Base",

description:
"This Knowledge Base collects concise guides and troubleshooting tips for common web3 development challenges—especially when using thirdweb, but many articles apply to any web3 project.",
});

# Welcome to thirdweb Support!

This section shows you how to leverage our Knowledge Base, request support, and understand our response process.

---

## 1. thirdweb Resources

Before opening a support ticket, check these resources:

- **Documentation:** [thirdweb Docs](https://portal.thirdweb.com/)
- **Changelog:** Stay up to date with our latest releases: [thirdweb Changelog](https://portal.thirdweb.com/changelog)
- **Status Page:** [thirdweb Status](https://status.thirdweb.com/)
- **Guides & Troubleshooting:** Explore tutorials and tips: [thirdweb Guides](https://blog.thirdweb.com/guides/)
- **Templates:** [thirdweb Starters](https://github.com/thirdweb-example/)
- **Video Tutorials:** [YouTube](https://www.youtube.com/@thirdweb_)
- **Playground:** Test live in [thirdweb Playground](https://playground.thirdweb.com/)

---

## 2. How to Request Support

- **Submit a ticket** through our system: [thirdweb.com/support](https://thirdweb.com/support).
- Our team operates **worldwide** and will respond **as soon as possible**.
- *Response times may vary depending on issue severity and priority.*
- We’ll keep you updated on your ticket’s progress.
- For faster resolution, please include a minimal reproduction with step-by-step instructions.
- Found an issue in our open-source code? Submit a PR: [thirdweb-dev/js](https://github.com/thirdweb-dev/js).

---

## 3. Response Time Expectations

### Starter Plan

- Estimated response time: **3 business days**.
- We aim to respond sooner when possible.

### Growth Plan & Accelerate Customers

- Estimated response time: **Within 48 business hours**.

### Scale & Pro Plans

- Estimated response time: **Within 2 business hours**.
- Customers on the **Scale** or **Pro** plans get a **dedicated Slack channel or Telegram group**.

---

## Need Help?

You can [submit a ticket](https://thirdweb.com/support), and we’ll be happy to help you!





Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { DocImage, Step, Steps } from "@doc";
import ScreenshotConsole from "../../assets/screenshot-console.png";
import TabConsole from "../../assets/tab-console.png";
import Inspect from "../../assets/inspect-console.png";

# How to share your console log errors

Follow these steps to capture and share your browser console errors:

<Steps>

<Step title="Open your app">
Navigate to the page where you’re seeing errors.
</Step>

<Step title="Inspect the page">
Right-click and choose **Inspect** (or **Inspect Element**) to open DevTools.
<DocImage src={Inspect} />
</Step>

<Step title="Switch to the Console">
Click on the **Console** tab to view logs and errors.
<DocImage src={TabConsole} />
</Step>

<Step title="Capture the error">
Screenshot any red error messages in **Console**.
<DocImage src={ScreenshotConsole} />
</Step>

<Step title="Share with us">
Send your screenshots to our support team.
</Step>

</Steps>


By following these steps, you’ll give us the full error context so we can resolve your issue quickly.

---


Still stuck? [**Contact our support team**](https://thirdweb.com/support)

Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { DocImage } from "@doc";
import Soulbound from "../../assets/soulbound-explorer.png";
import Permissions from "../../assets/permissions-soulbound.png";

# What is a Soulbound Token

Let’s first understand what a Soulbound Token (SBT) is:

A **Soulbound Token** is a unique digital asset that cannot be transferred to another wallet. Once minted, it remains permanently tied to the owner’s wallet—perfect for credentials, achievement badges, or any on-chain proof of identity.

## How to make your tokens Soulbound or Non-Transferrable

The easiest way is via the **Permissions** tab on your thirdweb contract dashboard. For a visual walkthrough, check out our [guide on making NFTs non-transferable](https://blog.thirdweb.com/guides/make-your-nft-non-transferable/?utm_source=dc).

If you prefer using the **Explorer**, follow these steps:

1. **Connect your wallet**
Ensure your wallet is connected to the Dashboard/Explorer and set to the same network as your contract.

2. **Select the correct network**
Verify the network selector (top-right) matches your contract’s deployment chain (e.g., Ethereum Mainnet, Goerli).

3. **Open the Explorer**
In the thirdweb Dashboard, select your contract and switch to the **Explorer** tab.

4. **Choose `revokeRole` under write**
The `revokeRole` function requires two inputs: **Role** and **Account**.

5. **Convert `TRANSFER_ROLE` to bytes32**
Use a [keccak256 tool](https://emn178.github.io/online-tools/keccak_256.html) to hash the string `TRANSFER_ROLE`, then prefix with `0x`.
For example:
`0x8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c`

6. **Set the account to the zero address**
Enter `0x0000000000000000000000000000000000000000` to revoke transfer rights from every wallet.

7. **Confirm the on-chain transaction**
Click “write” and approve the transaction in your wallet.

<DocImage src={Soulbound} />

8. **Verify in Permissions**
Refresh the **Permissions** tab to confirm that `TRANSFER_ROLE` is revoked for the zero address.

<DocImage src={Permissions} />

That’s it—your tokens are officially soulbound!
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import { DocImage } from "@doc";
import deployGithub from "../../assets/deploy-github.png";
import newProject from "../../assets/new-project-github.png";
import newProjectName from "../../assets/new-project-name-github.png";
import newVercel from "../../assets/add-new-vercel.png";
import createVercel from "../../assets/create-project-vercel.png";
import variablesVercel from "../../assets/variables-vercel.png";
import deployVercel from "../../assets/deploy-vercel.png";



# How to deploy an NFT Mint site template [NO CODE]

## Prerequisites

- [GitHub account](https://github.com)
- [thirdweb account](https://thirdweb.com/)
- [Vercel account](https://vercel.com/)


## Step-by-Step Guide

### 1. Initial Setup

- Navigate to the [NFT Minting Template repository](https://github.com/thirdweb-example/nft-minting-template)
- Click **Deploy with Vercel**

<DocImage src={deployGithub} />

### 2. Configure Git Repository

- **Choose your Git provider** (GitHub, GitLab, or Bitbucket)
- **Set up your repository details**:
- **Git Scope**: Select your GitHub username or organization
- **Repository Name**: Enter a name (e.g., `my-nft-minting-website`)
- **Team**: Select your team if applicable

<DocImage src={newProject} />
<DocImage src={newProjectName} />


### 3. Create Thirdweb Project

- Go to the [thirdweb dashboard](https://thirdweb.com/team/~/~/) and create a new project
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Verify and update the thirdweb dashboard link.
The URL uses placeholder segments (~/~/), which likely resolves to a broken link. Please confirm the correct dashboard path (e.g., https://thirdweb.com/dashboard or your actual team/project URL) and update the markdown accordingly.


🏁 Script executed:

#!/bin/bash
# Check HTTP status for the placeholder dashboard link
curl -o /dev/null -s -w "HTTP STATUS: %{http_code}\n" https://thirdweb.com/team/~/~/

Length of output: 103


🏁 Script executed:

#!/bin/bash
# Follow redirects to determine the final dashboard URL
curl -s -o /dev/null -w "Final URL: %{url_effective}\n" -L https://thirdweb.com/team/~/~/

Length of output: 150


Update the thirdweb dashboard link
The current placeholder URL (https://thirdweb.com/team/~/~/) redirects to a broken login path. Please replace it with the correct dashboard URL or your actual team/project URL. For example:

- Go to the [thirdweb dashboard](https://thirdweb.com/dashboard) and create a new project  
🤖 Prompt for AI Agents
In apps/portal/src/app/knowledge-base/how-to/deploy-mint-template/page.mdx at
line 44, the thirdweb dashboard link uses placeholder segments (`~/~/`) which
lead to a broken or incorrect URL. Replace the current URL with the correct
dashboard link, such as `https://thirdweb.com/dashboard`, to ensure the link
directs users to the proper thirdweb dashboard page.

- Enter your project name (e.g., `NFT MINTING TEMPLATE`)
- Configure allowed domains:
- Add your custom domain (e.g., `mydomain.com`)
- Add `localhost:<port>` for local development
- Click **Create** and save your Client ID and Secret Key

<DocImage src={newVercel} />
<DocImage src={createVercel} />


### 4. Configure Environment Variables

- In Vercel, add the following:
![](https://prod-files-secure.s3.us-west-2.amazonaws.com/f6d1ff84-8c0e-4bcb-8dd6-edab3b3c175b/3ce22022-f27e-46cf-b460-2038d5e61dbe/image.png)
- `NEXT_PUBLIC_THIRDWEB_CLIENT_ID`: Your thirdweb Client ID
- `THIRDWEB_SECRET_KEY`: Your thirdweb Secret Key
- `NFT_CONTRACT_ADDRESS`: Your NFT contract address
- `NFT_CONTRACT_CHAIN_ID`: Chain ID (e.g., 43113 for Avalanche testnet)
- `NFT_CONTRACT_TOKEN_ID`: `0` for ERC-721 or the token ID for ERC-1155

<DocImage src={variablesVercel} />

### 5. Deploy

- Click **Deploy** in the Vercel dashboard
- Wait for the build and deployment to complete
- Access your new mint site via the provided Vercel URL

<DocImage src={deployVercel} />
18 changes: 18 additions & 0 deletions apps/portal/src/app/knowledge-base/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { DocLayout } from "@/components/Layouts/DocLayout";
import { createMetadata } from "@doc";
import { sidebar } from "./sidebar";

export default async function Layout(props: { children: React.ReactNode }) {
return (
<DocLayout sideBar={sidebar} editPageButton={true}>
{props.children}
</DocLayout>
);
}

export const metadata = createMetadata({
title: "thirdweb Knowledge Base",

description:
"This Knowledge Base collects concise guides and troubleshooting tips for common web3 development challenges—especially when using thirdweb, but many articles apply to any web3 project.",
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Issue linking device on the authorization page via Thirdweb CLI

Encountering issues when linking a new device via the authorization page.

### Error

How to authorize your account using `secretKey` for the thirdweb CLI

Comment on lines +1 to +8
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Clarify the error description.

The current heading "Error" is followed by text that describes a solution rather than the actual error. Consider updating this section to clearly state what error message users might see.

### Error

-How to authorize your account using `secretKey` for the thirdweb CLI
+When attempting to link a device through the CLI, you may encounter authorization failures or timeout errors when the browser authorization flow doesn't complete successfully.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Issue linking device on the authorization page via Thirdweb CLI
Encountering issues when linking a new device via the authorization page.
### Error
How to authorize your account using `secretKey` for the thirdweb CLI
# Issue linking device on the authorization page via Thirdweb CLI
Encountering issues when linking a new device via the authorization page.
### Error
When attempting to link a device through the CLI, you may encounter authorization failures or timeout errors when the browser authorization flow doesn't complete successfully.
🤖 Prompt for AI Agents
In
apps/portal/src/app/knowledge-base/onchain-common-errors/thirdweb-cli/device-link-error/page.mdx
lines 1 to 8, the section titled "Error" currently contains instructions on how
to authorize using `secretKey` instead of describing the actual error message
users encounter. Update this section to clearly state the specific error message
or issue users might see when linking a device, separating the error description
from the solution steps.

### Solution

You can authorize the CLI with a `secretKey` in just a couple of steps:

1. **Get your `secretKey`**
Head over to the thirdweb dashboard and generate a key: https://thirdweb.com/team/~/~/.

2. **Deploy with your `secretKey`**
Run the following command: `npx thirdweb deploy -k secretKey`

3. **Use the same pattern for other commands**
You can also use other methods like `upload`, `publish`, and `build` using the same format:
- `npx thirdweb upload -k secretKey`
- `npx thirdweb publish -k secretKey`
- `npx thirdweb build -k secretKey`

That’s it! The CLI will now use your `secretKey` to authenticate every command.
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Add information about key security.

It would be helpful to add a note about securely storing the secret key.

That's it! The CLI will now use your `secretKey` to authenticate every command. 
+
+> **Important:** Keep your `secretKey` secure and never commit it to version control. Consider using environment variables for production environments.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
That’s it! The CLI will now use your `secretKey` to authenticate every command.
That’s it! The CLI will now use your `secretKey` to authenticate every command.
> **Important:** Keep your `secretKey` secure and never commit it to version control. Consider using environment variables for production environments.
🤖 Prompt for AI Agents
In
apps/portal/src/app/knowledge-base/onchain-common-errors/thirdweb-cli/device-link-error/page.mdx
at line 25, add a note after the sentence about the CLI using the secretKey to
authenticate commands, emphasizing the importance of securely storing the secret
key. Include advice such as not sharing the key publicly, storing it in a secure
location, and treating it like a password to prevent unauthorized access.

68 changes: 68 additions & 0 deletions apps/portal/src/app/knowledge-base/page.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import { WalletIcon, FileIcon, MessageCircleIcon, BracesIcon, BotIcon, BlocksIcon } from "lucide-react";
import { DocImage, createMetadata, FeatureCard, GithubTemplateCard, Stack, Grid, ArticleCard, ArticleIconCard } from "@doc";
import { ExternalLink } from "lucide-react";

export const metadata = createMetadata({
title: "thirdweb Knowledge Base",

description:
"This Knowledge Base collects concise guides and troubleshooting tips for common web3 development challenges—especially when using thirdweb, but many articles apply to any web3 project.",
});

# Welcome to thirdweb Support!

This section shows you how to leverage our Knowledge Base, request support, and understand our response process.

---

## 1. thirdweb Resources

Before opening a support ticket, check these resources:

- **Documentation:** [thirdweb Docs](https://portal.thirdweb.com/)
- **Changelog:** Stay up to date with our latest releases: [thirdweb Changelog](https://portal.thirdweb.com/changelog)
- **Status Page:** [thirdweb Status](https://status.thirdweb.com/)
- **Guides & Troubleshooting:** Explore tutorials and tips: [thirdweb Guides](https://blog.thirdweb.com/guides/)
- **Templates:** [thirdweb Starters](https://github.com/thirdweb-example/)
- **Video Tutorials:** [YouTube](https://www.youtube.com/@thirdweb_)
- **Playground:** Test live in [thirdweb Playground](https://playground.thirdweb.com/)

---

## 2. How to Request Support

- **Submit a ticket** through our system: [thirdweb.com/support](https://thirdweb.com/support).
- Our team operates **worldwide** and will respond **as soon as possible**.
- *Response times may vary depending on issue severity and priority.*
- We’ll keep you updated on your ticket’s progress.
- For faster resolution, please include a minimal reproduction with step-by-step instructions.
- Found an issue in our open-source code? Submit a PR: [thirdweb-dev/js](https://github.com/thirdweb-dev/js).

---

## 3. Response Time Expectations

### Starter Plan

- Estimated response time: **3 business days**.
- We aim to respond sooner when possible.

### Growth Plan & Accelerate Customers

- Estimated response time: **Within 48 business hours**.

### Scale & Pro Plans

- Estimated response time: **Within 2 business hours**.
- Customers on the **Scale** or **Pro** plans get a **dedicated Slack channel or Telegram group**.

---

## Need Help?

You can [submit a ticket](https://thirdweb.com/support), and we’ll be happy to help you!





Loading
Loading