Knowledge base Rise Up

Configure and Manage Webhooks in Rise Up

  • Updated

Prerequisites
Administrative access to the Rise Up platform.
Basic understanding of web technologies and APIs.
Access to client or connector URL configuration.

Webhooks are a standardization that allows real-time data transfer from Rise Up. You can subscribe to specific topics to receive a stream of live updates (e.g., every time a Rise Up user is created, I receive the information in one second). This feature is designed for use by an administrator with sufficiently advanced technical knowledge.

What is possible:
External platforms can receive real-time data from Rise Up (users, trainings, training enrollments, progress).

What is not feasible:
Rise Up is not synchronized with external data.
Does not remove integration pains of the client or partner.

Feature Overview:
Webhooks allow web applications to communicate with each other by sending automated messages to notify others that a new event has occurred. In a typical API, the client-side application calls the server-side application and consumes data. Webhooks are often called 'reverse APIs' because they reverse this relationship.
Instead of the server waiting for news from the client, the server-side application will call the client-side application via an endpoint URL provided by the client application. This endpoint URL (provided by the client and consumed by the server-side application) is a webhook.

Access the Webhook Creation Page

Access the webhook management section in your admin dashboard by clicking on the gear icon .
Webhook_create_en.png

Configure Webhook Settings

On the webhook creation page, there are several fields. Except for checkboxes, all are required.

  1. Webhook Name: Name that will be displayed on the platform. Useful for the administrator to quickly identify the item.
  2. Webhook URL: Client or connector URL where Rise Up will send the data. This URL must be valid and accessible at all times by Rise Up.
    Example —> 'https://www.riseup.com/integration/Subscriptions/users'
  3. Entity: List of items on which the webhook will keep the client informed, only one entity can be selected.
    Example 'Training Enrollment' —> will send information for each training enrollment in the company. This can be a creation, deletion, completion, etc.
  4. Actions: Filters on the list of actions to subscribe to, one or more actions can be selected.
  5. Enable Authentication: Adds an authorization header containing a base64 encoding of the user password you mention. You can restrict your subscription to allow only requests coming with this header.
  6. Enable Hmac Signature: Adds a 'X-RISEUP-SIGNATURE' header containing an hmac signature of the event payload with a secret of your choice. This is a more secure (but more complex) way to ensure the security of your webhooks.

Webhook Audit List:

Once a webhook is properly configured, events will start being sent to the subscription. On this interface, the administrator can review the different events sent via their webhooks. This is valuable for any debugging required during the development phase. There are 4 different states for an event:

Scheduled: The event is about to be sent.
Succeeded: The event is successfully sent and received by the client.
Failed: The client responds with a 5xx or 4xx error.
Canceled: Disabling a webhook will cancel scheduled events.

Event List 

Here is a quick overview of the entire list of events. For a more comprehensive list, please refer to the API Documentation. For each of these entities, we send an event when an item is either created, updated, or deleted. Depending on the entity, specific information may be sent via a payload or specific event type. Here is a list with entities and their specifics:

Webhooks_eventlist_en.png

Managing Webhook Delays and Errors

Webhook execution can fail due to timeouts or errors.
For each event whose webhook call fails, calls are retried up to 7 times according to the following schedules:
Webhooks_timing_en.png

To mark a webhook notification as successful, we expect the HTTP status code to be 2XX from the webhook URL.
If we do not receive a 2XX response code, we retry calling.

Monitor Webhook Activity

Access the webhook audit section to review events sent via your webhook. This is crucial for debugging and ensuring smooth operation.

Webhooks_auditpist_en.png

Webhooks_listeaudit_en.png

Event Details

Event details include specific information about each type of event, such as classroom sessions, classroom session enrollments, trainings, training requests, training enrollments, groups, learning paths, etc. These details are sent as a JSON payload with information such as creation date, update date, status, ID, title, language, educational duration, etc.

For more information, please refer to the Rise Up API documentation.

view
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Event creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1, // Classroom session ID
    "title": "session title",
    "start_date": "2024-10-11T00:00:00.000000Z",
    "end_date": "2024-10-12T16:00:00.000000Z",
    "timezone": "Europe/Paris",
    "state": "pending",
    "meeting_url": null,
    "location": "Paris",
    "language": "English",
    "room": null,
    "edu_duration": 6,
    "seats": 30,
    "reference": null
  },
  "sent_at": "2024-10-10T16:14:47.149305Z",
  "event_type": "classroom_session_created",
  "company_id": 6499,
  "id": 237848
}
    

Classroom Session Enrollment

view
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "state": "pending",
    "edu_duration": 17,
    "reference": null,
    "attended": null,
    "user": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "firstname": "test_firstname",
      "lastname": "test_lastname",
      "email": "test_email",
      "username": "test_username",
      "role": "admin",
      "id_partner": null,
      "language": "english",
      "rhid": null
    },
    "classroom_session": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "title": "session title",
      "start_date": "2024-10-11T00:00:00.000000Z",
      "end_date": "2024-10-12T16:00:00.000000Z",
      "timezone": "Europe/Paris",
      "state": "pending",
      "meeting_url": null,
      "location": "Paris",
      "language": "English",
      "room": null,
      "edu_duration": 6,
      "seats": 30,
      "reference": null
    }
  },
  "sent_at": "2024-10-10T16:17:15.493462Z",
  "event_type": "classroom_session_registration_created",
  "company_id": 6499,
  "id": 237853
}
    

Training

view
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Course creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "title": "Training test",
    "language": "English",
    "skills": [
      "skill_one",
      "skill_two"
    ],
    "reference": null,
    "categories": [
      "category_one"
    ],
    "keywords": [],
    "edu_duration": 10
  },
  "sent_at": "2024-10-10T16:18:45.946478Z",
  "event_type": "course_created",
  "company_id": 6499,
  "id": 237856
}
    

