I have faced this challenge with reporting on some of our email programs. In this case, the business model is very direct response, where we can see immediate purchases as a result of an email campaign (vs. a long slow nurture that is more typical for a higher-ticket B2B sale).
So my reporting requirements were, when someone buys after responding to an email, categorize them as a new customer, a repeat customer, or a "reactivated customer" -- defined as someone who had not purchased in the previous x months.
So this is a similar challenge, because reporting after the fact, I knew what segment they were in
currently but it was very difficult to determine at scale what segment they were in at the point that any particular campaign was sent.
The solution was to add leads to a static list that captured their segment
at the moment of sending the email. This serves as a permanent record of their status at that point in time.
With that there you now have the data accessible and could leverage it in your reporting in different ways -- example, you could now set up your egmentation for that particular send (although that seems like it would require a lot of manual config if you were looking at many different campaigns).
In my case I have my buying statuses mapped to progression statuses for the programs and have triggers that look at list membership when an opportunity is created, assigning the lead to a status in the program of "Purchased - New", "Purchased - Reactivated" etc. accordingly.
I can then line up those programs in an program performance report and show status columns and get an apples-to-apples comparison of purchases of each type generated by each email.
I should say this is a very unorthodox use of program statuses and would not be advisable for most businesses. But in this case it enabled automatic reporting that fulfilled these requirements, as opposed to generating a thousand smart lists each time
😉