I'm wondering if it's possible to track opens, clicks, etc. for an email that is sent multiple times. For example, I have a smart campaign that is triggered based off of a field being updated and then the flow sends an email that has quite a bit of tokenized content. This allows us to simply update the fields via api from our database and then the campaign sends automatically. The problem is when I go to report on metrics for separate sends, they aren't accurate. Is there any way around this? It's pretty important for us to track engagement over time, and I'd prefer not to create a new email every time it needs to be sent...kind of defeats the purpose of us automating this.
Any ideas on how to make this work would be much appreciated!
As for the clicks, you would append a URL parameter to the links with a different value on each send and get these URL separated in the email link performance report. For instance, you will have href="www.domain.com/mylpurl.html?senddate=2018-09-12-10-40" on one send and href="www.domain.com/mylpurl.html?senddate=2018-09-21-11-15" on another send. That can be done in multiple ways. Using a velocity script token for instance, but if you use API to set tokens, then you could have a simple "send date/time" token and populate if with the API too.
For the opens, it is much more difficult, as the system does not differenciate the emails. Furthermore, open on email A can happen after email B is sent. The only solution I can think of would be using the API to create a new email in Marketo for each send. But that would require some development.
To further elaborate on Greg's notes, recording multiple opens is for all intents and purposes undoable at scale. Lots of newer email servers and major providers such as Gmail and Yahoo use image caching to reduce strain on servers rather than serve fresh images every time. The way Marketo learns who's opened an email is checking to see if the image was loaded on a given email with unique image paths. However, once an image is cached for a given email, it's never going to send a new signal to Marketo--it'll just load the local version Gmail/Yahoo/etc. has stored. There's no way, even with APIs, to really get around that; you'll only really be able to know opened/unopened, not opened x amount of times. Now, there still are instances where the image will load multiple times and you can count multiple opens, but the trend is moving towards caching.
However, there's a caveat on that: that would only be the case per campaign run. Each time Marketo sends out an email, it has a unique Campaign Run ID that you can see when you look into the details of someone opening/clicking/etc. on an email. When you cast the same email multiple times, there will be unique campaign run IDs for each send, so with a bit of legwork you can actually break out who opened/clicked what on what campaign run ID (and its associated email time). The only thing to keep in mind there is that the Campaign Run IDs themselves are kind of opaque; unless you do the work to figure out the ID that correlates with that time, it won't be immediately obvious that 13640, for example, is an email you sent last Tuesday. I'd also recommend that if you're going to go down the route of using Campaign Run IDs to separate out performance for each send that you set up some place where you're exporting Marketo activities via API and run those reports as a query in your favorite BI tool.
it's never going to send a new signal to Marketo--it'll just load the local version Gmail/Yahoo/etc. has stored.
Even caching doesn't really matter because Marketo is designed to ignore subsequent hits on the tracking server. You can force a pixel download to bypass all caches, but you still won't see a new Opened Email for the same lead + email combo.
It's possible to force Marketo to include a pixel that, as far as the pixel download itself goes, will bypass any intermediate cache: change the branding domain when you send the email again. But this doesn't change the server-side design: Marketo will still ignore the hit, because that asset as a whole is considered already opened.
This design, for a single email already in the inbox, makes sense. You wouldn't want to have a new Opened Email activity every time somebody browsed their old email (it would just become chaff). The problem is that subsequent sends don't regenerate a unique pixel, which IMO was the wrong design. But here we are.
To follow up, I am running into a similar issue.
I am in a scenario where I will be sending a lead the same email about once every two years. The actual creative should be updated at some point during this time frame, but it will still be the same email in Marketo. If they open the email the second time they are sent this, this information will be used to update the program status to Email Opened. We use program status to calculate campaign stats. Because we are not able to track Email Opened the second time they are sent the email, the program status will not update so we cannot correctly calculate the campaign stats for the second send.
Based on the information provided, is there any other way to determine if a lead has opened an email the second time, and then send a trigger to update the program status? I know you mentioned including a pixel - is this something you think could work in this scenario? Or, are there any updates we can make to the email to force Marketo to see this as a new email and track opens?
Thank you for the assistance,
I know you mentioned including a pixel - is this something you think could work in this scenario?
I was referring to the built-in Marketo pixel that's always included. The fact is that even if the pixel is loaded 2 years later, it will not register a new Opened Email activity (and even if you set aside of the additional confusion that can be caused by intermediate image caches).
Now, you could create a custom pixel, using a quite advanced Velocity token, that would update a field(s) on the lead when they open the email (every time they open it, not one-and-done). This is not for the faint of development skills, however.