{
  "slug": "feature-adoption-email-sequence",
  "title": "Feature adoption email sequence: template and code",
  "url": "https://www.courier.com/recipes/feature-adoption-email-sequence",
  "markdown": "https://www.courier.com/recipes/feature-adoption-email-sequence.md",
  "stage": "Activation",
  "purpose": "Nudge new users who haven't tried your key feature, and compare two versions of the first email.",
  "summary": "A feature adoption email sequence nudges new users toward the feature that keeps people around. A week after signup it sends a tip by email and in your app's Inbox, and four days later a second tip. The first email tests two versions against each other, and using the feature stops the sequence.",
  "channels": [
    "email",
    "inbox"
  ],
  "shape": "journey",
  "shows": [
    "An A/B test of two email templates on one send",
    "Cancel the journey once they use the feature",
    "Waits set as durations, not dates"
  ],
  "data": [
    {
      "name": "profile.first_name",
      "type": "string",
      "example": "Dana",
      "note": "From the profile. Write it when the user signs up. The emails say \"there\" when it's missing"
    }
  ],
  "steps": [
    {
      "step": "1",
      "when": "7 days after signup",
      "channels": "Email, Inbox",
      "templates": [
        "templates/feature-tip-benefit-email.json",
        "templates/feature-tip-question-email.json",
        "templates/feature-tip-inbox.json"
      ]
    },
    {
      "step": "2",
      "when": "4 days later",
      "channels": "Email",
      "templates": [
        "templates/feature-second-tip-email.json"
      ]
    }
  ],
  "files": {
    "journey": "journey.json",
    "templates": [
      "templates/feature-tip-benefit-email.json",
      "templates/feature-tip-question-email.json",
      "templates/feature-tip-inbox.json",
      "templates/feature-second-tip-email.json"
    ],
    "setup": [
      "setup.ts"
    ],
    "start": [
      "start.ts",
      "start.py"
    ],
    "stop": [
      "stop.ts",
      "stop.py"
    ]
  },
  "docs": [
    "https://www.courier.com/docs/journeys/experiments",
    "https://www.courier.com/docs/journeys/nodes/delay",
    "https://www.courier.com/docs/journeys/nodes/send",
    "https://www.courier.com/docs/journeys/nodes/cancel",
    "https://www.courier.com/docs/journeys/invoke"
  ],
  "related_recipes": [
    "https://www.courier.com/recipes/onboarding-incomplete-reminder-email",
    "https://www.courier.com/recipes/welcome-email-sequence",
    "https://www.courier.com/recipes/nps-survey-email"
  ],
  "agent_prompt": "Add a feature adoption sequence to this app, sent through Courier: a tip by email and in the Inbox 7 days after signup, with an A/B test on the email, then a second tip 4 days later, all canceled once they use our reports feature. Follow the steps at https://www.courier.com/recipes/feature-adoption-email-sequence.md and use the Courier skill for SDK details.\n\n1. Create the journey and its templates in my Courier workspace by replacing Acme, Reports, and the link in the template files with our own, then running setup.ts from that page with COURIER_API_KEY from our environment. Save the journey ID it prints as COURIER_ADOPTION_JOURNEY_ID.\n2. Find where this codebase creates a new user and start the journey there. Pass only the user ID, and make sure first_name is written to their Courier profile at signup.\n3. Find where a user first uses the feature and cancel the journey there with the token adopt-<user_id>. Cancel it the same way when an account is deleted.\n4. Match this codebase's language, file layout, and error handling. Never hardcode the API key.\n5. When you're done, start one run for a test user and show me the run's steps.",
  "status": {
    "state": "passing",
    "last_tested": "2026-10-19"
  }
}
