Skip to content

Feature/ses enrollment email templates#294

Draft
nthriveni-sonata-ship-it wants to merge 3 commits into
edx:release-ulmofrom
nthriveni-sonata-ship-it:feature/ses-enrollment-email-templates
Draft

Feature/ses enrollment email templates#294
nthriveni-sonata-ship-it wants to merge 3 commits into
edx:release-ulmofrom
nthriveni-sonata-ship-it:feature/ses-enrollment-email-templates

Conversation

@nthriveni-sonata-ship-it
Copy link
Copy Markdown
Member

Context

Course enrollment emails are currently sent via Braze Canvas, where:

  • Email templates (HTML, layout, styling) are managed in Braze
  • The backend only sends canvas_entry_properties
  • Django templates are not part of the active rendering flow

What This PR Contains

This PR introduces draft Django email templates for course enrollment:

  • English and Spanish templates
  • Header and footer partials
  • Supporting static assets added under:
lms/static/images/enrollment_email/
  • Initial backend scaffolding in tasks.py to support future SES rendering

These templates are designed to replicate the current Braze email design and behavior.


Important — Review-Only PR

This PR is not intended to be merged.

It is shared strictly for:

  • Template structure review
  • Visual/design parity validation with Braze
  • Early feedback before implementation

There are no functional changes and no impact on the current email flow.

Braze remains the only active rendering mechanism.


Backend Notes (Scope Clarification)

tasks.py includes preparatory changes only:

  • A helper for building image URLs has been introduced
  • SES-related logic is present but commented out and inactive
  • These changes are incomplete by design and not wired into any execution path

tasks.py is not part of the review scope for this PR.


Why Templates Are in edx-platform (and not edx-themes)

These templates are intentionally added to edx-platform for this review.

Reason

They are:

  • Not part of runtime rendering
  • Not integrated into the email sending flow
  • Still under iteration and validation

Adding them to edx-themes at this stage would:

  • Imply they are active or production-ready
  • Create confusion about whether Braze or Django is responsible for rendering
  • Introduce inactive templates into the theming layer

Intentional Placement

Placing them in edx-platform:

  • Clearly scopes them as draft, under-review artifacts
  • Avoids premature coupling with theming
  • Aligns with their current status as non-executed code

What Comes Next

After review and alignment:

  • Templates will be refined based on feedback
  • SES-based rendering will be implemented
  • The flow will be gated via a waffle flag:
ON  → Django/SES templates
OFF → Braze Canvas

Once templates are part of the active rendering flow, theming considerations (including edx-themes) can be revisited.


Testing

Templates have been validated locally for:

  • Structure
  • Layout
  • Conditional rendering

No runtime behavior changes are introduced.


Summary

This PR serves as a design and structure review checkpoint:

  • No impact on production behavior
  • No changes to the current Braze flow
  • Templates are intentionally kept in edx-platform as non-active, review-only artifacts

Comment thread common/djangoapps/student/tasks.py Outdated
Build absolute URLs for enrollment email images.

This function constructs full image URLs for SES email delivery. When Braze renders
the email through SES, it needs absolute URLs because email clients cannot resolve
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sort of confused by the explanation here, since Braze shouldn't be involved in triggering an email to SES. Can you clarify what you mean by "When Braze renders the email through SES"?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the wording there is incorrect.
What I intended to convey is that email clients require fully qualified image URLs since relative/static asset paths are not resolvable outside the LMS environment.
I’ll update the comment to make that clearer and remove the Braze reference.

@nthriveni-sonata-ship-it nthriveni-sonata-ship-it force-pushed the feature/ses-enrollment-email-templates branch 2 times, most recently from abf07ab to d96e195 Compare May 19, 2026 04:11
@nthriveni-sonata-ship-it nthriveni-sonata-ship-it force-pushed the feature/ses-enrollment-email-templates branch from d96e195 to f571e8a Compare May 21, 2026 14:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants