# F-152 — Acceptance Criteria - Feature ID: F-152 ## Account creation → welcome email - Escenario: customer registers with a new email. - Given SMTP is configured and `POST /auth/register` is called with valid email+password - When registration succeeds - Then a welcome email (`account_created`) is sent to that email - And the response is still 200 with the user payload - And evidence: SMTP sendmail called once with recipient == input email and template account_created - Escenario: SMTP is not configured. - Given SMTP is not configured and `POST /auth/register` is called - When registration succeeds - Then the response is still 200 (registration never fails due to email) - And a warning is logged ## Order confirmation on payment success - Escenario: customer pays and Stripe reports PaymentSucceeded. - Given an order in AWAITING_PAYMENT and a valid `PaymentSucceeded` webhook - When the webhook is processed - Then the order moves to PAID - And a confirmation email (`state: PAID`) is sent to the order's customer email via sendOrderStatusEmail - And the webhook returns 2xx - Escenario: duplicate webhook. - Given the same PaymentSucceeded webhook delivered twice - When the second is processed - Then only one confirmation email is sent (idempotency from payment dedup / outcome.kind == duplicate skipped) - Escenario: SMTP not configured. - Given SMTP not configured and a PaymentSucceeded webhook arrives - When processed - Then the order still moves to PAID, webhook returns 2xx, and an email failure is logged (not thrown) ## Regression - verify.sh is green - No existing order admin-transition email behavior changed - Password-reset email flow unchanged