SOLVED

Re: Help Identifying Records with Updated Emails After Hard Bounce in Marketo after 90 days

Go to solution
akshat_goyal
Level 3

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:

  • The current email address is different from the one that triggered the hard bounce.
  • The record is still marked as Invalid.

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:

  1. Retrieve the email address associated with the Email Bounce activity.
  2. Compare it to the current email address on the record.
  3. Identify records where the bounce was tied to a previous email, not the current one.

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!

2 ACCEPTED SOLUTIONS
PeeyushSachdeva
Level 3

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.

 

Workaround:

  1. Use the Activity API to pull Email Bounced activities.

  2. Each activity includes:

    • leadId

    • The email that bounced (details field contains this)

    • The bounce reason and timestamp

  3. 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).

  4. 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

View solution in original post

SanfordWhiteman
Level 10 - Community Moderator

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"
                }
            ]
        },

 

View solution in original post

7 REPLIES 7
PeeyushSachdeva
Level 3

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.

 

Workaround:

  1. Use the Activity API to pull Email Bounced activities.

  2. Each activity includes:

    • leadId

    • The email that bounced (details field contains this)

    • The bounce reason and timestamp

  3. 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).

  4. 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

SanfordWhiteman
Level 10 - Community Moderator

Important: Marketo doesn’t allow the manual reset of the Invalid flag. 

?? Sure it does.

akshat_goyal
Level 3

so what is workaround ? 

SanfordWhiteman
Level 10 - Community Moderator

Workaround for what?

akshat_goyal
Level 3

Is there a way—perhaps via the Marketo API—to:

  1. Retrieve the email address associated with the Email Bounce activity.
  2. Compare it to the current email address on the record.
  3. Identify records where the bounce was tied to a previous email, not the current one.

 

@SanfordWhiteman 

SanfordWhiteman
Level 10 - Community Moderator

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"
                }
            ]
        },

 

akshat_goyal
Level 3

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