
# Your first five welcome emails, with triggers and stop rules

A welcome sequence should help a new user reach a useful result. Start by naming that result, then write the messages around the steps that lead to it.

The examples below use a fictional reporting app, ReportKit. Its assumed capabilities are CSV upload, saved reports, and report sharing. Its activation event is `first_report_created`. Adapt every capability and destination to your actual product before sending.

The delays are a starting hypothesis. Eligibility is checked at send time. All messages require marketing eligibility and stop on opt-out, complaint, or hard bounce. A support reply pauses the sequence for review. Add your real sender identity, footer, and working unsubscribe mechanism to each message.

## 1. Help them start

**Trigger:** new eligible signup, immediately, if no first report exists.

**Subject:** create your first report

**Preview:** Start with one CSV file.

> Hi {{first_name_or_there}},
>
> Start your first ReportKit report by uploading a CSV. Choose the columns you want to include, then save the report.
>
> Use a sample file if you want to try the workflow before adding your own data.
>
> Create your first report: {{new_report_url}}
>
> Alex

One job: begin the workflow. The sample-file suggestion is appropriate only if that feature exists and is easy to find from the destination.

## 2. Remove the first obstacle

**Trigger:** 24 hours after signup, if no first report exists.

**Subject:** start with a smaller file

**Preview:** A few rows are enough to try the workflow.

> Hi {{first_name_or_there}},
>
> You can try ReportKit with a small CSV before preparing a full dataset. Start with a header row and a few example records, then choose what belongs in your report.
>
> Create a report with your test file: {{new_report_url}}
>
> Alex

One job: make the first attempt feel manageable. Skip this email after activation. Verify that the suggested file format works in your app.

## 3. Show a relevant use case

**Trigger:** day 3 after signup, if a first report exists but none has been shared. Otherwise skip.

**Subject:** share the report you created

**Preview:** Give your reader one place to see the result.

> Hi {{first_name_or_there}},
>
> Your saved report can give a teammate or client a clear view of the numbers you chose. Open the report and review its contents before sharing it.
>
> Open your reports: {{reports_url}}
>
> Alex

One job: use the result with another person. This message depends on the product's real sharing and access-control behavior.

## 4. Ask where they got stuck

**Trigger:** day 5 after signup, if no first report exists and no earlier support conversation is open.

**Subject:** what stopped your first report?

**Preview:** Tell us which step needs work.

> Hi {{first_name_or_there}},
>
> What stopped you from creating your first ReportKit report: preparing a file, choosing columns, or something else?
>
> Reply with the step that got in your way. I’ll use it to help you get started and improve the setup.
>
> Alex

One job: learn the obstacle. Use this promise only when someone will read and answer the replies.

## 5. Help them repeat the useful action

**Trigger:** day 7 after signup, if exactly one report exists and the user remains eligible. Otherwise skip.

**Subject:** make your next report

**Preview:** Use what worked in your first one.

> Hi {{first_name_or_there}},
>
> You’ve created your first report. For the next one, choose the question you want it to answer before uploading your file. That makes it easier to decide which columns to include.
>
> Create another report: {{new_report_url}}
>
> Alex

One job: repeat value. A paid upgrade can become a later campaign once you can explain why that user would benefit from it.

## Implement the conditions with the copy

These are five possible messages, not five mandatory sends to every signup. Store the event and eligibility rules with the templates. Check them again when each message becomes due.

Use “there” when a first name is missing. Reject unresolved URLs and template fields before sending. Replay a signup event to verify deduplication, then unsubscribe a sample user while a message is queued to verify suppression.

The [starter prompt](/prompts/start-email-marketing.txt) asks your coding agent to adapt this approach to your app and build a local preview. After the preview works, use the [launch guide](/docs/launch-email) to connect delivery and track activation over a defined window.

## Keep the workflow in your coding agent

Install the free [email-marketing skill](https://github.com/email-marketing-skills/email-marketing-skills/tree/main/skills/email-marketing) with `npx skills add email-marketing-skills/email-marketing-skills --skill email-marketing`. It works from your project context and available tools. Saka business research is optional; live delivery uses your chosen email provider. Follow the [quickstart](/docs/email-marketing) for setup and the plain-text fallback.

