Wait until a date property vs relative duration: birthday/renewal day vs 'wait 3 days'
Should a journey wait on a profile date field (on/before/after) or pause for a fixed N days? Table, Iranian renewal example, Leadara.

Reza Ahmadi
SEO and content strategy for organic traffic and brand visibility in search results.
September 27, 2026 · 5 min read
Also available in فارسی

Date-property waits align the next action to a stored calendar/datetime field (on the date, N before, or N after, with optional time-of-day and an unknown-date branch); relative-duration waits pause everyone for the same N days/hours regardless of personal dates.
What is wait-until-date-property vs relative duration?
Two wait tools that teams constantly mix up:
- Wait until date property: e.g.
birthday,subscription_ends_at,policy_renewal_date. The engine waits for “the day of,” N days before, or N days after—sometimes with a time-of-day. Empty fields need an unknown branch. - Relative duration: “wait 3 days” after purchase or after an email. Same for everyone; ignores personal calendars.
Classic question: “Birthday email or the same 3-day drip?” Birthday = date property; post-purchase drip = relative.
Related but different: date-property flow vs metric-triggered flow—that’s the whole flow trigger; here it’s a Wait step inside a journey.
On / Before / After table
| Mode | Practical meaning | Iranian example |
|---|---|---|
| On date | The field’s day (with/without time) | Birthday SMS at 10:00 on the day |
| Before N days | N days before the field | Email 3 days before subscription end |
| After N days | N days after the field | Thank-you 1 day after successful renewal |
| Unknown / empty | Missing or invalid field | “Ask for date” branch or soft exit |
| Timezone | Contact vs account zone | Tehran vs traveling customer |
Don’t confuse relative waits with business-days-only—that’s closer to delay-until-weekday vs fixed N-days. For live signal vs fixed clock see wait until event vs fixed delay.
Iranian insurance & subscription example
Insurance / SaaS subscription: profile field renewal_date.
- 7 days before: “renewal is coming” email;
- 1 day before: Kavenegar reminder SMS;
- Day after successful renewal: thanks message;
- If
renewal_dateempty: go to “complete your date” branch—never wait forever.
Store: after purchase, relative wait 3 days → review ask; customer birthday stays on a separate date-property journey.
If the user changes birthday while waiting, some engines reschedule and some freeze the time captured at entry—document this in QA.
Truthful Leadara mapping
With Leadara profile/segments, journeys, and email/SMS you can design calendar waits (renewal, birthday) and relative waits after purchase events. Always define the empty-date branch. Leadara AI Chat is an internal team assistant, not a customer live-chat bot. Don’t invent WhatsApp.
When to choose which
| Goal | Choose |
|---|---|
| Birthday, anniversary, renewal, installment due | Date property (On/Before/After) |
| Post-purchase / post-signup drip | Relative duration |
| Send only Sat/Mon | Weekday delay (related post) |
| Wait for click/purchase | Wait until event |
Practical steps
- Standardize the date field (name, timezone, format);
- Define the empty-field branch;
- Write On/Before/After + Tehran send time;
- Test changing the date mid-wait;
- Keep relative drips separate from calendar campaigns in reporting;
- Exit on successful renewal so reminders stop;
- After month one, report empty-date rate.
Common mistakes
- “Birthday” as a fixed 3-day delay from segment entry (everyone gets the same day);
- No unknown branch;
- Assuming birthday edits always reschedule;
- Mixing business-days with date-property waits;
- One journey mixing relative + birthday without separate metrics.
Growth-team walkthrough
- Segment “active sub with renewal_date filled”;
- Enter 30 days before renewal (or wait-until before 7 days if that’s your wait model);
- Value email;
- SMS 1 day before;
- If renewed → exit;
- If not → relative wait 2 days + last offer;
- End or human follow-up segment.
FAQ
What if the date property is empty?
You need an unknown branch: ask to complete, exit, or default path. Infinite wait is forbidden.
Does changing birthday while waiting reschedule the send?
Platform-specific. Build two profiles—one stable, one edited—and write the behavior into the runbook.
When should I use business-days-only instead?
When support only answers on business days or you must avoid Friday-night sends—not as a substitute for birthday date properties.
How is timezone frozen?
Some engines lock timezone at delay entry. Test traveling contacts.
Can I stack relative and date waits?
Yes: e.g. 3-day relative after purchase, plus a separate annual birthday journey on date property.
Loan installment reminders?
Date property due date + Before N; relative only for follow-up after a missed-payment event.
What time for birthday SMS?
On date with time-of-day (e.g. 10:00 Tehran) beats midnight—respect quiet hours.
Leadership summary?
“Birthdays and renewals bind to date fields; purchase drips use relative delay. Empty dates get their own branch.”
Next step
Clean one renewal_date or birthday field, add an unknown branch, and ship an On/Before journey separately from your post-purchase relative drip.
Data cleanup before calendar journeys
Before waiting on birthday or renewal_date:
- Measure empty-date rate;
- Normalize formats (string vs timestamp, Jalali vs Gregorian);
- Filter absurd dates;
- Document default Tehran timezone;
- Name the data owner (support vs payment gateway).
Without cleanup, calendar journeys create support tickets faster than revenue.
Two journeys, two dashboards
Keep birthday/renewal journeys separate from post-purchase relative drips so metrics don’t smear. Weekly report: Calendar waits vs Relative drips.
Sample Kavenegar copy
- Before 3 days: “Your plan ends in three days—renew here…”
- On birthday: “Happy birthday—a small gift is in your account”
- Relative +3 after purchase: “If you liked the order, leave us one line”
Align send time with quiet hours; midnight birthday texts feel wrong.





