Skip to main content

The gap between campaigns

A person who received a marketing email from one campaign gets no email from a different campaign for cross_campaign_gap_days. The default is 20, and it is one value for the whole account. 0 turns the rule off. Live from 2026.10.04.4.

A campaign is one sequence. Two sequences of the same project are different campaigns, and so are two sequences of different projects. All tracks of one sequence are the same campaign.

Follow-ups are not delayed​

Once a campaign has sent a person its first email, that person is in flow. Every later email of the same campaign goes on its own delay_hours, whatever another campaign did in the meantime. Each follow-up also moves the date forward: another campaign can start 20 days after the last email of the flow.

What a held email looks like​

The check runs just before a campaign's first email to a person. If another campaign mailed that person inside the gap, nothing is sent and no send slot or daily cap is used. The enrollment stays active and carries:

FieldValue
wait_reasoncross_campaign_gap
wait_untilThe other campaign's send time plus the gap
next_due_atwait_until plus up to six hours, so a whole batch does not land on one minute

When it comes due, the check runs again. GET /email-sequences/{sequence}/enrollments?waiting=gap lists the held enrollments, and each row shows wait_reason and wait_until.

Two campaigns due for the same person at the same moment: exactly one sends, and the other is held.

What counts​

SendStarts or extends the gap
Any accepted email of a sequence, first or follow-upYes
A failed sendNo
A test send (…/steps/{key}/test)No
A double opt-in confirmationNo
Transactional mail (POST /emails/send)No

Enrolling is never refused​

POST /email-sequences/{sequence}/enroll enrols people as before. The response gains will_wait_for_gap: how many of them got another campaign's email inside the gap, so their first email will wait.

{ "success": true, "data": { "enrolled": 999, "already": 0, "refused_suppressed": 4, "refused_status": 0, "will_wait_for_gap": 45 } }

Reading and changing the setting​

Every project's GET /email-marketing/settings returns cross_campaign_gap_days, read-only there.

MethodPathNotes
GET/api/public/v1/email-marketing/account-settings{cross_campaign_gap_days}. From 2026.10.04.5
PATCH/api/public/v1/email-marketing/account-settings{cross_campaign_gap_days: 0–365}. Needs a token for every project. Out of range: 422 GAP_OUT_OF_RANGE

In Nova it is Email Marketing → Account Settings.