I have a campaign setup that just marks when someone gets an email. So anytime they get an email, they are added to a series of lists, then after a day they're removed from (recieved email yesterday), then after 6 more days, they're removed from (recieved email this week), etc 2 weeks & 1 month.
Then in my nurture campaigns I have a check to see they haven't gotten an email in the past 2 weeks before sending them a nurture email.