caffeinate icon indicating copy to clipboard operation
caffeinate copied to clipboard

Should `active` Campaign Subscriptions include those which are `completed?`?

Open jon-sully opened this issue 1 year ago • 3 comments

Having this question pop up in my own project and can see the cards on either side 🤔 not sure what to make of the question. WDYT?

jon-sully avatar Apr 22 '23 18:04 jon-sully

i think they should be those that have have unsent mailings, that aren't ended or unsubscribed...... i think?

joshmn avatar Apr 22 '23 19:04 joshmn

Since active directly impacts the find_or_create_by from earlier this morning, it's a careful question 🤔

If a Subscription has no unsent mailings but isn't unsubscribed and isn't ended, should active include it?

Maybe the better question is: if the last mailing is sent (or skipped, etc... just generally 'processed'), should it mark the subscription as ended?

jon-sully avatar Apr 22 '23 19:04 jon-sully

Coming back to this quite a bit later. I now do think that the active scope should include campaign subscriptions that are completed?. Subscriptions that have sent all their drips should still defend against being re-subscribed, and while they are completed? (a question that answers whether or not all the drips have been sent), they are not ended. They are still active; as in, active in defending against being re-subscribed to the same campaign and having another sequence of drips fire. This too is why I also think, though I don't know that I ever mentioned it in this PR, that when a subscription finishes its drips, it should not automatically end itself. I held this idea a while back, but I've now come around to think that leaving it active forever is the right solution — again, to defend against being resubscribed to the same dripper again. For the style of marketing Drippers this library intends to model and automate, this is the right call. For more application-type drippers (which I work with), overriding this logic (by adding a hook to automatically end the subscription after the last drip has processed) within my own app is the right call. The default should be active-forever.

jon-sully avatar Jun 14 '24 17:06 jon-sully