🎉 ⏱ Ready to build? Get early access now!⏱ 🎉
NFT Drop module
Published on:
February 13, 2022
The Drop module gives you a distribution mechanism for your NFTs.
In a nutshell

Dashboard option
thirdweb's Drop
module lazy mints an NFT and makes it available to be claimed by your users. Lazy minting is when the creator defines conditions for a third party (your audience) to come in and mint the NFT. You choose what the underlying token is you want to distribute. So it can be a 1 of 1 NFT or 1 of many. Our Drop
module gives you the mechanism to distribute that token.

Module options
Click here to learn more about modules and how to create them.
How it works
Make sure you choose the right module. If you want your drop to include 1 of 1 NFTs, choose the NFT Drop
module. If you want to mint 1 of many NFTs, choose the Bundle Drop
module.
To be clear, when you create a drop inside your Drop
module, the NFT is not minted yet. We prepare everything for your audience, so that they can mint it. The user who claims an NFT, mints it and transfers it to their wallet. By default the user pays the gas fees.
You can create a drop via the dashboard or our SDK. Once you've created a drop with the Drop
module, the NFT does not show up in your wallet, but in a null address. The NFT is now ready to be claimed.
The claim conditions determine the rules for claiming an NFT over a period of time. The claim conditions have a different scope depending on the underlying contract. If you use an NFT Drop
module, then the claim conditions you set, apply to every NFT (token ID) in that module.
If you use the Bundle Drop
module, you can set claim conditions per NFT (token ID).
Claim Conditions
You can set the condition in both the dashboard, inside your Drop
module or via code. Some of the conditions you can set:
- The currency, meaning what the NFT should be payed in, if there's a price to mint.
- Price per NFT
- The max number of NFTs that are available to be claimed. It's possible you minted more, than you want people to claim.
- The wait time between claims
- Claims per transaction decides how many NFTs you can claim per transaction
- Snapshot will allow you to include a list of
Allow-list
wallet addresses
What can you do with our module?
The following use cases are suited for the NFT DROP
module and are driven
- Setup early access NFT (click here for a guide on that)
- List an NFT for sale on a Marketplace (you would also need the
Marketplace
module for this)
Our Embed feature
thirdweb developed an UI component for your app. All you need to do is include one html line for this. You can find this 👇 feature inside the dashboard under the tab Embed
.

Embed settings

embed
NFT delayed reveal feature
This feature lets you batch upload in an NFT Drop and hide your NFTs until your release day. If you want to make use of this feature, these are the steps to follow:
- Do a batch upload
- Select Delayed Reveal
- Choose a password (save it, you'll need it to reveal your NFTs later!)
- Choose an image, name and description for the placeholder NFT
- Upload!
Then, when you want to reveal your NFTs, just go back to your dashboard, click the "Reveal NFTs" button and write the password that you submitted previously.
delayed reveal dashboard
How to use the module
You can use the NFT Drop
module with or without code:
- TypeScript
- Python
- Dashboard Embed (our no-code solution)
Setup your dev environment
To interact with your NFT Drop module with code, you need to follow 3 steps:
- Install the necessary packages on your (local) machine
- Instantiate the SDK
- Passing the address of the Module inside your code
To install the necessary packages for TypeScript or Python on your (local) machine and instantiate the SDK in your code, check out this guide to help you with that. Note, you can instantiate the SDK in multiple ways, so make sure to check out that guide.
You can find the module address in the thirdweb dashboard, inside your project or inside the NFT Drop
module itself.

module addresses
Usage Examples
After you instantiate the sdk, you can use the Drop
module with our sdk. Here's how to get the module inside your code using typescript and claim one token.
const drop = sdk.getDropModule("0x7aB28C145FF201e0b6C96C8Adea78dA44B551d72"); quantity = 1; drop.claim(quantity);
Here's an example of setting the claim conditions with code
// Initialize the NFT drop module with the contract address. const drop = sdk.getDropModule(dropAddress); const setTokenClaimConditions = async () => { const factory = await drop.getClaimConditionsFactory(); // Define claim phase. const claimPhase = await factory.newClaimPhase({ startTime: new Date(), maxQuantity: 10, maxQuantityPerTransaction: 1, }); // Set price. claimPhase.setPrice(1); // Set wait time between claims. claimPhase.setWaitTimeBetweenClaims(24 * 60 * 60); // Allow snapshot for the specified list. const allowList = [ "[ALLOWED_ADDRESS_1]", "[ALLOWED_ADDRESS_2]", "[ALLOWED_ADDRESS_3]", "[ALLOWED_ADDRESS_4]", ]; claimPhase.setSnapshot(allowList); // Set claim conditions. await drop.setClaimConditions(factory); };
Code Guide
- You can find code snippets for every method in our portal here.
- To check out guides for this module click here.
- To setup your local dev environment, click here.
Previous
Next