Skip to main content

Champion Org Webhook Guide

Ryan Holdeman avatar
Written by Ryan Holdeman
Updated over 2 months ago

1. Why Webhooks Matter for Champion Orgs

Webhooks lets Gloo Impact push key events straight to your tech stack in real time. No polling, no spreadsheets—just instant context for the people who need it.

Typical wins

  • LMS auto-enrollment – enroll approved participants instantly.

  • CRM tracking – create leads or opportunities the moment an applicant appears.

  • Admin alerts – email or Slack the program manager whenever an approval or rejection lands.

  • Stripe deposits – kick off a checkout flow as soon as the Sponsor green‑lights an application.


2. Full Event Catalogue (Champion Orgs)

Event

What it means

Common automations

applicant.joined_waitlist

A user joins your program waitlist.

Add to CRM, send nurture drip

applicant.ready_for_program

Applicant is approved for a program and ready to start.

Send applicant custom onboarding email.

milestone.status_changed

Any program milestone changes state.

Send Slack message to case-worker about next steps.

payment.received

Impact records a payment routed to you.

Update bookkeeping, send receipt

program_application.pending_sponsor

Champion said yes; Sponsor still deciding.

Email applicant: "Waiting on sponsor"

program_application.sponsor_approved

Sponsor said yes; Champion has not.

Trigger Stripe checkout for deposit │

program_application.rejected

Application rejected by Champion or Sponsor.

Launch rejection email series

You can attach multiple webhooks to the same event—e.g., one to Zapier and one to Slack.


3. Creating a Webhook

  1. Go to Settings → Integrations.

  2. Click + Create webhook.

  3. Choose an Event, add a clear Nickname, and paste your HTTPS POST URL.

  4. Save. Gloo Impact starts sending deliveries immediately.

Tip: Point the URL to webhook.site first so you can inspect payloads before wiring production.


4. Payload Schemas (v 1.0)

All events share this envelope:

{

"event": "<event_key>",

"name": "<webhook_name>",

"version": "1.0",

"timestamp": "2025-04-28T22:10:00Z",

"data": { /* event‑specific */ }

}

4.1 program_application.pending_sponsor

{

"event": "program_application.pending_sponsor",

"name": "Champion Approved – Waiting on Sponsor",

"version": "1.0",

"timestamp": "2025-04-28T22:09:00Z",

"data": {

"offeringApplicationId": "app_12345",

"offeringId": "off_008",

"applicantEmail": "maria@example.com",

"applicantName": "Maria Garcia"

}

}

Use it to keep applicants in‑the‑loop while the Sponsor reviews.

4.2 program_application.sponsor_approved

{

"event": "program_application.sponsor_approved",

"name": "Sponsor Approved – Action Required",

"version": "1.0",

"timestamp": "2025-04-28T22:10:00Z",

"data": {

"offeringApplicationId": "app_12345",

"scholarshipId": "sch_77777",

"scholarshipApplicationId": "scapp_55555",

"rejectionSource": null,

"offeringVersionId": "offver_001",

"offeringId": "off_008",

"applicantUserId": "usr_4321",

"applicantEmail": "jordan@example.com",

"applicantName": "Jordan Lee",

"participantId": "part_9876",

"participantEmail": "jordan@example.com",

"participantName": "Jordan Lee",

"applicationFormVersionId": "form_v2",

"scholarshipApplicationFormVersionId": "sform_v1"

}

}

Use it to trigger an off‑platform deposit checkout (e.g., create a Stripe Checkout Session) or begin any Champion‑specific onboarding steps now that funding is guaranteed.

4.3 program_application.rejected

{

"event": "program_application.rejected",

"name": "Application Rejected",

"version": "1.0",

"timestamp": "2025-04-28T22:11:00Z",

"data": {

"offeringApplicationId": "app_98765",

"rejectionSource": "sponsor",

"reason": "Funding limits reached"

}

}

Use it to launch a personalized rejection email flow or invite the applicant to alternative programs.


5. Security & Reliability

  • Signature header – Each request includes X‑Impact‑Signature (HMAC‑SHA256). Verify with your Signing Secret.

  • Retries – Impact retries up to five times with exponential back‑off if your endpoint doesn’t return 2xx.

  • Webhook logs – Inspect attempts and re‑send failures in Settings → Integrations → Webhook Logs.


6. Best‑Practice Recipes

Tool

Trigger

Action

Zapier

program_application.pending_sponsor

Gmail → "Sponsor review in progress" email

Make

program_application.sponsor_approved

Stripe → Create Checkout Session for deposit

Slack App

program_application.rejected

Post to #impact‑alerts with reason

HubSpot

applicant.joined_waitlist

Create Deal & assign advisor


7. Troubleshooting

Issue

Cause

Fix

Duplicate actions

Retries after timeout

De‑dupe with delivery_id

Signature mismatch

Wrong secret

Use raw body + correct secret

Deliveries show Failed

Non‑2xx response

Respond 200 OK quickly, then process async

Did this answer your question?