Features, fixes & improvements.Follow us on Twitter
Cover Image for Notify Winners

Notify Winners

Pro users can now notify winners with a beautifully crafted email. This is enabled by default for all paying customers.

Enable this feature by heading to:

  1. Go to your Project -> Settings -> General
  2. Scroll down to Email Winners
  3. Enable the toggle and hit Save

Fixes and Improvements

  • Bulk import wallets from CSV
  • Copy list of addresses to clipboard in Project -> More -> Copy to Clipboard
  • (Automatically disconnect Twitter account if user revoked access to Joinlist)[]
  • Fixed export only winners not working
  • Joinlist is listed on Alchemy Dapp Store
  • Created blog post about clearing bots for 0xTechno
  • Backup every Entry record when a delete occurs
  • Must follow joinlist on free
  • Hide buy banner for paid users on Joinlist
  • Improved error when trying to register and no discord server/role found
  • Accept only image types when upload pfp
  • Setup local database environment for supabase
  • Fixed planId not changing when user upgrades

Cover Image for Only export winners

Only export winners

Added the ability to only export either the winners or all entries.

  • Improved the banner creation feature, allowing users to create their own banners
  • Fixed the issue with the "Not Found on Aptos" error
  • Added a pricing banner to provide users with pricing information
  • Improved the Discord integration, fixing issues with the role requirements not being picked up for existing users and the checkbox turning off when clicked away from the page
  • Improved the Twitter integration, adding the ability to search for accounts and follow them
  • Fixed the issue with the "delete entry" feature not working properly
  • Improved the search functionality, allowing for a recursive search and normalizing the results for Twitter searches
  • Fixed the issue with the raffle quantity throwing an error

Cover Image for Twitter Search

Twitter Search

You can search any user on Twitter user without fail. On top of that, we've improved the modal to search users - giving you improved metrics like number of followers account verified and short description. This helps you easily identify the Twitter user you want to add as part of your requirements. View this latest change in Settings > Requirements > Twitter

More free stuff

Free users now can create 6 free projects, from the previous 3. This gives you the power to collaborate with more creators in your network.

Collection Search

We've improved the search for any collection on Ethereum. Search now opens up a command menu, giving you more insights in to each collection. View this latest change in Settings > Requirements > Ethereum

Receive Updates on New Launches

We've added a toggle for Collectors to receive updates whenever a new joinlist page has launched. This will benefit both the Creator and Collector. The former to gain more exposure. And the latter to see the latest joinlist pages blowing up to increase chances of getting in early.

Remove Joinlist Branding

Creators now have the ability to remove the default Joinlist "powered by" badge that is on every registration page. Creators can now white label their joinlist page by toggling this option off. Play with this in Settings > General > Remove Joinlist Branding

Change Project Visibility

Its now possible to set any project from "public" to "private". This will eventually hide projects from our Explore page which we're currently building. Toggle this option in Settings > General > Change Visibility

Improved raffle status

When a raffle ends of joinlist, collectors had no way of knowing if they won or not. Now, we display a friendly "Bad Luck" message for users who didn't get picked, and a "You won" for the ones who did.


  • Countdown when we call Discord API again on rate limited
  • Registration Page requirements text not aligned with the icon
  • Display only the last 100 entries on the project dashboard
  • Display the count of the entries using the new /api/v1/count API
  • Toast on save in dashboard now in left hand bottom corner
  • If usage exceeded when hitting create project, show the updrage modal
  • Choosing the time when setting the end at date now opens at the current time, rather than 12pm last night
  • Create separated endpoints for each platform to check if the collector has met the requirements. e.g /checks/twitter, /checks/ethereum
  • Delete project now redirects straight to the dashboard without delay


  • Fixed duplicating a project would not pick new winners
  • Fixed not picking up nfts owner by user on the registration page
  • Fixed hitting the Checkbox on discord enable role doesn't toggle straight away
  • Fixed dark mode popover styles

Cover Image for Duplicate Project

Duplicate Project

Duplicate Project

