# phoenix_kit_emails v0.4.2 - 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.ArchiveWorker](PhoenixKit.Modules.Emails.ArchiveWorker.md): The scheduled half of S3 archival. - [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.