Iterable Foundations Certification study materials
Iterable Foundations Certification study resources

Duplicate Onboarding Messages from Overlapping Entry Events

Iterable Foundations Certification · Put your knowledge to work in context.

All case studies

Duplicate Onboarding Messages from Overlapping Entry Events

A B2B SaaS company runs a 14-day onboarding journey for new trial users. The journey enters users when they trigger either trial_started or workspace_created; both events fire within minutes of signup for most users. The journey has a welcome email immediately, a day-3 in-app message, a day-7 push notification if the user has not completed first_project_created, and a day-14 offer email. The journey is set to allow re-entry after 30 days. In the last month, 12,000 users entered, but the welcome email was sent 19,400 times. Support reports that some users got the day-7 push twice and the day-14 offer even though they had already converted. The team wants to fix the journey without losing legitimate re-entry for users who start a second trial after 90 days. The account also uses a global holdout of 5% for journeys.

1. Diagnose the most likely causes of the duplicate sends and the post-conversion offer. Explain how journey entry and exit logic interact.

Read the worked answer

The send count of 19,400 for 12,000 users is the key symptom: the journey is creating more than one path per user. Two causes are likely.

First, two entry events are both firing. trial_started and workspace_created occur within minutes for most signups, so the same user can enter the journey twice unless there is an entry suppression or deduplication rule. A 30-day re-entry window does not prevent a second entry minutes later; it only sets the minimum time before a new entry after the first journey ends or is exited.

Second, the journey lacks a conversion exit and a goal event. The day-7 push checks first_project_created, but the day-14 offer does not appear to exit on subscription_activated or any purchase event. Users who convert keep receiving later steps, which explains the post-conversion offer. The day-7 push duplication may come from two active journey instances, each evaluating the same filter.

The fix is not just to lengthen re-entry. I would use a single entry event, add an entry suppression window, and add exit criteria on the conversion event so the journey stops when the user achieves the goal.

2. Propose a revised journey structure that preserves legitimate re-entry and prevents duplicate messages.

Read the worked answer

I would restructure the journey as follows:

  • Single entry event: enter on trial_started only. If workspace_created is needed as a qualifier, add a filter that checks for it within 10 minutes rather than using it as a second trigger.
  • Entry suppression: do not allow a user to enter if they have entered this journey in the last 90 days. This matches the legitimate second-trial cycle and prevents the minutes-later duplicate entry.
  • Goal and exit: set subscription_activated as the goal event. Add exit criteria so any user who converts exits immediately and does not receive the day-14 offer. Add an exit on first_project_created only if the business decides that step should stop, but do not exit the whole journey on that event unless it truly represents conversion.
  • Send skip logic: on the day-7 push, check whether the same user already received that push in the current journey instance; skip if so.
  • Holdout: exclude the 5% global holdout at entry and measure conversion against it.

This preserves re-entry after 90 days while making the journey idempotent for duplicate entry events and conversion events.

3. How would you validate the fix using Insights & Analytics, and what metrics would show the journey is healthy?

Read the worked answer

I would validate in three layers:

  1. Entry vs send reconciliation: compare unique journey entrants with sends per step. A healthy journey should have sends per step no higher than entrants, adjusted for legitimate re-entry. If welcome sends exceed entrants by more than 1–2%, entry duplication is still occurring.
  2. Exit reason breakdown: review journey analytics for exits by goal, exit criteria, and completion. Converted users should exit on the goal event, not continue to the day-14 offer. A high completion count among converted users indicates the exit logic is not firing.
  3. Incrementality: compare conversion rate, revenue per entrant, and upgrade rate against the 5% holdout. Also monitor complaint and unsubscribe rates by step to ensure the fix did not reduce engagement.

I would set an alert if sends for any step exceed entrants by more than 5% or if any user receives the same step twice in one journey instance. I would also review a sample of user timelines to confirm that the second-trial re-entry still works after 90 days.