Re: Field Custom Validation Exception - Lead Status

Dave-Silva
Level 2

Hi,

 

We frequently encounter sync errors from records that have moved to a status further in the status progression in SF, but remain in the previous status in Marketo, triggering a validation error for statuses that should not be allowed to move backwards.

 

For example, a lead was created in Salesforce as Pre-Qualified, updated to MQL in Marketo, then updated to Working (which is a status further in the progression than MQL). When the sync took place, it triggered the validation error: "FIELD_CUSTOM_VALIDATION_EXCEPTION: Lead Status should not be moved backward (other than Unqualified or Nurture). Sales Ops can make the change if necessary."

 

How can I prevent this from happening?

14 REPLIES 14
SanfordWhiteman
Level 10 - Community Moderator
Please show screenshots of the Channel setup in Marketo and the statuses in SFDC. There's no reason for such errors if the the progressions are symmetrical.
Dave-Silva
Level 2

Please see my response to Miray. The progressions are symmetrical, though we don't have them tied to a program status. So it seems to be an issue with timing between when a rep updates the status in SF and a sync is occurring from Marketo with a competing "previous" value in the progression.

Miray
Level 6 - Community Advisor + Adobe Champion

Hi @Dave-Silva 

Sync errors like these can definitely be frustrating. Based on your example, it sounds like the issue stems from a mismatch between the lead status progression in Salesforce and how it's being updated in Marketo.

A few clarifying questions to help pinpoint the root cause:

  • Are you currently using a Revenue Cycle Model or Lead Lifecycle Program in Marketo to manage status progression?
  • Is Lead Status the only field being updated, or are other lifecycle-related fields involved?
  • Does the "Working" status exist in your Salesforce Lead Status picklist, and is it mapped correctly in Marketo?

From the error message, it seems Salesforce has a validation rule that prevents leads from moving backward in status — except to "Unqualified" or "Nurture." If Marketo is trying to sync a status that violates this rule (e.g., reverting from "Working" to "MQL"), Salesforce will reject it.

Recommendations:

  1. Review your lifecycle mapping: If you're using Lead Status to drive lifecycle stages in both systems, ensure the progression logic is aligned and that Marketo isn't allowed to overwrite Salesforce statuses that are further along the funnel.
  2. Update  validation rules: You may need to adjust :
    • Salesforce validation rule to allow certain backward movements if they’re intentional and controlled.
  3. Collaborate with Sales Ops: It may be worth discussing the values of lead status 
Dave-Silva
Level 2
  • We use smart campaigns to set change the status, but don't have it tied to Program Statuses
  • We have other fields involved, but that is the only one involved with a validation rule
  • Yes, "Working" exists in both systems and is not a problem for most records. However, several records each week encounter this error, which I imagine is a race condition / conflict issue. Presumably that the status is updated to "Working" in SF by a rep, while a sync from Marketo is taking place, trying to set the value to "MQL".

I'm just not sure how to prevent that from happening, given that we definitely want the validation rule in place, and it works properly the majority of the time.

Miray
Level 6 - Community Advisor + Adobe Champion

@Dave-Silva  I might be mistaken, but I believe when you refer to “status,” you mean the Lead Status field rather than Campaign Status. Most of these updates occur when the person is created in SFDC.

If that’s correct, you may want to add constraints in your flow steps. For example:

  • If Lead Status = Working, do nothing and default should be change lead status = MQL
Dave-Silva
Level 2

Yes, Lead Status is what I'm referring to -- it's in the subject 🙂

 

The problem is, I believe, that Marketo isn't "aware" of the new status yet. So I can't restrict setting the Lead Status to MQL if it's "Working", because it's only "Working" in SF. 

 

So:

1. Lead is created in Marketo with a status of "Pre-Qualified"

2. Lead syncs to SF with that status.

3. Based on scoring or other automation, the lead is then set to "MQL" in Marketo.

4. The lead is updated to "Working" by a rep or other process in Salesforce (perhaps an Outreach automation).

5. Marketo attempts to sync the status of "MQL".

6. Sync fails due to a field validation error because it's already "Working" in SF.

Miray
Level 6 - Community Advisor + Adobe Champion

To maintain consistency and avoid conflicts, it’s best to restrict updates to the Lead Status field to a single system—either Salesforce (SFDC) or Marketo. This ensures that one platform acts as the source of truth.  ( I would keep leda status Update in SFDC )

