Webhooks for partners
As a partner, you can configure webhooks to get automated notifications of various offering events.
What are webhooks?
Webhooks are HTTP POST requests that Raiseform makes to the URL of your choice. These requests include a JSON-formatted payload with details about an event related to an Offering or Investor.
How do I configure webhooks?
Go to Account > Webhooks, then click "Create webhook endpoint". You can add up to 3 webhook endpoints. Webhooks will be sent to every endpoint you configure, for all webhook events.
What are the webhook events?
When any of the following events occurs, a webhook is sent:
offering.closed_failure
offering.closed_success
offering.open
offering.withdrawn
What do the JSON payloads look like?
Here is an example JSON payload that would be posted to your webhook endpoint:
{ "event": "offering.closed_failure", "offering_id": "456f27a1-b27d-4c90-8d26-2f53a24dce01", "offering_number": 5555 }
You can use the offering_id
to make a
Read Offering API request
to get additional details.
Can webhook payloads be verified?
Yes, all webhook payloads are signed so you can verify them. You should use your webhook's "signing secret key" to generate your own HMAC, and compare it to Raiseform's HMAC included with each webhook payload. Here's how it works:
-
Get your webhook's "signing secret key".
Go to Account > Webhooks, select a webhook, then click to show the value. It starts withssk_
. -
Get the timestamp and Raiseform's HMAC.
When your app receives a webhook payload from Raiseform, get the value of theX-Raiseform-Signature-512
header. (It looks liket=1761047581,v=32a19fd2945b6ddda577e7975e664d35a9b1f9f81a1544ddd459a79ec06c87dc83f2cf66c92ed6865d9a5fe438d227ac0475d37f9a0752195b0650116320b0b3
.) Split the string by comma (,) to get the key-value pairs. Thet
key represents the Unix timestamp. Thev
key represents Raiseform's HMAC. -
Build your HMAC.
Build your HMAC using the SHA512 algorithm with hexdigest formatting. For example, in Ruby you should useOpenSSL::HMAC.hexdigest('SHA512', key, data)
. The "key" is your your webhook's "signing secret key". The "data" is created by concatenating the Unix timestamp, a dot/period character (.), and the JSON string from the webhook payload. -
Compare your HMAC against Raiseform's HMAC.
If the HMAC strings don't match, the webhook payload may not be legitimate.
If verifying the signature exceeds your technical capabilities,
there is a simpler but less secure alternative.
You can add a token
parameter to the endpoint URL you enter in Raiseform,
with a random value that you generate.
Then when you receive a webhook payload from Raiseform,
you check to confirm the token
parameter has the value you generated.
If the strings don't match, the webhook payload may not be legitimate.
Can I simulate/test webhooks?
Yes. Go to Account > Webhooks,
select a webhook then click the "Test" button.
For each test you can select which status
you want to POST to your endpoint.
Can I see webhook results?
Yes. Go to Account > Webhooks, select a webhook then see the "last request" information, including:
- Time
- Event
- Offering
- Response status your endpoint returned