Skip to main content

Perform a primary sale

Primary sales are the first step towards getting game assets into players' hands. This involves players paying funds to your wallet or smart contract and receiving game assets in return.

There are multiple ways to achieve a successful primary sale, however game creators should also consider a number of additional factors to ensure their sale is as successful as possible. Some of this information is outlined below.

The Immutable Primary Sales feature for zkEVM will be coming soon. In the interim you can use the information on this page to help design a suitable primary sales solution for your game.


Primary sales can either be for one type of asset or for multiple types of assets (e.g. a lootbox). Both these sales types can be designed with the below approaches:

Pre-mint and transfer

This occurs when a game creator initially mints assets into their collection-owned wallet(s) and then transfers those assets to players upon a successful transfer of funds (either fiat or crypto). While this approach allows more flexibility with the sale's design (e.g. does not require a smart contract update upon a change in design), it could come at a potentially greater cost to the game creator if they are required to pay both the minting and transferring gas fees for each asset.

Direct mint

This occurs when players directly interact with a smart contract to purchase a game asset. Players send a specified amount of funds to a smart contract during the sale and the contract will then mint an asset directly into their wallet. This approach has advantages such as increasing transparency for players regarding the sale's logic, however the approach needs to be well-thought through and considered as any changes to the primary sale's design could require another smart contract deployment. A simplified implementation of this approach is here - however, please note that this tutorial is only for informational purposes.


Fixed priceA fixed price sale is the the most common type of primary sale and the simplest to execute. This occurs when game creators price assets at a fixed price throughout the entire sale's duration.- GU Card Packs
- Illuvitar sale
AuctionAuctions are more complicated to execute but lead to better price discovery of the assets. There are two main types of auctions:
- Dutch auctions are those where the price begins high and is incrementally lowered.
- English auctions are the opposite where the price begins low and is incrementally increased.
- Illuvium Land sale


Volume capA primary sale that sells out all of its assets is a clear signal of a successful sale. Depending on the type of sale, this can provide your game predictable revenues, as well as drive buyers' interest to the sale as the available supply dwindles.
Time capGame creators can choose to have a clearly defined sale window for players to purchase their assets. In addition to driving excitement towards the sale starting, this can also drive demand as the sale finishes.
PhasingA phased launch (i.e. holding several launches to distribute an asset's total supply) is a particularly useful lever to drive sellouts and excitement where total asset supply outweighs your current community size.

The sequence of game asset sales (e.g. PFP followed by land assets) can also be an important decision as it creates a mental model where participants understand what and why is being dropped without needing to be told. For example, PFPs being dropped before land allows players to get a sense of the game world they're entering.
Player purchase limitsTo prevent bots or a small number of users buying many of the available assets, player purchase limits (identified by wallet address) should be set. While this reduces potential sales, the sentiment impact and risk of price dumps by holders of many assets are worth the trade-off.
AllowlistingDepending on your primary sales' launch goals, allowlisting a subset of users for access to your primary sale can be valuable. Cases where this approach is helpful would be to reward early community members or to promote healthy community engagement.