This weeks release introduces Duplicate Project. Helpful for when you are wanting to create multiple collabs with projects - without having to re-type the same settings. This feature is available in Settings > General > Duplicate Project.

Minimum SOL Balanace

Support for Minimum Solana Balance is now available for a projects. Useful to ensure your community has the funds to mint your collection. Head to Settings > Requirements > Solana to get started.

Cover Image for Contact Form

Contact Form

This weeks release introduces the Contact Form. You can now require users to enter details such as name, email, phone number and address. All details provided will be included in your exported document.

To get started:

  1. Select a project in your Dashboard
  2. Head to Settings > Requirements > Contact
  3. Switch on your desired fields and hit Save

Cover Image for Ask a Question

Ask a Question

The new "Ask a question" feature allows you to ask any question to your community as part of your allowlist requirements. Questions can either be optional or required.

To get started with asking a question, follow these steps:

  1. Select a project in your Dashboard
  2. Head to Settings > General > Questions
  3. Write out your question and hit Save

Cover Image for Password Protection

Password Protection

If you want to keep your allowlist pages safe and secure, you can password protect them with Joinlist’s built-in password protection feature. This feature is easy to use and will keep your pages safe from prying eyes.

To Password Protect your allowlists, follow these steps:

  1. In the Joinlist Dashboard, select a Project.
  2. Click Settings, then click Security.
  3. Scroll to "Password Protection"
  4. Toggle the Switch to "Enabled"
  5. Enter a password
  6. Click Save


  • "Join the Allowlist" Embed Button for Your Website with three different themes


  • Created a Segmented Control component to select between Light, Dark, and Primary themes for the Embed Button feature
  • Made the share button slightly darker on the project settings page
  • The Dropdown component now supports light mode
  • Changed the Rainbowkit modal to "compact"
  • The Dialog component now supports Dark mode
  • Popups in the background now close when the Get Embed Button Modal is open
  • Share options now available in the Project Dashboard
  • Added Embed Button in the share options on the Register Page
  • Copy the Embed Button code to the clipboard on click
  • Added domain to Embed Button images e.g
  • Password Protected pages now don't flash the Register component on page load
  • Display the creator's logo instead of Joinlist's for the Password Protected page
  • Created a demo video of Password Protection in action
  • Built the /api/v1/password-protection-check endpoint
  • Prefixed all Password Protected resources with PasswordProtection namespace for consistency
  • Only use one endpoint to verify the password, instead of two.
  • Ensure the user's password is sent on the onRegister click to verify the password is still correct
  • Ensure the endpoint /API/v1/projects/{slug} returns the password, and only authenticated users who own the project can view
  • Indicator on the Entries table to show the winner on the registration page
  • Indicator on the Entries table to show the status of email for the winner
  • The newly designed email for Raffle winners now uses MJML email to create the template
  • Moved the End At component before the Maximum Entries component
  • Remove the icon in the input prefix for "Name your project"
  • Require the user to enter an End At date if they want to use the Automated Raffle feature
  • The winner's email for Automated Raffled now looks snazzy


  • Fix Social Proof image not showing on marketing site

Cover Image for Automated Raffles (Beta)

Automated Raffles (Beta)

The new automated raffles allows you to:

  • configure how many users you want to pick when your raffle ends
  • deliver an email to the winners (if the user opted in to receive emails upon completion)
  • view who the winnners are in your project dashboard, with a badge next to the winners who's received an email


  • brand new Checkbox component
  • in /pages/[id], onRegister, if notify=true and has email in email input, save this info on the Entry
  • on /pages/[id], if project is a raffle display the "opt in for emails" component
  • create api endpoint to send email given sendgrid api keys
  • change won column to winner in Entry
  • if user wants emailing on win, send email using sendgrid
  • add won badge on the list of entries in the creators dashboard
  • fade out and scale down the Dialog component when clicking outside
  • dialog doesnt close after deleteing and entry
  • on click outsite, close Add Entry
  • Save and cancel button for Add Entry
  • have the create project btn primary (blue)
  • hide Add Entry on ESC keydown
  • hover over entry, cmd+backspace should delete the entry no questions asked
  • when closing a popover, animate out
  • remove unused routes
  • too much padding on the date time components
  • demo video of particles on twitter
  • tabs component jumps and takes a while to load
  • log to sentry on any errors
  • animated tick on register


  • Nftbuds ETH address not showing
  • Scroll on mobile for registration page stuck
  • no border around registration component

