Can you add some screenshots of the trigger that you set, "send email D1 if D1 is not sent, otherwise send D2"?
It is a little bit complicated to understand it in text. I am also not sure why D1 won't be sent if it is the first email.
see below. For your understanding, the "D"s in the picture do not match the text, in the text I only wrote the "principle". So in principle, I used the "send email" flow step and it was the "Default choice" that was triggered.
To clarify the order of things happening:
1) D1 is sent via stream progression
2) D2 is sent via stream progression
3) D2b fails to be sent due to "communications limit"
4) I trigger a trigger to send either D1 or D2 (like below) and it sends the Default choice (D2 in my original post and D1 in the screenshow below)
So there are 2 strange things:
1) It can send emails via trigger even though comms limit is reached
2) It can send email D2 again via trigger even though it was sent before to the same recipient
I hope that made it a bit clearer!
Email that is sent from an engagement program can be sent only once, I think that the issue might be with the "Send Email" step that comes before the "Add to engagement Program".
So it seems he gets the emails and then he is getting the emails from the engagement program, It is possible that you have some conditions in the smart list and flow that interfere with each other.
I'm sorry to confuse, the "add to engagement program" flow step is totally useless in the trigger above and I only get a activity message saying "person already a member of the program". So that is not the issue.
Basically I started the test by adding my email to the program. When it was part of the program, I activated the stream and started the test steps 1-2-3-4 above.
The smart list is basically just email = MyEmail@email.com and a trigger ("city" changes) and the flow in the stream is just as below
I have tried the trigger several times now and it keeps sending me D2 even though it has clearly been sent in the stream earlier...
To accomplish this the way it seems you have in mind, you would want to use a nested Default Program within your stream, using the campaign logic you have specified.
The doc says a STREAM cannot send the same email twice to the same person. But any other smart campaign can override this rule.So your trigger can send an email a second time.