Learner Communications
Overview
Bulk Communication covers the tools instructors use to send messages to enrolled learners at scale — course announcements, email campaigns, deadline reminders, and scheduled messages. This is primarily an email channel, though the edx-ace framework supports additional channels.
The modern bulk communication experience is delivered by frontend-app-communications, a dedicated MFE replacing the legacy email form in the instructor dashboard.
Current State (2026)
- Bulk email MFE:
frontend-app-communicationsprovides a rich compose interface with learner targeting - Targeting: Instructors can send to all enrolled learners, specific cohorts, specific enrollment modes (e.g., verified only), or learners meeting completion criteria
- Scheduling: Emails can be scheduled for future delivery
edx-ace: The Async Communication Engine provides channel abstraction (email, push, SMS) and templating- Backend: Bulk email backend in
edx-platformuses Celery for async delivery; configured with SMTP or transactional email providers
Architecture
- Frontend:
frontend-app-communicationssends compose/schedule requests toedx-platformAPIs - Backend:
edx-platformbulk_email/module manages email tasks;edx-aceprovides channel routing and templating - Celery delivery: Each email sent as an individual Celery task; throttled to avoid overwhelming email providers
- Targeting logic: Learner queries run at send time against enrollment and cohort tables
- Bounce handling: Opt-out/unsubscribe handled by
edx-ace; learners can opt out of instructor emails
Relevant Repositories
| Repository | Role in This Feature | Activity Level | Notes |
|---|---|---|---|
| openedx/frontend-app-communications | Bulk communication MFE | Medium | Modern compose UI |
| openedx/openedx-platform | Bulk email backend, Celery tasks, targeting | High | Core delivery system |
| openedx/edx-ace | Async Communication Engine | Medium | Channel abstraction |
Recent Changes
frontend-app-communicationsmaturing as the primary email compose interface
History
Origin
- Year introduced: ~2013–2014 (instructor email launched early in edX)
- Initial implementation: Simple email form in instructor dashboard; Celery tasks for bulk delivery
- Context: At MOOC scale, instructors needed to communicate with thousands of learners simultaneously; regular email clients were not practical
Key Milestones
| Year | Milestone | Teams / People Involved |
|---|---|---|
| ~2013–2014 | Basic bulk email from instructor dashboard | Unknown |
| ~2017–2018 | edx-ace Async Communication Engine introduced | Unknown |
| ~2021–2022 | frontend-app-communications MFE development | Unknown |
People Who Shaped This Area
- Engineering: Unknown — open question for interview
- Product: Unknown — open question for interview
- Design: Unknown — open question for interview
Open Questions
- [ ] What was the original instructor email system design?
- [ ] Why was
edx-acebuilt as a separate library rather than using an off-the-shelf email framework? - [ ] What email providers are typically used in production Open edX deployments?
- [ ] What are the targeting criteria that instructors most commonly use?
- [ ] What drove the decision to build a dedicated communications MFE?