Repository navigation
feat(esp): automatic warm-up with the most engaged contacts first - #101
Merged
Merged
Conversation
An ESP can now warm up on its own: set a target daily volume and the daily limit for broadcast and sequence mail starts at 50 and grows each UTC day (50, 100, 200, 400, 750, 1,500, ... then +40% a day) until it reaches the target. The lower of the warm-up and the ESP's own daily limit applies; mail over it waits for the next day, as with #67's limit. Queued deliveries now carry an engagement priority, set when contacts are enrolled: recent clicks, then recent opens, then imported open/click rates, then newer signups. Due deliveries are processed in that order, so a capped day goes to the most engaged contacts. The ESP dialog previews the ramp, the ESP list shows the warm-up's day and today's count, and REST/MCP take `warmupTargetDailyVolume` and return `warmup`. Closes #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #79. Closes #5.
What
warmupTargetDailyVolumeon create and update (REST and MCP). Setting it starts the ramp from day 1; retargeting keeps the progress;nullturns it off.WARMUP_RAMP/warmupDailyLimit/warmupDaysin api-contract, is 50, 100, 200, 400, 750, 1.5k, 3k, 5k, 8k, 12k, 18k, 25k, 35k, 50k, 70k, 100k, then +40% a day, capped at the target.acquireEspSendCapacitycaps campaign mail at the lower of the warm-up's limit for the UTC day and the ESP's owndailySendLimit(Day-one warm-up answer: warm-up guide and self-serve daily send caps for new domains / SES accounts #67). Mail over it waits until the next day, and transactional mail is never capped.warmup(day, total days, today's limit, complete).ongoing_sequences.priority(migration 0021), set at enrollment byautomation/engagement.ts. It ranks recent clicks (worth 14 days more recency than an open), then recent opens, then importedopen_rate/click_ratecustom fields (e.g. from a beehiiv or Mailchimp export; 0.45, 45 or "45%"), then signup date with newest first.getDueOngoingSequencesorders by priority and then by due time; the FIFO queue keeps that order. A day capped by the warm-up, a daily limit or quotas therefore reaches the most engaged contacts first.warm-up.mdx(automatic warm-up, ramp table, send order, links to auto-pause and reputation) andsettings.mdx.The issue's "send to the top N, then send to more" is covered by the cap plus the engagement order. A broadcast to everyone goes out to the most engaged first and continues each day, without a manual "send to more" step.
Verification
check.sh(731 API tests incl. new warm-up, engagement-order, enrollment-priority and warm-up-cap Redis tests; contract ramp tests; web tests),check:drift,test:conformance, docs build.Browser E2E (6/6):
Along the way this showed that welcome-sequence mail counts toward the same daily cap, as intended: all marketing mail through the ESP shares it.