# phoenix_kit_emails v0.3.0 - Table of Contents

> Email tracking, analytics, and AWS SES integration for PhoenixKit

## Pages

- [PhoenixKitEmails](readme.md)
- [Changelog](changelog.md)
- [MIT License](license.md)

## Modules

- [PhoenixKit.Modules.Emails](PhoenixKit.Modules.Emails.md): Email system for PhoenixKit - main API module.
- [PhoenixKit.Modules.Emails.ApplicationIntegration](PhoenixKit.Modules.Emails.ApplicationIntegration.md): Registers unified email provider on startup.
- [PhoenixKit.Modules.Emails.Archiver](PhoenixKit.Modules.Emails.Archiver.md): Archive and compress old email tracking data for optimal storage.
- [PhoenixKit.Modules.Emails.AwsIntegrations](PhoenixKit.Modules.Emails.AwsIntegrations.md): Shared "which AWS SES account(s) are actually active" resolution, used by
everything that needs to reach AWS on behalf of the currently-configured
sender(s): `SQSPollingJob` (the background poll), the per-account tracking
settings in the "Amazon SES & SQS" section, and the "Delivery Event
Tracking" panel's per-account opt-out list.
- [PhoenixKit.Modules.Emails.BrevoClient](PhoenixKit.Modules.Emails.BrevoClient.md): Thin wrapper around the Brevo transactional-email events API
(`GET /v3/smtp/statistics/events`).
- [PhoenixKit.Modules.Emails.BrevoEventNormalizer](PhoenixKit.Modules.Emails.BrevoEventNormalizer.md): Normalizes a single event from Brevo's `GET /v3/smtp/statistics/events`
response into the same event-data shape `SQSProcessor.process_email_event/1`
already accepts for AWS SES — see that function's `@doc` for the exact
contract. `SQSProcessor` itself is untouched: every `process_*_event/1`
function stays SES-shaped, this module's only job is translating Brevo's
vocabulary into it.
- [PhoenixKit.Modules.Emails.BrevoIntegrations](PhoenixKit.Modules.Emails.BrevoIntegrations.md): Shared "which Brevo account(s) are actually active" resolution, used by
everything that needs to reach the Brevo events API on behalf of the
currently-configured sender(s): `BrevoPollingJob` (the background
poll), `BrevoOnDemandSync` (the "sync now" button), and the "Brevo
Events" settings section's per-account opt-out list.
- [PhoenixKit.Modules.Emails.BrevoOnDemandSync](PhoenixKit.Modules.Emails.BrevoOnDemandSync.md): On-demand, targeted Brevo event fetch for a single email log — the
Brevo-aware branch of the "sync status now" button (Details page and
the emails list row menu both call it). Unlike `BrevoPollingJob`'s
broad polling cycle, this queries Brevo's events API filtered to
exactly one `messageId` — the cheapest, most precise request the API
supports.
- [PhoenixKit.Modules.Emails.BrevoPollingJob](PhoenixKit.Modules.Emails.BrevoPollingJob.md): Oban worker for polling the Brevo transactional-email events API.
- [PhoenixKit.Modules.Emails.BrevoPollingManager](PhoenixKit.Modules.Emails.BrevoPollingManager.md): Manager module for Brevo event polling via Oban jobs.
- [PhoenixKit.Modules.Emails.EmailBlocklist](PhoenixKit.Modules.Emails.EmailBlocklist.md): Email blocklist schema for storing blocked email addresses.
- [PhoenixKit.Modules.Emails.EmailLogData](PhoenixKit.Modules.Emails.EmailLogData.md): Struct representing extracted email data for logging.
- [PhoenixKit.Modules.Emails.Event](PhoenixKit.Modules.Emails.Event.md): Email event schema for managing delivery events in PhoenixKit.
- [PhoenixKit.Modules.Emails.EventTracker](PhoenixKit.Modules.Emails.EventTracker.md): Behaviour every provider delivery-event tracker implements (SES, Brevo,
future Mailgun/…). See
`dev_docs/specs/2026-07-26-email-event-tracking-universalization-spec.md`
§4.1 for the full design rationale.
- [PhoenixKit.Modules.Emails.EventTrackerReconcileWorker](PhoenixKit.Modules.Emails.EventTrackerReconcileWorker.md): The correctness backbone of the tracker lifecycle (spec §4.3): a
low-frequency Oban `Cron` entry that calls
`EventTrackerReconciler.reconcile/0` for every registered tracker.
- [PhoenixKit.Modules.Emails.EventTrackerReconciler](PhoenixKit.Modules.Emails.EventTrackerReconciler.md): Stateless reconcile — the single code path that starts/stops a
tracker's self-scheduling Oban chain, enforcing
`EventTracker.should_run?/1`. See spec §4.2/§4.3.
- [PhoenixKit.Modules.Emails.EventTrackerRegistry](PhoenixKit.Modules.Emails.EventTrackerRegistry.md): Emails-local registry of `EventTracker` implementations — decision §9.2
(option B) of the universalization spec: trackers all live in
`phoenix_kit_emails` today (Mailgun would too), so a compile-time list
here is simpler than a core module-registry callback for a cross-module
need that doesn't exist yet. Revisit only if a tracker must ship from a
different package.
- [PhoenixKit.Modules.Emails.Gettext](PhoenixKit.Modules.Emails.Gettext.md): Gettext backend for `phoenix_kit_emails`.
- [PhoenixKit.Modules.Emails.Interceptor](PhoenixKit.Modules.Emails.Interceptor.md): Email interceptor for logging outgoing emails in PhoenixKit.
- [PhoenixKit.Modules.Emails.Log](PhoenixKit.Modules.Emails.Log.md): Email logging for PhoenixKit - comprehensive logging in a single module.
- [PhoenixKit.Modules.Emails.Metrics](PhoenixKit.Modules.Emails.Metrics.md): Local metrics and analytics for PhoenixKit email tracking.
- [PhoenixKit.Modules.Emails.Migrations](PhoenixKit.Modules.Emails.Migrations.md): Module-owned versioned migrations for `phoenix_kit_emails` — the
decentralized-migrations protocol core's `mix phoenix_kit.update`
discovers via `c:PhoenixKit.Module.migration_module/0`:
`current_version/0` + `migrated_version_runtime/1` + idempotent `up/1` +
version-aware `down/1`. `PhoenixKit.Modules.Legal.Migrations` is the
reference implementation this chain is shaped after — same situation, and
V1 here is the same kind of step: an ADOPTION, not a create.
- [PhoenixKit.Modules.Emails.Paths](PhoenixKit.Modules.Emails.Paths.md): Centralized path helpers for Emails module.
- [PhoenixKit.Modules.Emails.Provider](PhoenixKit.Modules.Emails.Provider.md): Unified email provider for PhoenixKit.
- [PhoenixKit.Modules.Emails.Queue](PhoenixKit.Modules.Emails.Queue.md): Decides whether an outgoing message is sent inline or handed to Oban.
- [PhoenixKit.Modules.Emails.RateLimiter](PhoenixKit.Modules.Emails.RateLimiter.md): Rate limiting and spam protection for the email system.
- [PhoenixKit.Modules.Emails.SQSPollingJob](PhoenixKit.Modules.Emails.SQSPollingJob.md): Oban worker for polling AWS SQS queue for email events.
- [PhoenixKit.Modules.Emails.SQSPollingManager](PhoenixKit.Modules.Emails.SQSPollingManager.md): Manager module for SQS polling via Oban jobs.
- [PhoenixKit.Modules.Emails.SQSProcessor](PhoenixKit.Modules.Emails.SQSProcessor.md): Processor for handling email events from AWS SQS messages.
- [PhoenixKit.Modules.Emails.SecretScrubber](PhoenixKit.Modules.Emails.SecretScrubber.md): Removes single-use authentication tokens from email bodies before they are
persisted to the email log.
- [PhoenixKit.Modules.Emails.SendJob](PhoenixKit.Modules.Emails.SendJob.md): Delivers one queued message.
- [PhoenixKit.Modules.Emails.Status](PhoenixKit.Modules.Emails.Status.md): One snapshot of what the email system is actually doing right now.
- [PhoenixKit.Modules.Emails.Supervisor](PhoenixKit.Modules.Emails.Supervisor.md): Supervisor for PhoenixKit email tracking system.
- [PhoenixKit.Modules.Emails.TableColumns](PhoenixKit.Modules.Emails.TableColumns.md): Manages table column customization for email logs display.
- [PhoenixKit.Modules.Emails.Template](PhoenixKit.Modules.Emails.Template.md): Email template schema for managing reusable email templates.
- [PhoenixKit.Modules.Emails.Templates](PhoenixKit.Modules.Emails.Templates.md): Context module for managing email templates.
- [PhoenixKit.Modules.Emails.Utils](PhoenixKit.Modules.Emails.Utils.md): Utility functions for email handling in PhoenixKit.
- [PhoenixKit.Modules.Emails.Utils.Json](PhoenixKit.Modules.Emails.Utils.Json.md): Thin helper around Elixir's built-in `JSON` module (1.18+) for the one
thing it doesn't provide: pretty-printing.
- [PhoenixKit.Modules.Emails.Web.Blocklist](PhoenixKit.Modules.Emails.Web.Blocklist.md): LiveView for managing email blocklist and blocked addresses.
- [PhoenixKit.Modules.Emails.Web.Details](PhoenixKit.Modules.Emails.Web.Details.md): LiveView for displaying detailed information about a specific email log.
- [PhoenixKit.Modules.Emails.Web.EmailTracking](PhoenixKit.Modules.Emails.Web.EmailTracking.md): LiveView for email tracking system settings and configuration.
- [PhoenixKit.Modules.Emails.Web.Emails](PhoenixKit.Modules.Emails.Web.Emails.md): LiveView for displaying and managing emails in PhoenixKit admin panel.
- [PhoenixKit.Modules.Emails.Web.ExportController](PhoenixKit.Modules.Emails.Web.ExportController.md): Controller for exporting email tracking data to CSV format.
- [PhoenixKit.Modules.Emails.Web.Metrics](PhoenixKit.Modules.Emails.Web.Metrics.md): LiveView for email metrics and analytics dashboard.
- [PhoenixKit.Modules.Emails.Web.Queue](PhoenixKit.Modules.Emails.Web.Queue.md): LiveView for email queue monitoring and rate limit management.
- [PhoenixKit.Modules.Emails.Web.Routes](PhoenixKit.Modules.Emails.Web.Routes.md): Public route definitions for Emails module.
Admin LiveView routes are auto-generated from live_view: fields in admin_tabs/0.