Additionally, I recommend separating Lead Status from Lead Lifecycle. , you can still map or translate those values to reflect the appropriate stage in your Lead Lifecycle model. This approach allows you to maintain alignment between systems also give better visibility person can stay as "MQL" in lifecyle and "Working " in Lead status at the same time 

SanfordWhiteman
Level 10 - Community Moderator

Additionally, I recommend separating Lead Status from Lead Lifecycle. , you can still map or translate those values to reflect the appropriate stage in your Lead Lifecycle model. This approach allows you to maintain alignment between systems also give better visibility person can stay as "MQL" in lifecyle and "Working " in Lead status at the same time 


Hmm, wrt OP’s situation that would mean Lead Lifecycle stage has the same behavior — if changed by both sides within a short time window, you have a sync conflict. Nature of the beast with all fields that are gradually reconciled.

Dave-Silva
Level 2

Yeah @Miray, I'm not sure this would solve the problem, which is that ultimately we have situations where we want to advance a lead status/lifecycle in SF (Sales team actions), and other times where it is Marketo driven (scoring). Even decoupling the status from lifecycle, there are still the two systems trying to update them and it would be difficult to ensure that they never try to update at the same time.

 

Instead, Pardot had an option to chose a system that should be defaulted to if there is a value conflict, which we'd want to set to SF in this case, since the further progressions are almost always sales-driven.

SanfordWhiteman
Level 10 - Community Moderator

  • We use smart campaigns to set change the status, but don't have it tied to Program Statuses\

The flow step Change Status in SFDC Campaign runs immediately (e.g. it connects to the SFDC API outside of the scheduled sync).

 

It’s extraordinarily unlikely that someone is updating the Campaign Status in SFDC close enough to the time that flow step executes for there to be a race condition in the fine-grained way we usually use that term in Marketo, e.g. when multiple tasks are operating in parallel with no guaranteed order. But in a broad sense, yes, there is a race condition if the Campaign Status is updated in SFDC and the periodic sync hasn’t run to flush that update to Marketo, so Marketo thinks it can still update the field.

 

The only way to eliminate that case is to send an Apex callout that updates Marketo immediately, similar to how the flow step works. I’d be wary of that path unless you have super sharp SFDC folks working on it.

Dave-Silva
Level 2

To be clear, these aren't campaign statuses -- it's the our core Lead Status field. So these aren't "Change Status in SFDC Campaign" flows, but rather simply field value updates, which are used to drive our lead lifecycle progression.

 

So it should be comparable to someone updating the value in Marketo, while the value is simultaneously updated in SF, and then the conflict occurs. Instead of Marketo syncing the updated value from SF, it tries to sync Marketo's value, which is earlier in the progression and trips the field validation error.

 

2025-10-31-Screenshot-11-25-03.png

SanfordWhiteman
Level 10 - Community Moderator

To be clear, these aren't campaign statuses -- it's the our core Lead Status field. So these aren't "Change Status in SFDC Campaign" flows, but rather simply field value updates, which are used to drive our lead lifecycle progression.

OK, this definitely wasn’t clear! Lead Status has no special meaning in Marketo — it might as well be a notes field — and the progression in SFDC is irrelevant. (In contrast, Program Status is a system-enforced progression.)

 

Anyway, the same solution applies. The bidirectional sync is eventually consistent and by definition isn’t immediate. If you want to immediately update Marketo to avoid conflicts, use an Apex callout.

Dave-Silva
Level 2

The sync error doesn't seem to ever get resolved automatically -- I need to intervene and update Marketo's value to what's in Salesforce to allow the sync to resume. 

 

Pardot used to provide an option for conflicts, where the value in SF (or Pardot) could be chosen to overwrite the other, but I'm not aware of any such thing with Marketo. 🤔

SanfordWhiteman
Level 10 - Community Moderator

Pardot used to provide an option for conflicts, where the value in SF (or Pardot) could be chosen to overwrite the other, but I'm not aware of any such thing with Marketo. 🤔


Marketo uses the SFDC systemmodstamp during reconciliation. Individual fields don’t have conflict resolution. So if you have automation in SFDC that continually rejects changes from Marketo, the sync cannot reconcile. That’s how it always works.

 

As noted above, if you have specific fields you want to push from SFDC to Marketo immediately on update, use an Apex callout that hits the Marketo REST API.