Thank you @Chad and @andrewatfornax for discussing this. On the topic of generating a CI for each email, could you use the recipient's email address? Many ESPs will provide merge codes for that so that even if you're using the same email template to send to 500 people, the emails can have a different CI for each recipient. For example, SendGrid has a [%email%] merge code and MailChimp has a *|UNIQID|* merge code. The former is the plain email address while the latter is, I believe, a hashed version of the email address. That would at least eliminate the need for a Revive user to generate GUIDs per email.
Hi, @andrewatfornax @Erik Geurts. I'm new to the revive community, but am excited about what you're doing here.
I like the idea of a multi-banner/campaign email zone that's capable of serving general ads. For me this is a value-add for general website advertisers. I'd like to bounce the idea for a simple solution off you guys. My PHP is weaksauce, but I'd be happy to hack out a proof of concept or possibly sponsor the development if the lift is minimal for the experts.
Here's the idea - according to this knowledge base article, the lack of cookie and JS support in email clients makes it difficult to connect the banner impression (<img> tag) to the banner click (<a> tag). So this is just a state issue. If I understand the issue correctly, we can simply add a correlation identifier (CI) to link the impression to the click. The invocation snippet looks like this:
<a href='http://ads.dev.local/www/delivery/ck.php?zoneid=1&ci=INSERT_CI_HERE' target='_blank'><img src='http://ads.dev.local/www/delivery/avw.php?zoneid=1&cb=INSERT_RANDOM_NUMBER_HERE&ci=INSERT_SAME_CI_HERE' border='0' alt='' /></a>
Each email message would have a distinct CI for it's banner, and use the same CI for each banner's <a> and <img> tags.
The implementation seems simple:
Maintain a server-side (in revive server) persistent cache that holds the most recent CI per impression
Create a mechanism to trim the cache every N hours (to manage the size of the cache)
Record clicks per cached CI; if the CI has expired, click goes untracked
Please let me know if you think this is a simple and effective solution, and the best way to proceed?
Keep up the great work!