Cover Image for Confetti



  • Confetti on Registration
  • Button Accent Color
  • Border Shimmer around the Registration Component
  • Share on Twitter
  • Copy Link to Clipboard


  • when unregistered, we automatically remove the user from the page. no refresh needed!
  • log important events such as sign out, login through out the Joinlist app
  • created a useProvider hook which makes it much easier to connect to twitter, discord, solana, ethereum etc.
  • give the website component on the registration more space - it was to close to the description before
  • changelog on mobile now looks great. styles for phone were broke.
  • popover for the Raffle component is smaller
  • the image for the project details now doesnt shift the page when loading
  • Show a nice image for Twitter when sharing a Joinlist Registration page.
  • added SEO to every Joinlist Registration page
  • animated tick when click Copy to Clipboard on the Registration Page
  • fade in the images for the changelog
  • fade in the creators logo for each registration page
  • enbaled manually adding entries
  • manually adding entries now accepts subdomain ENS names e.g auth.sam.eth
  • when adding an entry, the page scrolls to the latest entry
  • imported entries now get given an image
  • we now show the last 1,000 entries for a collection


  • fixed cumulative layout shift on the dashboard when loading the projects
  • fixed No Entries on Project. we prefer choosing the Twitter screen name and Twitter image. But if that doesn't exist, we use the ETH address and a placeholder image

Cover Image for Joinlist Discord Bot

Joinlist Discord Bot

Introducing the Joinlist Discord Bot. The bot allows you to verify your community with a simple command /joinlist verify and /joinlist verify @address

To install the bot:

  1. Head to your dashboard
  2. Choose a Project
  3. Settings > Connections > Discord > Add Bot

Additional discord improvements are in the works to be able to easily:

  • choose from a list of roles instead of pasting in the roleId
  • automatically assign a role of your choice once a user joins your list.


  • 2FA (get in touch if you want this enabled!)
  • Like and Retweet as a requirement for your Joinlist page.
  • Enable/Disable the ability to show a list of Entries for your project in the Dashboard.


  • Discord Bot allows you to select which project you want to verify against

  • Show Discord bot is enabled once added

  • Changed name from joinlistbot to Joinlist

  • Improved the explanations on how to use the Discord bot commands

  • removed provider={provider} for the callback on the login page

  • created a ComboBox to easily search for your country code when setting up 2fa

  • created the /api/v1/start-2fa-verification endpoint

  • created the OneTimePassword component which, automatically verifies your number once you enter all numbers (inspired by Stripe and Apple!)

  • disable the 2fa btn if the previous connect hasnt been connected

  • only show 2fa component if twoFactorAuth enabled on project

  • export solana address on the expor


  • Unregister to be in the Account dropdown

  • /twitter/users/show?screen_name endpoint

  • Allow users to upload their own accent for the color of the button on the registration page - yet to but adjustable on the dashboard!

  • use the new accent color for the Blur component on the registration page.

  • changed the /verify command to /joinlist verify.

  • /joinlist verify project: 123 address: addressWithNoEntry - we need to display the address even tho the address isn't registered on anything

  • Remove the Skeleton if no Description is given on the Registration Page

  • FAQ on mobile styling had too much padding on the x axis.

  • adding the discord bot closes the popup window once th bot has been added.


  • Sign message on mobile not redirecting back to app. This was painful to debug
  • Phantom Wallet mobile stuck on loading when hit sign in on new wallet
  • NFT not detected in wallet once connected
  • Hitting the X icon when signed in on Phantom wallet opens up the sign message popup again
  • Calendar styles on the EndAt component broke
  • discord providerAccountId getting used for the ETH username. disabled the VerifySearchComponent. something to with the useEvent hook.
  • fixed scroll on CountryCodeComboBox not working. Radix Dialog has a Scroll Lock on the Overlay. Just remove it
  • when logged in, hitting logout on the 2fa button opens the modal again
  • Fixed Unable to remove twitter account from Must Follow Twitter
  • the profile object of all the twitter accounts gets overwritten with the newly linked twitter account. due to my terrible where clause which wasn't specific enough
  • fixed 2fa required but not connected
  • Register button not green after registering successfully
  • fixed callback on Add Discord Bot goes to localhost
  • fixed anybody can delete a project on the delete project endpoint call
  • disabled the import addresses for the time being while we fix a bug within it

