Appearance
Sending stock to the marketplace
Once an offer's stock to publish differs from what the marketplace last confirmed, the offer is Waiting to send. This page explains how the number actually reaches eMAG or Fashion Days, what can go wrong, and what Stock Sync does about it. ABOUT YOU answers a stock update a moment later instead of straight away; that has a section of its own.
What is sent
For each offer, Stock Sync sends exactly two things: the offer id and the new stock number, for the account's Warehouse (shown on the Connection card of the account's Summary). Nothing else about the offer changes: not the price, not the handling time, not the status, not the description.
The number sent is always the full stock ("set to 7"), never a difference ("add 2"). Sending the same message twice is therefore harmless.
When it is sent
A sending round starts a second or so after offers become Waiting to send, for each account on its own. It only sends when the account is:
Otherwise the offers stay Waiting to send until the account can send again.
Each account has one sending round at a time, never two in parallel. Changes that arrive while a round is running are picked up by the next round, straight after.
Batching and speed
- A round sends up to 50 offers per request, the most eMAG accepts in one request.
- Requests are spaced to the account's Request budget, shown on the same Connection card. The default is 2 requests per second; eMAG allows at most 3 per account, across everything we do with that account, so the default leaves room for other work.
- At 2 requests per second and 50 offers per request, Stock Sync sends about 100 offers per second. A full re-send of a 100,000-offer account takes about 17 minutes. An ordinary 15-minute reading changes a few dozen offers, which go out in a second or two.
A Sending round appears in Activity → Sync runs whenever it sent something, with counts such as "37 published · 1 rejected". Its failed count only counts offers that gave up in that round and are now Failed, not offers that will be retried. A round in which the marketplace was only busy or slow still ends Succeeded; a round ends Failed only when the whole account becomes unavailable (see the last row of the table below).
What the marketplace can answer
The marketplace answers for each offer separately. Stock Sync sorts every answer into one of four outcomes:
| Marketplace answer | Outcome | Offer becomes | What happens next |
|---|---|---|---|
| Accepted | Published | In sync, Published = the number sent | Nothing |
| Refused because of a campaign (the message mentions a campaign) | Rejected, campaign lock | Rejected with eMAG's message | Tried again every 6 hours for up to 14 days, because the lock ends when the campaign ends |
| Refused because the offer does not exist or is not found | Rejected, offer not found | Rejected with the message | Not retried until the stock changes or someone presses Resync |
| Refused for any other reason (invalid data) | Rejected, validation | Rejected with the message | Not retried until the stock changes or someone presses Resync |
| Busy (too many requests, code 429), server error (codes such as 500 or 503, "service unavailable"), timeout, no answer, no result for this offer | Temporary failure | stays Waiting to send, with "attempt 3, next try in 2 minutes" in Last problem | Retried automatically, waiting longer each time |
| 8th temporary failure in a row | Failed | Failed | Waits for an operator's Retry failed or Resync, or for new stock |
| The marketplace refuses the login (wrong API user or password), or does not let this API user, or our server's address, use its API | Account problem | The whole account becomes Suspended | The round stops and ends Failed, with "Account unavailable: …". See Account health and pausing |
Rejections and failures are different
This is the most useful distinction on this page:
- A rejection is a clear "no" from the marketplace, for a business reason. Sending the same number again will get the same "no". Read the reason in Last problem; usually somebody in operations has to act (for example, wait for the campaign to end, or fix the offer on the marketplace).
- A failure is "no answer" or "not now". Nothing is wrong with the offer. Stock Sync retries on its own. An offer only becomes Failed after about an hour of trying, which usually means the marketplace or our connection to it had a real outage. Once it is over, press Retry failed.
The retry timetable
| Attempt that failed | Next try after |
|---|---|
| 1st | 30 seconds |
| 2nd | 1 minute |
| 3rd | 2 minutes |
| 4th | 4 minutes |
| 5th | 8 minutes |
| 6th | 16 minutes |
| 7th | 30 minutes |
| 8th | none: the offer is Failed |
If the marketplace says how long to wait (it can when it is too busy), Stock Sync waits at least that long. Retries are started by a check that runs every minute, so each wait can be up to a minute longer than the table says. All seven waits add up to about 62 minutes.
When stock changes while it is being sent
Suppose Stock Sync is sending 5 for an offer and, in that same second, the PIM drops to 1. The marketplace confirms 5. Stock Sync records Published 5, sees that 1 is now wanted, keeps the offer Waiting to send and sends 1 in the next request. An older number never overwrites a newer one.
ABOUT YOU: sent first, confirmed a moment later
eMAG and Fashion Days answer each stock update at once. ABOUT YOU does not. It accepts the update, works on it, and says later whether it applied it. Stock Sync follows that in two steps, and an offer has a status of its own for the time in between: Sent, awaiting confirmation.
- When PIM's stock changes, the offer is Waiting to send, as for eMAG.
- Stock Sync sends the new stock, up to 1,000 offers in one request. The offer becomes Sent, awaiting confirmation.
- Stock Sync asks ABOUT YOU how it went ten seconds after sending, then every ten seconds for a minute, then less often (see the schedule). When ABOUT YOU confirms, the offer is In sync and Published is the number sent. When ABOUT YOU refuses it, the offer is Rejected with ABOUT YOU's reason in Last problem. When something went wrong on the way (ABOUT YOU busy, or no answer), the offer goes back to Waiting to send and is tried again later, on the retry timetable above.
- If ABOUT YOU has still not answered after 30 minutes, the offer goes back to Waiting to send, with "ABOUT YOU did not confirm the update within 30 minutes" in Last problem, and Stock Sync sends the stock again.
While an offer is Sent, awaiting confirmation, the offer page says what was sent and when: "Sent 12 at 30/09/2026, 10:51, waiting for the marketplace to confirm". The Offers list shows the same status in amber, and its Status filter has it as an option. Because the number has been sent but is not yet applied, the Overview and the account count these offers with Waiting to send (the Waiting to send tile, the accounts' Waiting figures, the Waiting quick view and Offer health). A Sending round in Activity → Sync runs counts the offers it sent as "1000 sent, awaiting confirmation". The round that gets ABOUT YOU's answer counts those offers as published or rejected as usual, and adds "1 batch confirmed" (a batch is what one request carried: up to 1,000 offers). A batch ABOUT YOU never answers shows "1 batch not confirmed in time" in the round that gave up on it.
When stock changes while an offer is waiting for ABOUT YOU's answer, Stock Sync sends the new value at once, without waiting for the first answer. Every send carries the time it was made, and ABOUT YOU always keeps the most recent value it received, so the order in which it finishes the two does not matter.
Preview works as for eMAG: Stock Sync works everything out and sends nothing. A batch sent before the account went back to Preview is still asked about, so its offers do not stay awaiting confirmation.
What ABOUT YOU says about an offer
ABOUT YOU approves and publishes products itself. It reports a status for every product variant, and Stock Sync shows it like this:
| ABOUT YOU status | Marketplace state on the offer page | Marketplace validation | Stock sent? |
|---|---|---|---|
| Active (on sale) | On sale on the marketplace | Nothing reported | Yes |
| Inactive (taken offline by the company) | Switched off on the marketplace | Nothing reported | Yes |
| Draft | Switched off on the marketplace | Nothing reported | Yes |
| Pending approval, or approved and being published | Switched off on the marketplace | Waiting for validation | Yes |
| Rejected in ABOUT YOU's review | Switched off on the marketplace | Rejected in review | Yes |
| Problem (was on sale, a change made it invalid) | Switched off on the marketplace | Needs correction | Yes |
Every ABOUT YOU offer receives its stock, whatever its status. This differs from eMAG on purpose. ABOUT YOU can put a product on sale by itself, when it approves it, when a problem is fixed, or when an inactive product is published again, and Stock Sync would only notice at the next morning's offer import. If stock had been held back until then, the product would go on sale with outdated stock and could be oversold. So Rejected in review and Needs correction are only information (they are not red, and they do not say "no stock sent"): somebody has to fix the product on ABOUT YOU, and the stock is already right when it goes on sale again.
The outbox
Inside Stock Sync, every change (for example "offer 101577 now needs 5") is saved together with a message that tells the rest of the system to act on it. Both are saved at once, or neither is. That way a change can never be lost between two parts of the system. The place where these messages wait is the outbox.
Normally a message waits less than a second, and you never see it. Only messages that could not be passed on, and now wait for a person, are counted: in red beside Activity in the sidebar, on the Outbox tab of Activity, and as a row of the Overview's Needs your attention. Healthy is none at all.
What "set aside" means
A message is set aside when it cannot be passed on. If the internal message queue refuses it five times, counted only while the queue is accepting other messages, it is set aside. A message that is too large (over 1 MB) or that Stock Sync cannot package is set aside at once. A set-aside message is never retried or deleted on its own. It stays on the Outbox tab of Activity with its reason, and the Overview's Needs your attention says, for example, "3 outbox messages set aside".
What to do:
- Tell the technical team. They find and fix the cause.
- An operator opens Activity → Outbox and presses Release on one message, ticks several and presses Release on the bar, or uses Release all for an account. Stock Sync says "Released 2 messages. The relay tries them again from its next tick." (The relay is the part of Stock Sync that passes outbox messages on; a tick is one of its rounds, every half second.)
Releasing before the cause is fixed only sets the messages aside again. See Deal with set-aside messages.
If the message system itself is down, messages simply wait and nothing is set aside; they go out when it is back. The screens show "Connection lost … The message queue is down." under the top bar meanwhile. While it is down, pausing an account, changing settings, going back to Preview and releasing set-aside messages still work; other actions are refused within a few seconds with a message saying nothing was changed.
Sending again by hand
| Button | Where | What it does |
|---|---|---|
| Retry failed | The top of the Offers page or an account's Offers tab, the selection bar, or the failed-offers row of the Overview's Needs your attention | Puts every Failed offer (of every account, of the filtered accounts, or of the selection) back to Waiting to send, except offers the marketplace has ended |
| Resync stock | The selection bar of the Offers list, after ticking offers | Sends the ticked offers again (any number of them), even if they are In sync or Rejected; with Select all … matching, every offer that matches the filters (up to 5,000) |
| Resync | The offer's row, its side panel and the Offer page | Sends this one offer again |
These are useful after a campaign ends, after someone fixed an offer on the marketplace, or when you suspect the marketplace shows something else than it confirmed. See Resend stock for some offers.
Examples
Example 1: a campaign lock
Offer 101577 on eMAG RO is in a Black Friday campaign. The PIM drops from 7 to 5.
- 10:22: Stock Sync sends 5. eMAG refuses with a message about the campaign.
- The offer is Rejected with eMAG's message in Last problem. The Overview's Needs your attention says "1 offer rejected by the marketplace on eMAG RO".
- 16:22, 22:22, 04:22 …: Stock Sync tries 5 again every 6 hours. The history does not add a new row for each identical refusal.
- The campaign ends on day 4. The next try is accepted: In sync, Published 5.
- If the PIM had changed to 4 on day 2, 4 would have been tried straight away, not at the next 6-hour mark.
- If the campaign had lasted more than 14 days, the offer would stay Rejected and wait for new stock or a Resync.
Example 2: eMAG has an outage
On a Tuesday at 14:00 eMAG answers every request with a server error (code 503, "service unavailable") for 90 minutes. 37 offers of eMAG RO are waiting.
- 14:00: first attempt fails. Last problem reads "eMAG offer/save answered 503: … · attempt 1, next try in 30 seconds".
- The retries follow the timetable, each up to a minute later than shown: 14:00:30, 14:01:30, 14:03:30, 14:07:30, 14:15:30, 14:31:30, 15:01:30. The sending rounds of those minutes still say Succeeded in Activity → Sync runs, because nothing has given up yet.
- The 8th attempt, at about 15:02, also fails. The 37 offers become Failed, and that round counts "37 failed". The Overview shows "37 offers failed on eMAG RO" and the Needs a fix tile turns red.
- 15:30: eMAG is back. An operator presses Retry failed. All 37 are sent within a second and become In sync.
Example 3: an offer that no longer exists on eMAG
Someone deleted offer 204411 on eMAG BG by hand. The PIM changes its stock, Stock Sync sends it, and eMAG answers "This offer does not exist".
- The offer is Rejected with that message. It is not retried.
- An operator lists the product again on eMAG BG with offer id 204411, then presses Resync on the offer page. The stock is sent and accepted.