Search documentation of phoenix_kit

# PhoenixKit.Migrations.Postgres.V19 (phoenix_kit v1.7.87)

Copy Markdown View Source

PhoenixKit V19 Migration: Enhanced Email Status Tracking

Adds additional timestamp fields to phoenix_kit_email_logs table for comprehensive email lifecycle tracking, enabling full visibility from queue to delivery.

## Changes

### Email Logs Table (phoenix_kit_email_logs)

- Adds `queued_at` timestamp for when email enters send queue
- Adds `rejected_at` timestamp for provider rejections
- Adds `failed_at` timestamp for send failures
- Adds `delayed_at` timestamp for delivery delays

## Features

- Complete Lifecycle Tracking: Track emails from queued → sent → delivered
- Failure Timestamps: Precise timing for rejections and failures
- Delay Tracking: Monitor when emails experience delivery delays
- Status History: Enhanced audit trail with granular timestamps

## Email Status Flow

    QUEUED (queued_at) → SENT (sent_at) → DELIVERED (delivered_at)
                      ↘ FAILED (failed_at)
                      ↘ REJECTED (rejected_at)

    DELIVERED → OPENED (opened_at) → CLICKED (clicked_at)
             ↘ HARD_BOUNCED/SOFT_BOUNCED (bounced_at)
             ↘ COMPLAINT (complained_at)
             ↘ DELAYED (delayed_at)

## Usage Examples

    # Email queued for sending
    Log.create_log(%{..., status: "queued", queued_at: DateTime.utc_now()})

    # Email sent to provider
    Log.update_status(log, "sent", %{sent_at: DateTime.utc_now()})

    # Email delivery confirmed
    Log.mark_as_delivered(log, DateTime.utc_now())

    # Email rejected by provider
    Log.mark_as_rejected(log, "Invalid recipient", DateTime.utc_now())

## Summary

### Functions

down(opts)

Rollback the V19 migration.

up(opts)

Run the V19 migration to add enhanced email status tracking fields.

## Functions

# down(opts)

Rollback the V19 migration.

# up(opts)

Run the V19 migration to add enhanced email status tracking fields.