Cover Image for Verify


Collectors can easily verify they are on a whitelist by pasting in a wallet on an Registration Page.

This feature was created due to collectors being unsure if they're address was succuessfully submitted. A demo of this in action can be seen here

More ways to verify, coming soon:

  • Discord command: /verify {address} which lets you know if you're on the list
  • Assign a custom Discord Role as soon as you successfully register


  • Automatically link an account to the user who signed in. No more OAuthAccountNotLinked page!
  • Auto-complete for Twitter Accounts
  • Delete entry


  • apply linebreaks to description

  • OAuthAccountNotLinked page not styled

  • extremely slow loading times on getProject for large projects on the Registration Page

  • create api/v1/twitter/users?q=sam endpoint

  • validate the website url in the Dashboard

  • endAt date doesnt let you save when you initially first change the date

  • export siwe address instead of usernam


  • collapse menu items on hover are were cut off to early

  • autofocus on input when open raffle component

  • Solana icon too large on Page

  • no eth symbol on button in Page

  • add verified badge to accounts who are verfied for the Twitter Search User component

  • external link to the twitter profile

  • Set the initial Twitter Search Account to Apple

  • trigger for dialog to be a trash icon on right hand side of the item

  • avatar img not showing for user must own collection in public page

  • on Register click, button goes smaller

  • line height on joinlist home page tagline too big

  • if API is POST, DELETE, PATCH, console.log the request body

  • scroll to Validate wallet element as soon as you hit the register button

  • red/green border on Verify input not showing for useOnRegister

  • change message Must own Doodles to be eligible to User must own Doodles


  • Having forward slash in slug breaks page
  • hitting Security gets an app error
  • user has nft, but check not showing they have it
  • Input must not be undefined fixed
  • unable to Unregister on the Public Page
  • unable to import user to project

Cover Image for Joinlist Raffles

Joinlist Raffles

Raffles let you randomly select any number of wallets from your list of entries with ease.

To get started:

  1. Head to your dashboard
  2. Select a project
  3. Hit the Raffle button and Choose how many you want to select.

A demo of Raffles can be seen here.


  • Show twitter users avatar in the list of entries in the creator dashboard.


  • Connecting with Phantom Mobile browser now connects using their in-app browser.
  • Month/Day/Hour/Minute/Second displayed on the countdown for a creators Page, rather than Day/Hour/Minute/Second.
  • Show spinners on the button when user is signing a message/connect with Phantom Wallet on mobile.
  • Use new Tooltip component when hovering over the age of an entry in the dashboard.


  • Hitting the X on Phantom Wallet button now logs user out.
  • Getting a users Usage (how many entries & projects they have) fixed.
  • Hitting the Security tab in Dashboard was getting an Application Error. I was important an icon that didn't exist! DOH!
  • "Twitter required but not connected." error. Two twitter account were linked to one user, and the database didnt know which one to choose! deleting the old twitter account fixed this issue. I must have manually changed this in the database.
  • use the address of the signed in user for the RainbowKit component in a creators page, rather than the address given by RainbowKit.

Cover Image for Joinlist X Phantom Mobile

Joinlist X Phantom Mobile

In an effort make joining a presale list effortless, we now support connecting with Phantom Wallet on mobile.

