A comprehensive collection of resources, code examples, and best practices for implementing webhooks with Adobe Learning Manager (ALM).
- Setup Guide - Step-by-step webhook configuration in ALM
- Authentication Guide - Security options and implementation
- Use Cases - 20 practical webhook applications
- Use Cases by Role - Role-specific implementations
- Webhook Limits Analysis - Understanding the 5-webhook limitation
- Scale Analysis - Handling millions of learners
- Basic Receiver - Simple PHP webhook endpoint
- Secure Receiver - Production-ready with signature validation
- Production Webhook - Full-featured compliance tracking with SQLite database
- Compliance Dashboard - Real-time monitoring dashboard with auto-refresh
-
Install Dependencies
sudo apt-get install php php-sqlite3
-
Deploy Files
# Copy src/ to your web server cp -r src/ /var/www/alm-webhooks/ # Set permissions chown -R www-data:www-data /var/www/alm-webhooks/ mkdir -p /var/www/alm-webhooks/{data,logs} chmod 775 /var/www/alm-webhooks/{data,logs}
-
Configure in ALM
- Login as Integration Administrator
- Navigate to Webhooks → Add Webhook
- Enter your webhook URL:
https://yourdomain.com/path/to/webhook-alm.php - Select events: COURSE_ENROLLMENT_BATCH, LEARNER_PROGRESS, COURSE_COMPLETION
- Choose Signature authentication (recommended)
-
Monitor via Dashboard
- Access dashboard at:
https://yourdomain.com/path/to/dashboard.php - View real-time compliance tracking
- Monitor webhook events and activity logs
- Auto-refreshes every 30 seconds
- Access dashboard at:
-
Test Locally
# Start PHP server cd src/ php -S localhost:8000 webhook-receiver.php # Expose with ngrok ngrok http 8000
-
Verify Setup
- ALM sends a challenge parameter
- Your endpoint must echo it back
- Check logs for incoming events
- Always use HTTPS in production
- Choose Signature authentication for best security
- Validate all incoming data before processing
- Implement rate limiting to prevent abuse
- Log security events for monitoring
LEARNER_PROGRESS- Module completion updatesCI_STATS- Course instance statistics
COURSE_ENROLLMENT_BATCH- Bulk enrollmentsLEARNER_COMPLETION- Completion markingLEARNING_OBJECT_DRAFT- Content creationLEARNING_OBJECT_MODIFICATION- Content updates
ALM → Your Webhook Endpoint → Your Systems
ALM → Webhook Router → Message Queue → Multiple Consumers
- Maximum 5 webhooks per account
- Events retained for 7 days
- Not available for trial accounts
- Some events have processing delays
For large deployments:
1M learners × 10 events/day × 5 webhooks = 50M HTTP calls/day
Consider event streaming or batch exports for high-volume scenarios.
Feel free to submit issues, fork the repository, and create pull requests for any improvements.
This project is licensed under the MIT License - see the LICENSE file for details.
Live Demo Instance:
- Webhook:
https://p0qp0q.com/AdobeLearningManager_Webhook_Demo/src/webhook-alm.php - Dashboard:
https://p0qp0q.com/AdobeLearningManager_Webhook_Demo/src/dashboard.php - Deployed: October 2025
- Status: Active and receiving events from Adobe Learning Manager
Stack:
- PHP 8.3 with SQLite3
- Apache 2.4 on Ubuntu 24.04
- SSL/HTTPS via Let's Encrypt
Note: This is an unofficial guide created for educational purposes. For official support, please contact Adobe.