feat: add transactional emails for order confirmation and shipping
Plain text emails via Swoosh OrderNotifier module. Order confirmation triggered from Stripe webhook after payment, shipping notification from Printify shipment webhook with polling fallback. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
15
PROGRESS.md
15
PROGRESS.md
@@ -17,9 +17,10 @@
|
||||
- Admin credentials page with guided Stripe setup flow
|
||||
- Encrypted settings for API keys and secrets
|
||||
- Search modal with keyboard shortcut
|
||||
- Transactional emails (order confirmation, shipping notification)
|
||||
- Demo content polished and ready for production
|
||||
|
||||
**Next up:** Transactional emails — order confirmation and shipping notifications (Tier 1, Roadmap #3)
|
||||
**Next up:** Default content pages — terms, privacy, delivery policy (Tier 1, Roadmap #4)
|
||||
|
||||
## Roadmap
|
||||
|
||||
@@ -27,7 +28,7 @@
|
||||
|
||||
1. ~~**Order management admin**~~ — ✅ Complete (02cdc81). Admin UI at `/admin/orders` with status filter tabs, streamed order table, and detail view showing items, totals, and shipping address.
|
||||
2. ~~**Orders & fulfilment**~~ — ✅ Complete. Submit paid orders to Printify, track fulfilment status (submitted → processing → shipped → delivered), webhook-driven status updates with polling fallback, admin UI with submit/refresh actions.
|
||||
3. **Transactional emails** — Order confirmation email on payment. Shipping notification with tracking link. Use Swoosh (already configured) with a simple HTML template.
|
||||
3. ~~**Transactional emails**~~ — ✅ Complete. Plain text order confirmation (on payment via Stripe webhook) and shipping notification (on dispatch via Printify webhook + polling fallback). OrderNotifier module, 10 tests.
|
||||
4. **Default content pages** — Static pages for terms of service, delivery & refunds policy, and privacy policy. Needed for legal compliance before taking real orders. Can be simple markdown-rendered pages initially, upgraded to editable via page editor later.
|
||||
|
||||
### Tier 2 — Production readiness (can deploy and run reliably)
|
||||
@@ -172,7 +173,7 @@ See: [ROADMAP.md](ROADMAP.md) for design notes
|
||||
- CSSCache test startup crash fixed (handle_continue pattern)
|
||||
|
||||
### Orders & Fulfilment
|
||||
**Status:** Complete (checkout, admin, fulfilment). Transactional emails pending (Roadmap #3).
|
||||
**Status:** Complete
|
||||
|
||||
- [x] Orders context with schemas (ff1bc48)
|
||||
- [x] Stripe Checkout integration with webhook handling
|
||||
@@ -191,7 +192,12 @@ See: [ROADMAP.md](ROADMAP.md) for design notes
|
||||
- Stripe webhook auto-enqueues submission after payment confirmed
|
||||
- Admin UI: fulfilment badge column, fulfilment card with tracking, submit/refresh buttons
|
||||
- Mox provider mocking for test isolation, 33 new tests (555 total)
|
||||
- [ ] Transactional emails (Roadmap #3)
|
||||
- [x] Transactional emails (Roadmap #3)
|
||||
- OrderNotifier module with plain text emails via Swoosh
|
||||
- Order confirmation sent from Stripe webhook after payment + address/email updates
|
||||
- Shipping notification sent from Printify shipment webhook + polling fallback
|
||||
- Guards for missing customer_email, graceful tracking info handling
|
||||
- 10 tests (565 total)
|
||||
|
||||
See: [docs/plans/products-context.md](docs/plans/products-context.md) for schema design
|
||||
|
||||
@@ -208,6 +214,7 @@ See: [docs/plans/page-builder.md](docs/plans/page-builder.md) for design
|
||||
|
||||
| Feature | Commit | Notes |
|
||||
|---------|--------|-------|
|
||||
| Transactional emails | — | Plain text order confirmation + shipping notification, 10 tests |
|
||||
| Printify order submission & fulfilment | — | Submit, track, webhooks, polling, admin UI, 33 tests |
|
||||
| Order management admin | 02cdc81 | List/detail views, status filters, 15 tests |
|
||||
| Encrypted settings & Stripe setup | eede9bb | Guided setup flow, encrypted secrets, admin credentials page |
|
||||
|
||||
Reference in New Issue
Block a user