# Configuring your server to receive payloads

Now that our webhook is ready to deliver messages, we'll set up a basic Sinatra server
to handle incoming payloads.

Note: You can download the complete source code for this project
from the platform-samples repo.

# Writing the server

We want our server to listen to POST requests, at /payload,
because that's where we told Airlock our webhook URL was. Because we're using ngrok to expose
our local environment, we don't need to set up a real server somewhere online, and
can happily test out our code locally.

Let's set up a little Sinatra app to do something with the information. Our initial
setup might look something like this:

require 'sinatra'
require 'json'

post '/payload' do
  push = JSON.parse(request.body.read)
  puts "I got some JSON: #{push.inspect}"

(If you're unfamiliar with how Sinatra works, we recommend [reading the Sinatra guide][Sinatra].)

Start this server up.

Since we set up our webhook to listen to events dealing with Event, go ahead
and browse to a website like the Airlock Demo to generate an event. Once you create
it, switch back to your terminal. You should see something like this in your output:

$ ~/Developer/platform-samples/hooks/ruby/configuring-your-server $ ruby server.rb
> == Sinatra/1.4.4 has taken the stage on 4567 for development with backup from Thin
> >> Thin web server (v1.5.1 codename Straight Razor)
> >> Maximum connections set to 1024
> >> Listening on localhost:4567, CTRL+C to stop
> I got some JSON: {"group"=>"everyone", "data"=>{"url"=>"...

Success! You've successfully configured your server to listen to webhooks. Your
server can now process this information any way you see fit. For example, if you
were setting up a "real" web application, you might want to log some of the JSON
output to a database.