bountyblok.io can notify your custom webhook endpoint via HTTP POST with a payload containing challenge event data for a user.

This is commonly used to get notified when a challenge has been completed. The endpoint will also be called for user progress for a challenge with all the necessary data on their progress.

Custom Webhook

First setup a webhook endpoint and then assign it to your bountyblok app in the Apps page. All notifications will include the app_id in the HTTP Request Header: BB-Webhook-Secret-App.

Please validate all incoming requests using BB-Webhook-Secret-App

We recommend you secure your webhook endpoints with HTTPS

An example JSON payload sent to https://example.com/webhook/bountyblok

"logged_tx": "b5607433a23c2d06c6585543f58fa5a11d3384e8f6c4c631d8fbb9cb3d54852f",
"task_completed_tx": "b5607433a23c2d06c6585543f58fa5a11d3384e8f6c4c631d8fbb9cb3d54852f",
"challenge_completed_tx": "b5607433a23c2d06c6585543f58fa5a11d3384e8f6c4c631d8fbb9cb3d54852f",
"account_name": "captainkarma",
"task_progress": {
"task_id": "6893c17e-5766-4622-b641-87691fa6034d",
"task_name": "Post Something Awesome:",
"quantity_required": 1.0000,
"quantity_completed": 2.0000,
"is_valid": false,
"message": null
"challenge_progress": {
"challenge_id": "4af565ca-2975-4392-b34f-2b54e3a8c6b2",
"challenge_name": "Best Meme Contest",
"challenge_score": 100,
"challenge_start": null,
"challenge_end": null,
"challenge_description": "Post the best MEME to win 25 KARMA",
"challenge_rewards": [{
"name": "KARMA",
"value": 25.000000
"tasks_required": 3,
"tasks_completed": 1,
"challenge_reward": {
"name": "KARMA",
"value": 25.000000
"is_valid": false

The payload is sent when a user performs a challenge task. It contains the challenge progress, the current task progress, and the rewards for this user.