- [PhoenixKit.Modules.Emails.Web.SettingsSections.AmazonSesSqs](PhoenixKit.Modules.Emails.Web.SettingsSections.AmazonSesSqs.md): The Amazon SES half of the "Delivery event tracking" panel: everything
SES-specific behind the expanded `aws_ses` row — which Integrations
connection supplies SES/SQS credentials, the per-account queues, one-click
infrastructure setup, and the SQS worker's tuning knobs.
- [PhoenixKit.Modules.Emails.Web.SettingsSections.DeliveryEventTracking](PhoenixKit.Modules.Emails.Web.SettingsSections.DeliveryEventTracking.md): "Delivery event tracking" section on the core Email Sending settings
page (`/admin/settings/email-sending`) — the unified, registry-driven
admin panel from the universalization spec (`dev_docs/specs/
2026-07-26-email-event-tracking-universalization-spec.md` §5). One row
per `EventTrackerRegistry.trackers/0` entry; a new provider (Mailgun,
…) appears automatically once it registers, no panel code to touch.
- [PhoenixKit.Modules.Emails.Web.SettingsSections.EmailTracking](PhoenixKit.Modules.Emails.Web.SettingsSections.EmailTracking.md): "Email Tracking" section on the core Email Sending settings page
(`/admin/settings/email-sending`).
- [PhoenixKit.Modules.Emails.Web.TemplateEditor](PhoenixKit.Modules.Emails.Web.TemplateEditor.md): LiveView for creating and editing email templates in PhoenixKit admin panel.
- [PhoenixKit.Modules.Emails.Web.Templates](PhoenixKit.Modules.Emails.Web.Templates.md): LiveView for displaying and managing email templates in PhoenixKit admin panel.
- [PhoenixKit.Modules.Emails.Web.WebhookController](PhoenixKit.Modules.Emails.Web.WebhookController.md): Secure webhook controller for AWS SNS email events.

## Mix Tasks

- [mix phoenix_kit_emails.install](Mix.Tasks.PhoenixKitEmails.Install.md): Installs PhoenixKit Emails module into parent application.