Phantom is a leading wallet on Solana with incredible traction, gaining more than 2 million monthly active users in just six months after launch.

We're extremely pleased to support their beautifully crafted mobile wallet on our app!


  • added a FAQ section to every project page.
  • Added Account Dropdown in the dashboard, on the main nav which has links to Dashboard, Logout.


  • show a loader on the login button as soon as you hit it
  • max character length of 40 chars for the project name.
  • as soon as you connect, fire a sign message request when using phantom wallet on mobile
  • removed the top separator when the ETH connector is disabled
  • improve the speed of a projects page by disabling the list of enrties.
  • when you try to connect to an account that is already linked to a user, we ask if you want to sign into it instead of just showing a blank error page.
  • users can now logout from a projects page!
  • only enable the connect button when previous step has been completed/connected
  • improved End At screen when the project has closed.
  • too much margin-right on the Time component in the End At section of the project details page in your dashboard.
  • full length of a collapsible item was getting cut off when hovering
  • list item bullet points was showing in the User Must Own Contract Combobox.
  • truncate long words in the ComboBox component
  • removed unnecessary in the authentication flow (it was code which allowed people to submit a wallet without connecting their website). removed it because it opens us up to become a large vector of attack.
  • put all sign message statments in a constants file
  • more subtle animation to display the list of entries in the dashboard.
  • combobox placeholder text was too dark.


  • fixed overflowing text on a large FAQ item.
  • fixed logout button not working
  • fixed disconnect from phantom mobile not working.
  • users couldnt save their project and kept getting "Cannot read property 'length' of undefined"

Cover Image for Joinlist is on Mobile

Joinlist is on Mobile

Joining a presale should be seamless on any device. And this week, we're proud to announce that we have integrated RainbowKit to do just that.

This feature was brought to life with the help a recent project we partnered with, DESKHEADS. Deskheads mission is to inspire people to live unconventional lives, and go after their dreams. This message speaks volumes to me personally. I'm extremely happy to have them on board.

To see a demo of this feature in action, head to this tweet.


  • Creators have the ability to set an End At date for their Page
  • Creators have the ability to hide the list of Entries for their Page


  • Requirements are now labelled "Connections". Each Connection is a provider such as ETH, SOL, Twitter etc. Each Connection has their own unique set of Requirements.
  • Added a new collapsible component to display the list of Connections
  • The End At component now has small human readable indicators to display when the project is ending, which counts down in minutes
  • We now don't get rate limited by the Discord API!
  • We now don't require your email when connecting with Twitter and Discord


  • Images with special characters for their name were not getting saved
  • Collectors Role in Discord was not getting picked up, when infact they had the role required to be eligible
  • Automatic checking of requirements on your Page was broken
  • Collectors were automatically getting registered on as soon as they landed on a Page
  • The Page did not detect if a Collector was in a Discord server

Cover Image for Joinlist X Solana

Joinlist X Solana

As a creator, you can now collect wallets on Solana. Solana is a fast growing chain and we are happy to support this amazing technology.

To setup:

  1. head to your dashboard
  2. create a new project
  3. Enable solana in Settings > Connectors > Solana

Solana minimum balance, and Solana must require collection coming soon.

