You need to start an HTTP server on the development board to listen for HTTP requests and you could have multiple options depending on the type of your board, like say: NodeMcu firmware for ESP8266 has built-in HTTP server; Web Server with Arduino and Ethernet Shield; Many different choices for Raspberry Pi. After the server has been enabled on your board, it will start listening for incoming requests on the specified IP and port. Assuming that your board is in your local network, you'll need to set up port forwarding to that IP:port on your router. Also, for accessing your board from the Heroku application, you'll be needing an external IP from your service provider. Next, the HTTP client must be added to your Heroku application for sending requests to your board. You'll have a lot of different options here as well. For instance, if your app is written in Python, you can use Requests library for the same. Finally, upon pressing a button on a web page served by Heroku, the HTTP client from your application sends a request to the IP address of your router. And, because of port forwarding on the router, it should reach the HTTP server on your development board.