Training Request

view
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Request creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "description": "test description of the training request",
    "reason": "test Reason of the training request",
    "duration": 10,
    "location": "test Location of the training request",
    "theme": null,
    "objectives": "test_objectives",
    "organism_request": null,
    "state": "pending",
    "concerned_users": [],
    "requester": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "firstname": "test_firstname",
      "lastname": "test_lastname",
      "email": "test_email",
      "username": "test_username",
      "role": "admin",
      "id_partner": null,
      "language": "english",
      "rhid": null
    },
    "course": null
  },
  "sent_at": "2024-10-10T16:19:20.097978Z",
  "event_type": "course_request_created",
  "company_id": 6499,
  "id": 237858
}
    

Training Enrollment

view
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "state": "validated",
    "progress": 50,
    "reference": null,
    "score": 10,
    "total_time": 13,
    "user_validator": null,
    "course": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "title": "Training test",
      "language": "English",
      "skills": [
        "skill_one",
        "skill_two"
      ],
      "reference": null,
      "categories": [
        "category_one"
      ],
      "keywords": [],
      "edu_duration": 10
    },
    "user": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "firstname": "test_firstname",
      "lastname": "test_lastname",
      "email": "test_email",
      "username": "test_username",
      "role": "admin",
      "id_partner": null,
      "language": "english",
      "rhid": null
    }
  },
  "sent_at": "2024-10-10T16:18:59.116893Z",
  "event_type": "course_registration_created",
  "company_id": 6499,
  "id": 237857
}
    

Group

view
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Group creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "name": "Group test",
    "id_partner": null,
    "reference": null
  },
  "sent_at": "2024-10-10T16:19:34.536209Z",
  "event_type": "group_created",
  "company_id": 6499,
  "id": 237860
}
    

Training Path

view
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Path creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "title": "test training path title",
    "id_partner": null
  },
  "sent_at": "2024-10-10T16:22:38.324490Z",
  "event_type": "learning_path_created",
  "company_id": 6499,
  "id": 237867
}
    

Training Path Enrollment

view
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "state": "cancelled",
    "progress": 75,
    "score": 1250,
    "total_time": 15,
    "learning_path": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "title": "test training path title",
      "id_partner": null
    },
    "user": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "firstname": "test_firstname",
      "lastname": "test_lastname",
      "email": "test_email",
      "username": "test_username",
      "role": "admin",
      "id_partner": null,
      "language": "english",
      "rhid": null
    }
  },
  "sent_at": "2024-10-10T16:25:05.054835Z",
  "event_type": "learning_path_registration_created",
  "company_id": 6499,
  "id": 237878
}
    

Step Progress

view
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // When Learner is registered to course
    "updated_date": "2024-10-10T13:00:00.000000Z", // When Last step was performed
    "deleted_date": null,
    "id": 1, // userstepstate Id (See API definition)
    "course_subscription_id": 1, // Course subscription Id (see API definition)
    "progression": 0, // From 0 to 100 is the % of completion
    "timespent": 0 // Number of seconds passed on training
  },
  "sent_at": "2024-10-10T13:16:35.118826Z",
  "event_type": "step_progress",
  "company_id": 6499,
  "id": 236761 // Unique ID of webhook, used for idempotency
}
    

User

view
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // User creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "firstname": "test_firstname",
    "lastname": "test_lastname",
    "email": "test_email",
    "username": "test_username",
    "role": "admin",
    "id_partner": null,
    "language": "english",
    "rhid": null
  },
  "sent_at": "2024-10-10T16:23:20.428155Z",
  "event_type": "user_created",
  "company_id": 6499,
  "id": 237870
}
    

Objective Enrollment

view
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "state": "validated",
    "progress": 50,
    "end_date": "2024-10-11T00:00:00.000000Z",
    "experience_points": 1000,
    "objective": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "title": "Test objective",
      "start_date": "2024-10-11T00:00:00.000000Z",
      "end_date": "2024-10-12T16:00:00.000000Z",
      "experience_points": 1500
    },
    "user": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "firstname": "test_firstname",
      "lastname": "test_lastname",
      "email": "test_email",
      "username": "test_username",
      "role": "admin",
      "id_partner": null,
      "language": "english",
      "rhid": null
    }
  },
  "sent_at": "2024-10-10T16:23:05.907077Z",
  "event_type": "objective_registration_created",
  "company_id": 6499,
  "id": 237868
}
    
  • Problem: The webhook does not trigger as expected.
    Solution: Check the accessibility of the webhook URL and ensure that the selected actions and entities match the events you wish to capture. Review the webhook logs for any errors.
    Problem: Errors when receiving data on the client side.
    Solution: Ensure the client endpoint is configured to accept POST requests and can handle incoming data formats. Check for any authentication or signature incompatibilities.
  • Can multiple webhooks be set for different entities?
    - Yes, you can configure multiple webhooks, each for different entities and actions according to your needs.
    Can I set up more than 5 webhooks?
    - Yes, you can, but only after contacting customer support. After reaching level 3, we can increase the number of webhooks.
    Is webhook delivery fast?
    - Webhook delivery is relative to the environment. All our production webhooks should be sent in under a minute. In pre-production, the goal is 10 minutes.
    Are webhooks secure?
    - Webhooks can be secured using authentication headers and HMAC signatures to ensure data is only accessible to authorized recipients.
  • [Technical documentation of webhooks API Documentation for detailed list of entities and actions]

    For further assistance, submit a request:
    [Rise Up Support Request]

Was this article helpful?

0 out of 0 found this helpful

Have more questions? Submit a request