## Build a welcome sequence in Resend Automations
1. Name your custom event first, using the entity.action convention, for example `user.created`. Keep names stable; changing them later means rebuilding every automation that listens. Docs: https://resend.com/docs/dashboard/automations/custom-events
2. Create the custom event with a flat schema if you want payload validation, for example plan as string and signup source as string. A wrong field type rejects the event with a 422, so the schema is your contract check. Event names cannot start with the `resend:` prefix.
3. Build the email templates the sequence needs and publish each one. Only published templates can be used in an automation step; an unpublished template silently blocks you at step config.
4. Create the automation with `status` disabled. Add the trigger step using your event name as the first step.
5. Chain the steps in order: send_email (day-0 welcome), delay (wait 2 days), condition (did the user finish onboarding?), send_email (nudge on the no branch), send_email (feature tips on the yes branch). Connections between steps define the graph; a missing connection means the step never runs.
6. Before enabling, fire a test event from your app with your own email as the recipient and watch the run appear in the Automations dashboard. Run statuses are running, completed, failed, or cancelled, with step-level error detail on failures.
7. Fix failures in a duplicate of the automation. While an automation is enabled its steps cannot be edited, so duplicate, edit the copy, and stop new runs on the original to switch over. In-flight runs finish on the old version.
8. Only enable when a full test run completes end to end. If two enabled automations share one event name, both fire, so check you are not double-sending welcome mail from an older automation.