Skip to main content

Framework for Messaging

Project description

License: AGPL v3 Python CI Publish package to PyPi Status PyPI Travis Codecov Documentation Supported Python versions


The automated communication engine, A.C.E. for short, is a Django app for messaging learners on the Open edX platform. This app can be installed in any Open edX project, but has only been tested with edx-platform. Email delivery (via Sailthru and Django Email) are the currently supported delivery channels. In the future we may add support for other delivery channels such as push notifications.

Getting Started

For instructions on starting local development, see Getting Started.

Getting Help


See the documentation. If you need more help see below.

More Help

If you’re having trouble, we have discussion forums at where you can connect with others in the community.

Our real-time conversations are on Slack. You can request a Slack invitation, then join our community Slack workspace.

For anything non-trivial, the best path is to open an issue in this repository with as many details about the issue you are facing as you can provide.

For more information about these options, see the Getting Help page.


The code in this repository is licensed under the AGPL 3.0 unless otherwise noted.

Please see LICENSE.txt for details.


Contributions are very welcome.

Please read How To Contribute for details.

Even though they were written with edx-platform in mind, the guidelines should be followed for Open edX code in general.

PR description template should be automatically applied if you are sending PR from github interface; otherwise you can find it at

Issue report template should be automatically applied if you are sending it from github UI as well; otherwise you can find it at

The Open edX Code of Conduct

All community members are expected to follow the Open edX Code of Conduct.


The assigned maintainers for this component and other project details may be found in Backstage. Backstage pulls this data from the catalog-info.yaml file in this repo.

Reporting Security Issues

Please do not report security issues in public. Please email

Change Log


[1.6.1] - 2023-02-07

[1.5.0] - 2022-02-15

  • Added support for Django40

  • Removed support for Django22, 30 and 31

[1.4.1] - 2021-12-06

  • Adds in the ability to override frequency caps for Braze emails. Can be accessed via Message options using the key override_frequency_capping. All emails containing the transactional Message option will also override frequency caps.

[1.4.0] - 2021-11-08

  • Deprecate the action_links property

  • Add a get_action_links method and template tag to allow passing arguments to action links

[1.3.1] - 2021-08-17

  • Adjust name handles_delivery_for_message to overrides_delivery_for_message

[1.3.0] - 2021-08-16

  • New channel method handles_delivery_for_message for allowing a default channel to claim a message, even if it would normally be delivered to the configured transactional channel.

  • Braze: Will handle any message defined in ACE_CHANNEL_BRAZE_CAMPAIGNS (using the above new feature) to steal campaign messages from the transactional channel as needed.

[1.2.0] - 2021-07-16

  • Added support for django 3.2

[1.1.1] - 2021-07-09

  • Removed upper constraint from Django

[1.1.0] - 2021-03-26

  • Braze: Add ACE_CHANNEL_BRAZE_FROM_EMAIL setting to override the normal from address

  • Sailthru: Remove Braze rollout waffle flag

[1.0.1] - 2021-03-15

  • Braze: Add an unsubscribe action link

  • Braze: Don’t ask Braze to inline css, as ACE templates already have inline css

[1.0.0] - 2021-03-11

  • BREAKING: Recipient objects now take lms_user_id instead of username

  • New braze_email backend, needing the following new configuration:




    • ACE_CHANNEL_BRAZE_CAMPAIGNS (an optional dictionary of ACE message names to Braze campaign identifiers)

[0.1.18] - 2020-11-19

  • Updated he travis-badge in README.rst to point to

[0.1.17] - 2020-10-19

  • Use IntEnum to avoid silent failure in value comparisons

[0.1.16] - 2020-10-17

  • Fixed Enum usage for Python 3.8 to avoid TypeError when comparing values

[0.1.15] - 2020-03-11

  • Added support for Python 3.8

  • Removed support for Django 2.0 and 2.1

[0.1.14] - 2020-03-11

  • Fix trivial warning from deprecated use of attr library.

[0.1.13] - 2019-12-06

  • Django22 Support.

[0.1.12] - 2019-10-16

  • Reply_to field added in emails.

[0.1.10] - 2018-11-01

  • Django lazy text translations are handled properly.

[0.1.9] - 2018-07-13

  • Updated delivery logging

[0.1.0] - 2017-08-08


  • First release on PyPI.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

edx-ace-1.6.1.tar.gz (52.2 kB view hashes)

Uploaded source

Built Distribution

edx_ace-1.6.1-py2.py3-none-any.whl (58.9 kB view hashes)

Uploaded py2 py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page