How to Set Up and Use Webhooks

Configure a webhook endpoint, understand the events and payloads PraisePal sends, and handle delivery retries.

Who can use this feature

  • Available on the Starter plan and above.

  • Requires the Super Admin admin permission.

PraisePal can push real-time event notifications to an HTTPS endpoint you control. Each delivery is a JSON POST with enough context for your system to log, alert, or trigger a downstream workflow.

What this is used for

  • Feed recognitions into reporting tools like Google Sheets or Airtable

  • Forward activity to messaging platforms that accept incoming webhooks (for example, Lark)

  • Trigger automations in no-code tools like Zapier or Make

  • Maintain an independent audit trail of recognition activity

You can point the webhook at an endpoint your engineering team builds, or at a no-code service that accepts HTTPS webhooks.

Setting up a webhook

  1. Go to Settings β†’ Integrations.

  2. Find the Webhook card.

  3. Paste your HTTPS endpoint URL into the Integration Endpoint field.

  4. Click Save.

PraisePal supports one webhook URL per workspace. Saving a new URL replaces the previous one. There is no verification request on save β€” the first real event triggers the first delivery.

There is currently no way to disconnect a webhook through the UI. To stop deliveries, replace the URL with a non-operational endpoint or contact Support.

Events and payloads

Two events fire automatically β€” there is no way to subscribe selectively.

Event

Fires when

`type` value

recognition.created

A user posts a recognition

Recognition

comment.created

A user comments on a recognition

Comment

Comments on celebration posts (birthdays, work anniversaries) do not trigger webhooks. Self-comments are also skipped.

Headers

Every delivery includes:

Header

Value

Content-Type

application/json

X-PraisePal-Event

Event name (recognition.created or comment.created)

X-PraisePal-Delivery

Unique delivery ID (UUID) β€” stable across retries for the same event

Payload fields

All values are strings. The shape is identical for both events.

Field

Meaning

id

Unique ID of the recognition or comment

giver_name

Person who gave the recognition or wrote the comment

recipients

Comma-separated recipient names (post author for comments)

type

Recognition or Comment

points

Points per recipient (0 for comments)

total_points

Total points across all recipients (0 for comments)

message

Body text

privacy

Public or Private

company_value

Company value name if attached; empty string otherwise

parent_recognition_id

Parent recognition ID for comments; empty string for recognitions

link

Direct link to the recognition in PraisePal

timestamp

Human-readable timestamp (e.g. Apr 20, 2026 2:30 pm)

Example: recognition

{ 
   "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", 
   "giver_name": "Jonathan Vuk", 
   "recipients": "Zelia Leong, Felix Tan", 
   "type": "Recognition", 
   "points": "50", 
   "total_points": "100", 
   "message": "Great work on the product launch!", 
   "privacy": "Public", 
   "company_value": "deliver-results", 
   "parent_recognition_id": "", 
   "link": "https://app.praisepal.com/ws/programs/recognitions?recognition_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890", 
   "timestamp": "Apr 20, 2026 2:30 pm" 
}

Example: comment

{ 
   "id": "f9e8d7c6-b5a4-3210-fedc-ba9876543210", 
   "giver_name": "Zelia Leong", 
   "recipients": "Jonathan Vuk", 
   "type": "Comment", 
   "points": "0", 
   "total_points": "0", 
   "message": "Well deserved!", 
   "privacy": "Public", 
   "company_value": "", 
   "parent_recognition_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", 
   "link": "https://app.praisepal.com/ws/programs/recognitions?recognition_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890", 
   "timestamp": "Apr 20, 2026 2:45 pm" 
}

Private recognitions are included. Webhooks fire for both public and private recognitions. The privacy field tells you which kind it is, but the link opens the recognition for anyone who has it. Handle private links carefully and restrict access on your side.

Delivery and retries

Your endpoint must respond with a 2xx status within 10 seconds. Any other response or a timeout counts as a failure.

Failed deliveries retry up to 3 attempts with exponential backoff β€” roughly 1 second, then 4 seconds, then 16 seconds between attempts. After the final attempt the delivery is marked as failed with no further retries.

There are no delivery logs in the PraisePal UI. Monitor success and failure on your side, using the X-PraisePal-Delivery header as a correlation ID.

Your endpoint may receive the same event more than once. Use the delivery ID or the payload id to deduplicate.

Common issues

Related articles