## TL;DR

The automation that should advance stale opportunities never ran or ran and did nothing. Check the automation's enrollment criteria against a stuck opportunity, read its run history for skips, and fix the criteria or the schedule. Stale stages are an automation observability problem first.

## Error

```text
(No error; the symptom is opportunities in "Proposal" with close dates months past and no stage movement.)
```

## Steps

1. Pick one stuck opportunity and read its field values (stage, close date, last activity). Expected: you know exactly which criteria it should have met.
2. Open the automation (flow, workflow, or scheduled job) and check it is active and its schedule actually ran. Expected: you confirm it ran, or find it paused.
3. Check the enrollment criteria against the stuck record field by field. Expected: you find the criterion it fails, often a date comparison or a null field.
4. Read the automation's run/fault history for that record. Expected: skips and faults are logged with reasons.
5. Fix the criteria or the schedule, then manually run the automation against the backlog once. Expected: the backlog clears and new records flow correctly.

## When to use

- Opportunities sit in a stage past their expected movement.
- A scheduled flow or workflow exists but stages never change.
- After changing stage names or criteria.

## When not to use

- Users manually moving stages wrong (training, not automation).
- Validation rules blocking the stage change (different error).

## Tool compatibility

- Salesforce flows, scheduled flows, and workflow rules.
- HubSpot workflows with enrollment triggers.

## Variant phrasings

### automation never enrolled the record

Criteria or enrollment timing; check both.

### scheduled flow ran but changed nothing

The update element's criteria filtered everything out.

## Why it happens

Time-based automations depend on criteria evaluated at a moment in time. A record edited after the evaluation, a null in a date field, or a paused flow all silently skip records with no alert.

## Edge cases

- Records created before the automation was activated are never enrolled retroactively; run a one-time backlog pass.
- Timezone differences shift date-based criteria by a day; check the org timezone.
- Fault paths that swallow errors hide the real failure; log faults instead.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_Pbipf_Cp4caNS-psMcLlaA
