I over engineered a solution to this, more than once… are you b2b or b2c? My solution is time consuming and add steps in when creating emails for custom tracking and custom fields for each email, so if I am understanding correctly what you want to do is move engagement information from the campaigns internal knowledge about interection to the contact record, so that you can have data that relates to the email, or campaign and the date the interaction occurred?
What I did before was to build out a number of customer fields, one set was tracking the touch points by date adn another was tracking the page/form data from the recent conversion. If you are wanting to track more granularly like looking at engagement you have to use active lists and workflows to populate the custom fields. You can then create lists filtering on the dates and contents of these fields. The downside is that this methodology requires it set up ahead of time and building the picture onto the contact record as you go, some elements of which could be extracted after the fact, but not as meaningfully as capturing as you go. also it is time consuming at the head, but does streamline the downstream as once you have all the data you ahve all the data.
If you are B2B you can do even more fun / extreme things like push the data up to the company record and have an anonymised picture of all interactions from employees of a company.
An example of other things you can do is create an active list of people who opened email x.
Create another list with people who clicked email x.
create a workflow that populates a field with opened / clicked / sent perhaps w namesd with the email campaign code.
If you are doing lead gen then you can have this field as a hidden field on the form page, and populate it’s content with sumbitted using a query string injected into the tracking code links in the email.
Then you can can create a report from the send list of the email that you can instantly filter because youve moved all the data to the contact record.
Other things you could do would be like an engagement counter that incrememnts when they are sent an email (in a workflow) and then decrements when the action, to provide a kind of dis/engagement score. so like the counter could go up
I’m happy to explain how you can do these things if you furnish me with a little more information about your reporting goals, and customers. (like do you want to look at companies engagement, contacts, or both?)