Deploying a POAP dispenser machine on Decentraland

For the sake of simplicity, I’m not going to give the whole speech about what Decentraland is and the mechanics of the game. This article will exclusively focus on how to create your own POAP dispenser machine using a template.

Baby steps — preview your scene

If it’s your first time publishing on DCL, better give it a preview on your local machine, you can do so by following this tutorial.

You can even preview your POAP dispenser by getting the booth source code from here and copying the files into your test folder. Afterwards run dcl start to preview it in your local machine.

Setting up a server

POAPs are minted by presenting a claim code that are distributed by the POAP team. To learn how to create an event, refer to my previous article.

You will have to set up a server to handle the claim codes so they are not reused.

  1. Host a server containing the contents of the /server folder in this repository. You can follow this tutorial to do so.
  2. Upload all of the claims to your server’s DB by sending the following POST request:

Where eventname is the unique string that identifies the event. The body of the request will include all of the claim codes in an array, structured like this:

[ {"id": "code1"}, {"id": "code2"}, ...  ]

3. Once those codes are uploaded to the server, you can fetch them using a GET request like the following


Note that each one of these requests will eliminate one code from the DB

4. Once this is tested, you need to modify some files for the dispenser to match your event:

  • Change the scene coordinates in scene.json(lines 12 & 13) file from your folder
  • In the poapHanlder.ts file, change the value of fireBaseServer to match your server's address
  • Change the name of the POAP on the src/game.ts file to match the eventname in your server. Example:
let POAPBooth = new Dispenser(
position: new Vector3(8, 0, 8),

Publishing in DCL

Once you are sure that your dispenser is all set up, give DCL’s guide on scene publishing a read and fill the corresponding info in thescene.json file.

And you are done! Hope this is useful and feel free to reach out if you need any help.

Disclaimer: I am not the author of the source code nor the articles published in Decentraland.

Thank you to everyone who has contributed with open source content to make this available for others.

Connect With POAP




Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store