Fixes & Improvements

  • only login with twitter on login page for creators (creators were scared of connecting their wallet to joinlist, so we alleviated this by only requring you to connect to Twitter)
  • switch from using, use our authentication method (we needed to customise the sign wallet message and we couldnt do this with
  • the connect wallet, then sign message is more clear and explains what happens when signing a message. before it was "please sign message to authenticate". now its "Hi, it's the Joinlist team! Signing this message proves you own this wallet and nothing else. It's the same as getting sent an email to verify you own your email address. Signing this message is safe, free and does not in anyway give joinlist permission to send you transactions."
  • provide contact email address in pricing:
  • you can now set the max number of entries for each project you create
  • fixed: EndAt component doesnt read from the database time
  • fixed: Save endAt date in dashboard
  • fixed: connect sol account not showing username signed in
  • fixed: connecting then regsitering gets invalid icon
  • when validating an entry, dont throw the first time a check fails
  • fixed: Invalid signature.: 0xDcA1bEa642c7821efbe6a5612B2e130F9d8192CA !== 0xe2BeD39917071ac372dE3B1497206976ac9A9Dd6 (the effect didnt get the updated addresses once the user switched wallets)
  • add flavicon
  • fixed: register btn not show "you made the cut" after registering
  • save the ethereum required/enabled setting
  • attempted to figure out how we're going to allow users to input their wallet addresses. this ones a toughie.
  • fixed: each provider needs to have a Enabled option at the top of the page.
  • collapsible list of connectors in your dashboard (Eth, Solana, Twitter, Discord).
  • token.sub gets remove from token when linking a twitter account (we just didnt map the id to the sub in the token)
  • fixed: required eth balance not working creators project on mobile (we didnt check balance for ens domains, only hex addresses)
  • fixed: useSignAndLoginEth uses hard coded url param in pages/[id]
  • fixed: dont prettyHex() ens domains on the public registration page

Cover Image for Require Multiple collections

Require Multiple collections

You can now setup your joinlist page to require users to own multiple nft collections.

This feature comes with two options:

  1. User must own ALL collections
  2. User must own ANY collection

Super powerful for collaborating with other communities, and ensuring the quality of your new community members stay high.

Fixes & Improvements

  • automatically check if the user owns the required contracts on page load for registration page
  • automatically check if the user is following the required twitter accounts as soon as they follow the required people
  • you can now delete a project!
  • set the maximum number of entries you want to allow on your joinlist
  • got a new sexy emai l address:
  • users now have an allowance of 1,000 entries across all projects. if you reach this threshold, contact me!
  • built GET /api/v1/usage endpoint which gets each persons usage allowance
  • built a more user friendly error page when login issues occur (was just a very unpretty 1 line html file before)
  • fixed min eth balance check
  • fixed min eth balance is too rounded to 2 decimals - not saving the full decimal points
  • swap spaces in a url with a dash when saving your handle. e.g typing a a handle of " cool project" ""
  • powered by joinlist btn at the bottom on the public registration page
  • beta testing the solana integration!
  • nice little loading icon when we're checking if you meet the requirements on the registration page
  • re-wrote the endpoint to check requirements - it was super confusing

Cover Image for User must follow multiple twitter accounts

User must follow multiple twitter accounts

You can now setup your joinlist page so that users of your community must follow certain Twitter accounts to be eligible for your presale.

This one little feature is so powerful. Our first project that launched with us hexi, had ~100 follows before they started their joinlist. And ended up gaining 800+ follows from when they closed their joinlist presale, only 2 days later.

Fixes & Improvements

  • large countdown clock on the registration page to show when the joinlist ends
  • every person who registered is shown on the registartion page with their twitter pfp and username
  • livefeed of other people registering on the public registration page
  • added faq to landing page
  • show a check/cross aginast each requirement on the registration page
  • display the min eth balance requirement on the registration page
  • created an easy to use "get started with a project" when a new user logs in
  • send user to login page if they aren't logged in
  • automatically enable connect twitter if you start adding accounts you require users to follow
  • created a video demonstrating how multiple twitter accounts work on twitter
  • wrote faq on the security of joinlist
  • fixed autocheck account is following required twitter accounts after connecting with twitter
  • automatically add the twitter accounts to the pills above the input upon save for must follow twitter account
  • we now show the discord role/discord server labels on the registration page - although you can't yet edit these labels. juts get in touch with me if you want to add some labels for your discord
  • added a validate=true check for the entries endpoint check does a quick center check on all the requirements, but doesnt submit the entry. used for when we rediect back from discord/twitter to check if the user is following accounts straight away
  • created a bunch of hooks lik useBalance, useCollection to make DX life easier
  • created /api/balance endpoint to quickly grab the balance of the authenticated user
  • added a more clear message to verify the user made the cut once they regsitered