Back to Blog
Product Updates

Sale Manager's Failed Actions Now Fix Themselves, or Tell You How to Fix Them

A new release makes Sale Manager's failed promotions and dead listings self-heal, replaces cryptic eBay errors with real explanations, and adds one-click retry and reconnect right from the Managed hub.

Chris CrookerยทCo-Founder
July 2, 2026
6 min read
Sale Manager's Failed Actions Now Fix Themselves, or Tell You How to Fix Them

If Sale Manager has ever shown you a failed action with no explanation, and you've had to manually dig through eBay to figure out what happened, this update fixes that. We just shipped a set of changes that make failed actions recoverable instead of stuck, and honest about why they failed in the first place.

The problem: stuck rows and dead ends

Sale Manager runs your promotions, price drops, and relisting rules automatically. Most of the time it just works. But every automation system hits edge cases, and ours had a few specific ones that kept showing up:

  • A promotion would fail because the ad already existed on eBay's side, and instead of fixing itself, it would sit in "Needs You" and try the exact same failing action again on the next cycle.
  • A listing that eBay had already ended (sold out, expired, or pulled) would keep getting flagged as an error, over and over, even though there was nothing left to act on.
  • When something did fail, the error message you saw was often just "eBay API request error," which tells you nothing about what actually went wrong or what to do about it.
  • If a failure happened, there was no way to retry it yourself. You'd have to wait, or dig into settings to reconnect eBay, without knowing if that was even the right fix.

None of these are catastrophic bugs. They're the kind of rough edges that add up: a few rows stuck in your Managed hub that you have to babysit, a promotion that quietly never gets fixed, a support message asking "why does this keep failing?" This release goes after all four at once.

What shipped

1. Promotions that fail because they already exist now fix themselves

If Sale Manager tries to promote a listing and eBay comes back with "an ad already exists" for that item, the old behavior was to treat it as a failure and stop. Now, when that happens, Sale Manager reads the existing ad and updates its rate to match what you configured, instead of giving up. Your promotion settings win, and the row clears itself out of your queue.

We also tightened the ad rate itself. eBay only accepts a bid percentage between 2.0 and 100. If your configured rate falls outside that range (say, you set something below eBay's floor), we clamp it at the boundary rather than letting the request fail. This clamp now applies both when you save your promotion settings and at the moment the action actually dispatches to eBay, so there's no gap where a stale value could slip through.

2. Listings that eBay says are gone now get closed out locally, not retried forever

This is the one that was probably costing you the most cleanup time. If eBay tells us an item no longer exists, whether the auction ended, the ID is invalid, or the listing was pulled, Sale Manager used to keep re-trying the same action against a listing that simply isn't there anymore.

Now, when eBay confirms a listing is gone, Sale Manager:

  • Ends the local listing record
  • Retires the enrollment with a status of retired_ended
  • Expires the pending action

This mirrors exactly what our reconciliation job already does when it detects a listing sold out on its own. The difference is this catches it immediately, at the point of dispatch failure, instead of waiting for the next reconciliation pass.

One important detail here: we do not converge on text alone. eBay's Marketing API can return "listing Id is not valid" for a listing that's actually still live but temporarily ineligible for promotion, which is a very different situation from a listing that's truly gone. So we gate this convergence on eBay's Trading API confirming, via a live snapshot check, that the listing is actually dead before we touch the local record. We'd rather leave a row in "Needs You" a little longer than accidentally end a listing that's still selling.

3. Failed actions now tell you why, and give you a way to fix it

Instead of "eBay API request error" as the last thing you see, error messages now surface the actual detail eBay sent back, including the HTTP status code where available. If the generic SDK message is all we get, we now dig into the response for a longer, more specific message and use that instead.

More importantly, every failed action now gets classified server-side into one of two recovery paths:

Failure type What you see What to do
Permission or OAuth issue "Reconnect" Deep-links straight to your eBay connection in marketplace settings
Everything else "Retry" Re-runs the exact same action with a fresh attempt budget

4. You can retry a failed action yourself, right from the Managed hub

Previously, a failed action just sat there until the next scheduled sweep picked it up, if it ever did. Now the row menu in your Managed hub has a "Retry failed action" option, and for permission-related failures, a "Reconnect eBay" option that takes you directly to the settings page.

Retrying re-dispatches the action with a full new attempt budget, so a genuinely temporary failure, like a brief eBay outage or a rate limit, gets a real second chance instead of being treated as permanently dead.

How to use it

  1. Open your Managed hub in Sale Manager and look for any rows flagged in "Needs You."
  2. Click the row menu (the three-dot icon) on a failed row.
  3. If the failure was a connection or permission issue, you'll see Reconnect eBay. Click it and you'll land directly on the marketplace settings page where you can re-authorize.
  4. If it's any other kind of failure, you'll see Retry failed action. Click it, and Sale Manager re-dispatches the action immediately with a clean attempt counter.
  5. If the underlying listing turns out to be gone on eBay's side, you won't need to do anything. The next dispatch attempt will detect that and close it out on its own.

You don't need to change any settings to get this behavior. It applies automatically to every failed action going forward.

Why it matters

If you're running dozens or hundreds of active listings through Sale Manager's automation, the difference between "stuck forever" and "recoverable in one click" is the difference between checking your Needs You queue once a day versus fighting it every hour. A handful of specific improvements here:

  • Fewer zombie rows. Listings that are actually gone stop cluttering your queue and stop burning retry attempts against nothing.
  • Fewer wasted promotion failures. If an ad already exists, we fix the rate instead of erroring out, so your promotion strategy actually takes effect instead of silently failing.
  • Less guessing. When something does fail, you get a real reason and a real next step, not a generic error string you have to Google.
  • Faster recovery. A temporary eBay hiccup no longer means waiting for the next automated sweep. You can retry the moment you notice it.

We also ran this through adversarial testing against live eBay responses before shipping, specifically checking that our gone-listing detection doesn't misfire on listings that are merely ineligible rather than actually dead. That distinction matters: converging too aggressively could end a listing that's still selling, and converging too conservatively means the queue never clears. We'd rather be a notch conservative and occasionally ask you to retry manually than risk closing out something that's still live.

How ListForge Takes It From Here

This release is part of a broader effort to make Sale Manager's automation something you can trust to run unattended, not something you have to babysit. The goal isn't just to run your pricing and promotion rules on a schedule, it's to handle the messy edge cases that come with actually operating on a live marketplace, where listings sell out, connections expire, and eBay's own systems have quirks.

Specifically, ListForge's Sale Manager now:

  • Automatically converges promotions that fail due to an existing ad, updating the rate instead of erroring out
  • Clamps your promotion rate to eBay's accepted range so a misconfigured value never blocks an action
  • Detects listings that eBay confirms are gone and retires them locally instead of retrying against nothing
  • Surfaces specific, actionable error detail instead of generic API failure messages
  • Classifies every failure as retry-worthy or reconnect-worthy, and gives you a one-click path for either
  • Lets you manually retry any failed action with a fresh attempt budget, right from the Managed hub

If you're spending time every week manually untangling why a promotion or price rule failed, this update was built for exactly that problem. Try ListForge free at list-forge.ai and see how much of that cleanup work disappears on its own.