> ## Documentation Index
> Fetch the complete documentation index at: https://helloluciallc.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Resend Waitlist Outbound Email

<Note>
  Lucia uses Resend for outbound waitlist welcome emails. Postmark remains focused on inbound operational/system email intake.
</Note>

***

## Decision

Lucia uses:

```text theme={"dark"}
Resend → outbound waitlist confirmation / welcome email
Postmark → inbound operational and system email intake
```

This keeps waitlist email lightweight while preserving Postmark's existing role in Lucia's operational intake stack.

***

## Decision Status

```text theme={"dark"}
Decision made: yes
Implemented: yes
Configured: yes
Tested: yes
Canon updated after implementation: yes
```

Live milestone:

```text theme={"dark"}
Resend verified domain: send.hellolucia.ai
Cloudflare Pages env vars: configured
Waitlist endpoint: POST /api/waitlist
Live new-signup email test: passed
Live duplicate no-resend test: passed
```

***

## Rationale

Resend is preferred for the waitlist because:

```text theme={"dark"}
the account already exists
the UI is easy to use
the API is lightweight
the product is well suited to simple outbound confirmation emails
it avoids Mailchimp-style platform bloat
```

This is not a replacement for Postmark's operational email role.

***

## Service Boundary

| Email Category                        | Owner          |
| ------------------------------------- | -------------- |
| Waitlist confirmation email           | Resend         |
| Waitlist welcome email                | Resend         |
| Founder-style launch updates          | Resend for now |
| Inbound property/operator email       | Postmark       |
| Maintenance / operations intake email | Postmark       |

***

## Runtime Implementation

Current implementation:

```text theme={"dark"}
repo: hello-lucia/lucia-marketing
branch: main
hosting/runtime: Cloudflare Pages + Pages Function
function: functions/api/waitlist.js
route: POST /api/waitlist
storage: Supabase table lucia_waitlist_signups
email delivery: Resend Emails API
```

Current signup flow:

<div className="hl-flow-v"><span>Visitor submits waitlist form</span><span>Lucia stores signup record in Supabase</span><span>Lucia sends welcome email through Resend for new signups</span><span>Lucia returns welcome\_email.attempted / sent / id in the endpoint response</span></div>

Duplicate behavior:

```text theme={"dark"}
duplicate email → ok:true duplicate:true
no new Resend email sent
```

Failure behavior:

```text theme={"dark"}
storage failure → signup fails
Resend failure after storage success → signup remains saved and welcome_email.sent:false is returned
```

***

## Current Stored Fields

Current Supabase waitlist insert captures:

```text theme={"dark"}
email
source
referrer
user_agent
```

Current source value:

```text theme={"dark"}
hellolucia.ai
```

***

## Current Known Gap

The implementation currently returns the Resend message id from the live endpoint when sending succeeds, but does not yet persist that id or send status back into Supabase.

Current truth:

```text theme={"dark"}
Resend message id returned: yes
Resend message id stored in Supabase: no
welcome email status stored in Supabase: no
welcome email sent_at stored in Supabase: no
```

This is an intentional known gap, not a blocker for the current waitlist milestone.

***

## Future Audit Fields

Recommended future fields if/when audit tracking is needed:

```text theme={"dark"}
welcome_email_status
resend_message_id
welcome_email_sent_at
welcome_email_error
```

Optional growth/attribution fields:

```text theme={"dark"}
name
role
property_count
interest_area
utm_source
utm_medium
utm_campaign
```

***

## Truth-State Requirements

Allowed states:

```text theme={"dark"}
not_configured
send_not_attempted
send_attempted
sent
failed
duplicate_no_resend
```

Forbidden claims:

```text theme={"dark"}
email sent
welcome delivered
signup confirmed externally
```

unless supported by actual system state or Resend success response.

***

## Related Canon Updates

This implementation updates the status of:

```text theme={"dark"}
50 Infrastructure/Email Services.md
60 Marketing/Waitlist Welcome Email.md
80 Decisions/Resend Waitlist Outbound Email.md
85 Releases/00 - Release Log.md
Start Here ~ Lucia AI/02 - Current System State.md
50 Infrastructure/00 - START HERE - Infrastructure.md
50 Infrastructure/11 - Domains and Live Routing.md
80 Decisions/Lucia Decision Log.md
```
