Hi,
We’ve encountered an issue in our Marketo instance where several person records are still marked as Invalid due to a hard bounce on an old email address. However, these records have since had their email addresses updated via CRM sync.
For example, a record originally had the email akshat@efgh.com, which hard bounced and marked the record as Invalid. Later, the email was updated to akshat@abcd.com, but the Invalid flag remains.
The Challenge: There doesn’t seem to be a straightforward way to create a Smart List that identifies records where:
I attempted to use the {{lead.Email Address}} token in the Email Bounce activity filter, but it returned no results—likely because tokens aren’t supported in that context.
The Ask: Is there a way—perhaps via the Marketo API—to:
This would help us clean up our database and ensure valid records aren’t incorrectly flagged.
Any guidance, workarounds, or API tips would be greatly appreciated!
I tried marketo api as well but it is not giving me the data that i am looking for?
Thanks in advance!
Solved! Go to Solution.
Hi @akshat_goyal,
You're absolutely right—this is a known challenge in Marketo. The Invalid flag is sticky and does not automatically reset when the email address is updated, because it reflects the email deliverability status for that person ID, not necessarily the current email address.
The Email Bounced and Email Bounced Soft filters do not support tokens (like {{lead.Email Address}}), so you can’t dynamically compare past vs. current email.
Marketo does not track email address history natively in the UI.
Use the Activity API to pull Email Bounced activities.
Each activity includes:
leadId
The email that bounced (details field contains this)
The bounce reason and timestamp
Compare this email (the one that bounced) to the current email on the lead (retrieved via Get Lead by Id or Get Lead by Email endpoint).
If the bounced email ≠ current email AND the lead is still marked Invalid ("invalid": true), you’ve found a record for revalidation.
Pull leads where invalid = true
For each, check recent Email Bounced activity
Compare bounced email vs. current
Flag mismatches for review/reset
Exactly as the other poster suggested (they were only wrong about Email Invalid not being updateable).
Get Activity Type ID 8, a snippet of the result looks like this:
"result": [
{
"id": 780879644,
"marketoGUID": "780879644",
"leadId": 31430451,
"activityDate": "2025-05-21T05:35:26Z",
"activityTypeId": 8,
"campaignId": 31559,
"primaryAttributeValueId": 87820,
"primaryAttributeValue": "Detect Subscriptions Activated.Confirmation Email - SAMEway R3",
"attributes": [
{
"name": "Step ID",
"value": 98473
},
{
"name": "Choice Number",
"value": 2
},
{
"name": "Category",
"value": "2"
},
{
"name": "Details",
"value": "554 30 Sorry, your message to jimmy_johns@example.com cannot be delivered. This mailbox is disabled (554.30)."
},
{
"name": "Subcategory",
"value": "2003"
},
{
"name": "Email",
"value": "jimmy_johns@example.com"
},
{
"name": "Campaign Run ID",
"value": 226326
},
{
"name": "Campaign",
"value": "Detect Subscriptions Activated.SAMEway R2 - Send instant confirmation email"
}
]
},
Hi @akshat_goyal,
You're absolutely right—this is a known challenge in Marketo. The Invalid flag is sticky and does not automatically reset when the email address is updated, because it reflects the email deliverability status for that person ID, not necessarily the current email address.
The Email Bounced and Email Bounced Soft filters do not support tokens (like {{lead.Email Address}}), so you can’t dynamically compare past vs. current email.
Marketo does not track email address history natively in the UI.
Use the Activity API to pull Email Bounced activities.
Each activity includes:
leadId
The email that bounced (details field contains this)
The bounce reason and timestamp
Compare this email (the one that bounced) to the current email on the lead (retrieved via Get Lead by Id or Get Lead by Email endpoint).
If the bounced email ≠ current email AND the lead is still marked Invalid ("invalid": true), you’ve found a record for revalidation.
Pull leads where invalid = true
For each, check recent Email Bounced activity
Compare bounced email vs. current
Flag mismatches for review/reset
Important: Marketo doesn’t allow the manual reset of the Invalid flag.
?? Sure it does.
so what is workaround ?
Workaround for what?
Is there a way—perhaps via the Marketo API—to:
Exactly as the other poster suggested (they were only wrong about Email Invalid not being updateable).
Get Activity Type ID 8, a snippet of the result looks like this:
"result": [
{
"id": 780879644,
"marketoGUID": "780879644",
"leadId": 31430451,
"activityDate": "2025-05-21T05:35:26Z",
"activityTypeId": 8,
"campaignId": 31559,
"primaryAttributeValueId": 87820,
"primaryAttributeValue": "Detect Subscriptions Activated.Confirmation Email - SAMEway R3",
"attributes": [
{
"name": "Step ID",
"value": 98473
},
{
"name": "Choice Number",
"value": 2
},
{
"name": "Category",
"value": "2"
},
{
"name": "Details",
"value": "554 30 Sorry, your message to jimmy_johns@example.com cannot be delivered. This mailbox is disabled (554.30)."
},
{
"name": "Subcategory",
"value": "2003"
},
{
"name": "Email",
"value": "jimmy_johns@example.com"
},
{
"name": "Campaign Run ID",
"value": 226326
},
{
"name": "Campaign",
"value": "Detect Subscriptions Activated.SAMEway R2 - Send instant confirmation email"
}
]
},
I tried this below payload for the get api
{
"format": "CSV",
"filter": {
"createdAt": {
"startAt": "2023-12-13T23:59:59-00:00",
"endAt": "2023-12-16T23:59:59-00:00"
},
"activityTypeIds": [
6
]
}
}
but thing is i am only getting 1 month of data at a time, not abel to extract more than 1 month of data, and i am not abel to extract the email ID with this api. - /bulk/v1/activities/export/create.json @PeeyushSachdeva