Skip to content

Tracking: Add optional email open tracking - #9124

Merged
christianbeeznest merged 2 commits into
chamilo:masterfrom
christianbeeznest:feature/email-open-tracking-9072
Sep 24, 2026
Merged

christianbeeznest merged 2 commits into
chamilo:masterfrom
christianbeeznest:feature/email-open-tracking-9072

Conversation

@christianbeeznest

@christianbeeznest christianbeeznest commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Closes #9072.

Adds optional per-recipient e-mail open tracking for Messages using a random tracking token and a transparent tracking pixel.

  • Adds a unique tracking token per e-mail recipient.
  • Records the first opening timestamp.
  • Keeps e-mail opening separate from the internal message read status.
  • Adds a public tracking-pixel endpoint.
  • Adds the mail.enable_email_open_tracking setting, disabled by default.
  • Shows e-mail opening information in Sent messages.
  • Supports current web, mobile and legacy message sending flows.
  • Adds the required database migration and regression tests.

Local validation:

  • Frontend build: OK
  • Symfony container lint: OK
  • MessageRepositoryTest: 10/10, 92 assertions
  • MessageEmailOpenTrackingServiceTest: 2/2, 17 assertions
  • git diff --check: OK

A real e-mail opening still needs to be validated on testing26.beeznest.com because the local development environment does not have a working mail server.

Tested on testing26.
The full tracking flow works as expected: per-recipient tokens are generated when enabled, the public 1x1 GIF endpoint records the first opening timestamp, repeated requests keep the original timestamp, and disabling the setting prevents token generation.
Real SMTP delivery could not be tested because the test server mail service is not currently working.

@christianbeeznest
christianbeeznest merged commit cf98585 into chamilo:master Sep 24, 2026
4 of 6 checks passed
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.

Tracking e-mail delivery/opening

1 participant