How Dropizon works
What Dropizon is
Dropizon keeps eBay listings that are sourced from Amazon priced and stocked correctly, around the clock. It reads Amazon the way a buyer's browser does, through a Chrome extension running on your own computer and your own IP, applies your margin formula, runs a set of guards, and pushes the result to eBay. There is no server-side scraper, no proxy pool and no third-party scraping service anywhere in the system.
The objective is not maximum scraping. It is the same order protection for the fewest Amazon requests. Every listing is asked: is a check justified right now?, and every push is asked: is this number safe to put on a live listing?
The two halves
The split is deliberate. Amazon shows different prices, stock and currency to different locations and sessions; the only reading that matches what your buyer would pay is one taken from a real browser at the right delivery location. The server never fetches Amazon itself: if the browser is closed, no prices arrive, and the system says so rather than guessing.
The end-to-end loop
- Listings are imported from eBay (a daily Active Inventory report plus the Inventory API) into one row per listing: SKU, resolved ASIN, current price, quantity.
- The tracking engine scores every listing 1 to 10 for how urgently it needs an Amazon check and writes a
next_check_at. - The extension asks the server for work every few minutes and gets the highest-risk listings that are due, each with the Amazon domain it must be read from.
- The extension opens a real Amazon tab per ASIN in a background window, reads price, stock, delivery and the ASIN actually served, and reports back.
- The server applies the markup, runs every guard, and either pushes the new price and quantity to eBay, queues it for a bulk push, or holds the listing for review.
- The outcome is recorded: what changed, and whether an order followed, so the engine learns which checks were worth making.
Getting started
- Create an account at dropizon.com/signup and connect your eBay account under Channels (an OAuth consent screen; Dropizon never sees your eBay password).
- Install the extension from the Extension page in the app (a zip you load in
chrome://extensionswith Developer mode on). Installed copies are told when a newer build is published. - Connect the extension: open its popup, enter your Dropizon login. Pick the eBay account this browser works for if you have several.
- Set the Amazon marketplace and delivery postcode in the extension's control panel (Preferences). A UK eBay account must read amazon.co.uk with a UK postcode; see Delivery location.
- Set your pricing under Channels → the account's Repricer settings: markup, fee, shipping, minimum profit, default quantity, delivery limit.
- Leave the browser open. The extension reads on its schedule; the app's Health page and the extension's Status panel show it flowing.
The Chrome extension: what it is and is not
A Manifest V3 extension ("Dropizon Helper"). It runs a background worker on an alarm, injects small scripts on Amazon and eBay pages, and has a popup and a full control panel. It needs the tabs, scripting, alarms, storage, declarativeNetRequest, notifications and contextMenus permissions; every one is used for a feature described below, and it talks to no host other than dropizon.com, Amazon and eBay.
- It does not place orders, submit eBay forms or spend money by itself. Every flow that touches a purchase or a listing form stops for you to click.
- It does not scrape from Dropizon's servers or through proxies. Reads come from your browser session, at your delivery location.
- It does open Amazon tabs on its own, in a dedicated background window, closed as soon as each is read.
The popup
The small window on the toolbar icon. It is the everyday surface; the control panel is for configuration.
| Section | What it does |
|---|---|
| Connect | Sign in to Dropizon (email + password → an API key stored locally). Shows connection state and the account in use. Open full control panel opens the options page. |
| Amazon marketplace | The default Amazon domain and + Add current tab to scraper queue, which sends the product you are looking at into the tracking queue. |
| Price fetcher | ▶ Fetch prices now runs a tier batch immediately instead of waiting for the alarm. Shows the last status line. |
| Manual reprice | 🎯 Fetch & update eBay: type an ASIN, eBay SKU or item number; the extension reads Amazon and pushes that one listing (variations included) with the full price breakdown. |
| Tracking sync | 🚚 Sync tracking now sweeps your Amazon orders for shipped tracking numbers and uploads them to the matching eBay orders. |
| Supplier account | Which Amazon account the assisted sign-in should use (per marketplace). |
| Orders to fulfil | Your unfulfilled eBay orders; one click starts the guided Amazon checkout for one. |
The control panel
Every setting the extension has, in one page (the popup's Open full control panel, or the extension's Options). Changes take effect on the next batch; nothing needs a restart.
Connection & eBay account
- Dropizon URL, email, password: where the extension reports to. The password is exchanged for an API key and not kept.
- eBay account this extension works for: when your login has several eBay accounts, the browser is bound to one. Work lists, manual reprices and orders all use it. Each computer or Chrome profile can serve a different account.
Marketplace & delivery location
- Default Amazon marketplace: the domain used when a job does not name one. Jobs from the server always carry the domain that matches the listing's eBay site (a GB listing is read from amazon.co.uk), so this is the fallback, not the rule.
- Amazon delivery location (postcode) and 📍 Set on Amazon: pins Amazon's "Deliver to" for the marketplace, changing the country first if Amazon is set elsewhere. The panel shows what Amazon itself reports back, not what was typed.
- Rotate delivery location every 15 min … 24 h, cycling through a list of cities. One change per rotation, not per product. ↻ Next city moves immediately.
- When Amazon blocks a read: change the postcode and pause N minutes (default 15), then resume from the same product. See Blocks.
- Delivery locations to cycle through: one list per marketplace, editable (
City, POSTCODEper line). amazon.co.uk ships with a built-in list of 34 UK cities; other marketplaces need cities added before rotation or block-rotation can act on them.
Tier repricing (the scheduled fetch)
- Run every 1 to 15 minutes: how often the worker asks for a batch. Running more often does not read Amazon faster: the rate limit below governs speed; this governs latency.
- Batch per run 1 to 300: how many ASINs are requested per batch.
- Reading tabs 1 to 16 (8 by default): how many Amazon tabs are open at once, fewer when the computer is short of memory. Tabs are headroom against slow pages, not speed: the speed is shared by all of them.
- Top speed per PC (blank = Auto): the Price and Stock Tracker sets each computer's speed itself. It goes up about every 3 minutes while Amazon stays quiet and the PC used 90% of its speed, and down at once on a robot check, a gate or pages that stop loading. Automatic speeds stop at 150 pages a minute for now. A number here is your own limit. Chrome profiles on one PC share its speed by the work each has; separate PCs never slow each other.
- Tier split: within a batch, hot listings take most of the slots (T1 55%, T2 30%, T3 15% by default); the priority queue takes its share first (see tracking).
- Tier work list: the server's view of what is due: which ASINs, why (score, tier, after-sale, promoted), and when each was last handed out.
Full catalogue reprice
Walks every repriceable listing, not just the ones due: the pass you run after changing a markup or a fee. It resumes a part-done range rather than restarting (a 24,000-product pass is days of reads), with Reset progress as the deliberate escape hatch.
- Target duration (hours) is the speed control: the pacer spreads the whole range over it. Shorten it to go faster; the reads-per-minute limit still caps it.
- Parallel tabs 1 to 10: headroom, not speed.
- From / To listing #: a sub-range, for a partial pass.
- Keep running: start the next pass when one finishes, for a permanently cycling catalogue.
- Bulk upload: don't push one by one; collect the decisions and let the server send them through the Feed / Inventory bulk routes. Strongly recommended on large accounts: eBay's Trading API is 5,000 calls a day across the whole application, and one-by-one pushes spend it.
Tracking sync
- Orders per sweep 1 to 50 and parallel tabs 1 to 10. The sweep opens each Amazon order's detail page, reads the carrier and tracking number once shipped, and reports them; the server uploads them to eBay and marks the order.
- Needs the supplier Amazon account signed in. A signed-out session stops the sweep and says so rather than reporting every order as "not shipped".
Tools, diagnostics and the log
- Diagnostics: connection, alarm state, window and tab counts, the last errors; the first place to look when nothing seems to be happening.
- Scraper selectors: the server-driven map of where price, stock and delivery live on Amazon's page. Updated centrally when Amazon changes its markup, without republishing the extension.
- SKU ↔ ASIN converter: Dropizon stores the eBay custom label as base64 of the ASIN; this converts either way.
- Gift options on Amazon orders: mark fulfilment orders as gifts with a message and a "from" name, so the Amazon packing slip carries no price. The message is per marketplace: on amazon.co.uk no gift message is written (the gift receipt still goes in); tick or untick each marketplace in the extension's options.
- eBay's address code never reaches Amazon: eBay UK appends a per-order code to the buyer's address line 2 (e.g.
ebaytv58sta). Printed on an Amazon label it names where the order came from, which Amazon suspends accounts for, so it is stripped from every address the extension types, shows or copies and from every address the dashboard and API hand out. The stored order keeps eBay's original. - Manual reprice: the same as the popup's, with the full breakdown shown.
- Price updates: the table shows the last 300 reads of the past 3 days; 15 days are kept locally and the CSV exports all of them: time, ASIN, eBay item, the price read, the used price, and the outcome (price + stock → eBay, up to date, held for review, no push: reason). A price with a
⃰was read correctly but not pushed; the outcome says why. Filter, freeze, export as CSV. - Status and Activity & errors: the live line for each flow and the rolling event log (blocks, rotations, holds, pushes, errors).
How a price is read
A read is a real page load in a tab of a dedicated background window, with images, media, fonts and stylesheets blocked by a declarativeNetRequest rule, so it costs a fraction of a normal visit. Each fetch tab carries a #dpzfetch marker so the user-facing scripts (capture overlay, sign-in helper) stay out of it. A read produces:
- Price and currency from the buy box, including the accordion buy box, Subscribe & Save, and the case where the price is only in the visible
whole/fractionspans and the accessibility label is empty. - Stock: in stock, out of stock, temporarily unavailable, "no featured offer", or a purchase limit / pre-order.
- Seller and fulfilment: who ships it and whether Amazon does; the used-only case.
- Delivery estimate in days, for the delivery guard.
- The ASIN the page actually served.
No featured offer, and a product that is gone
A product page with no featured offer (no buy-box price form, no Add to Basket / Buy Now of any kind, no price and no used offer, whatever wording Amazon prints beside that) is a verdict, not a failed read. The reader waits for the page to load and stay quiet for a few seconds (so a slow render can never be mistaken for an empty buy box), then reports it and the server pulls every eBay listing of that ASIN to quantity 0 at once. The same happens for a product Amazon no longer has: both shapes of Amazon's 404 page are recognised, the classic one and the rebuilt "Page Not Found" page amazon.com serves now, and the HTTP status itself is read from the tab, so a redesign cannot hide a dead product again. A dead product is recorded as product gone (permanent) rather than a stock-out.
The All-Offers fallback (reloading the page and pricing from the cheapest New offer behind "See all buying options") is off by default (Options → Price from "See all buying options"). With it on, a no-featured-offer read on a low-risk listing is deferred and the server schedules a full check; the listing is only zeroed when no New offer exists either.
Definitive reads only
A timeout, a half-rendered page, a reader error, a block page or a page that is not a product page at all ("not a product page: title") is inconclusive, never "out of stock". Only a verdict about the product (out of stock, no featured offer, gone, used-only, restricted) can take a listing off sale.
Every row links to its eBay item
Each job the server hands out carries the eBay item it is for and the Amazon it must be read from; the server's reply to a read names every item the ASIN is on, and a stock-zero names the items it moved. So a row in the Price updates sheet links to its listing whether the read succeeded, failed or was refused, and an ASIN on several items links the first and says "+N". The manual repricer resolves a typed item number or custom label to its listing first and reads from that listing's own marketplace, so a US listing is read from amazon.com even when the panel's global domain is amazon.co.uk.
Read-side guards
- Page identity. Amazon substitutes silently: ask for one ASIN and it may serve a sibling, and every marker on the page then describes the sibling. The extension compares the served ASIN to the requested one and refuses a substituted page rather than pricing your listing from a random variant. The server parks that ASIN and, if it recurs, holds the listing with an "Amazon served a different ASIN: remap" reason and quantity 0.
- Currency. A price whose currency does not match the marketplace is rejected on the spot. It means the browser's delivery location is wrong, and the number is meaningless.
- Error pages. A page that never loads is classified: Amazon's own error page, a network failure, or a redirect loop caused by another extension injecting an affiliate tag into Amazon URLs; the log names the cause so it can be fixed instead of being read as "no price".
- "Continue shopping" gate. A soft interstitial, clicked through once; being shown it at all eases the request rate a little, and a gate that keeps coming back is treated as a block.
Blocks: detect, rotate, pause, resume
Amazon's pushback takes three forms and all are detected: the captcha page ("enter the characters you see"), the Robot Check title, and the "Sorry, something went wrong" throttle page. On any of them, for any product, one shared policy applies to every reader (tier batch, full run, bulk capture, tracking sweep):
- Change the delivery postcode for that marketplace (the next city in its list) immediately. If Amazon refuses the homepage too, the change is retried at the end of the pause, right before the first read.
- Pause every reader for a fixed 15 minutes (the panel setting; 10 would probably do, 15 is the safer figure). The pause is persisted, so if Chrome recycles the extension's worker mid-wait, the next batch restores the remaining time instead of resuming early.
- Resume from the product that was refused, on the new postcode. It is not skipped and not counted as a failure: nothing was read.
The pause is fixed, not exponential, and a run is never abandoned. Only when a block follows a block with no clean read between them (the change and the pause did not clear it, so the address is not what Amazon is keying on) does the next pause double (from the 4th in a row) and then quadruple (from the 6th). Every block also eases the request rate slightly for the rest of the session. The activity log line reads like: B0C71PLRR7: robot check: postcode → Leeds LS1 4AP, pausing 15m, resuming at 12:48 from where it stopped.
Delivery location
The browser's Amazon delivery location must match the marketplace. Amazon localises price, currency and stock to the "Deliver to" location. A UK eBay account whose browser shows amazon.co.uk delivering to another country gets prices in the wrong currency (rejected by the guard) and in-stock items that read as unavailable. The extension pins the location for you, changing the country first when needed, and verifies the move by reloading and reading what Amazon reports.
- Pin: a fixed postcode per marketplace. A batch that cannot pin its location aborts rather than read unpinned: those reads look normal, pass every guard, and are wrong.
- Rotation: cycle a list of cities on a clock (15 minutes to 24 hours). Sequential, anchored to the postcode actually in force, and only committed once Amazon confirms the move, so a failed change is retried instead of skipped. Every change opens the homepage twice (set, verify): 15-minute rotation is 96 homepage visits a day, six-hourly is 4.
- On a block: an immediate rotation regardless of the clock, as above.
Pacing and tabs
- One global pacer meters every Amazon request against the tracker's speed for the PC (Top speed per PC is your limit on it). Workers divide that rate; they do not multiply it. The full catalogue pass is held to it too.
- A hard tab ceiling applies everywhere. Each tab is closed the moment it has been read; the background window is closed when nothing is running.
- Per-job domain. The server sends the Amazon domain with each job. A US listing is read from amazon.com and a GB one from amazon.co.uk within the same batch.
- Retry window. An ASIN handed out recently is not re-issued for 30 minutes, so a page that fails to read cannot consume the same slot every batch.
On Amazon and eBay pages
Capture & draft (Amazon product pages)
On any Amazon /dp/ page a Dropizon overlay offers + Capture & draft: it reads the whole product off the page you are looking at (title, brand, price, every gallery image, description, bullets, spec table) and posts it to Dropizon, which saves the product and creates a draft eBay listing priced with your markup formula. On list pages (search, bestsellers, wishlists, storefronts) Capture all enumerates the ASINs and captures each one properly through the shared reader, under the same pacing and block policy. A right-click menu entry opens any selected ASIN on Amazon.
Not drafted: a Kindle edition or an Audible audiobook (a digital product cannot be shipped). The tab reads “Kindle / Audio: not drafted”, the button refuses, Capture all skips it, and the server refuses it as well. Already on your account: when the ASIN is already a live listing on one of your eBay accounts (the synced catalogue, whoever listed it), the tab reads “Listed already” and names the item, price and account; drafting a second copy asks first.
The button can be switched off: Show “+ Capture & draft” on product pages in the extension popup (and under Preferences in the control panel) hides the orange edge tab and the button under the title on every Amazon product page, including pages already open. Automatic repricing and Capture all never use the button, so nothing else changes.
Image templates (Catalogue › Image templates)
Lay the listing image out once and every draft you publish gets it as its first eBay photo. A template is a canvas (1600 × 1600 by default) with layers: numbered photo slots that take the product's pictures in order (1 = the main photo), a title band ({{productTitle}} becomes the real title, wrapped and shrunk to fit), banner text (“FREE SHIPPING”, “SALE”…), a diagonal corner ribbon (“BEST SELLER”), pictures of your own (a logo, a badge, uploaded or by URL) and a border. Drag layers on the stage, resize them by the blue corner, set colours, fonts (Roboto Regular / Bold / Black), opacity and stacking order in the panel. Load photos into the stage shows a real product in the slots; Test template renders the actual picture on the server. Save as many templates as you like, mark one as the default for an account or for all your accounts, and export/import them as JSON. On Drafts, Make template image renders it for one draft; publishing a draft renders it automatically when the account has a default. The picture is made on the server (PHP GD) and served from your own domain, so eBay never fetches from Amazon.
Order fulfilment on Amazon
Place order on Amazon from the Orders page (or the popup) walks the whole purchase in one tab: product → add to cart → checkout → the buyer's shipping address filled in → stop at payment. You pick the card and place the order; nothing is ever purchased automatically. On Amazon's confirmation page it reads the order number and reports it to the order, so the Orders page shows the Amazon order id and cost. The fulfil panel is draggable, works on product and checkout pages, and supports the gift options above.
Assisted sign-in. With a supplier account chosen in the popup, Amazon's sign-in pages are filled (email, password, OTP) but never submitted: you review and click. Supplier accounts are per marketplace, so a GB order is placed from the GB account.
eBay item & orders overlays
- On one of your eBay item pages, a banner above the title: whether the product is still sourceable, the priority score and level, when the next Amazon check is due (live countdown), and the reason if it is off sale, the Amazon 404 text, the guard's hold reason, the stock-out reading. Every word comes from what the server recorded; nothing is inferred in the page.
- On the Seller Hub orders list, the same verdict as a chip under every item, from the same server function, so the two can never disagree. Seller Hub re-renders constantly; the script scans with a debounced observer and caches verdicts.
Browser-driven eBay lister
When the Drafts page hands a listing to the extension, eBay's Sell form opens with a floating panel: one-click Copy for every field, and a best-effort Auto-fill form driven by a server-overridable selector map. You always review and click eBay's own List it. Mark as listed / Skip clears the job from the queue.
Other suppliers
On Walmart and AliExpress product pages, Source to Dropizon reads the offer (title and price prefilled, editable) and attaches it to one of your captured Amazon products as an alternative supplier.
Updates and versions
Every ping to the server carries the installed build. When a newer build is published, the popup nudges you to update; the Extension page in the app lists every published zip. The extension is loaded unpacked, so an update is: download the zip, replace the folder, reload in chrome://extensions. Content scripts already running in open tabs keep the old build until those tabs reload; a mismatch shows as odd behaviour on one tab only.
Which listing is checked, and when
Every listing gets a priority score from 1 to 10, and the score sets the interval to its next Amazon check. Nothing is on a fixed timer.
The factors
Each is normalised to 0 to 1 and combined as a weighted mean, then multiplied by a UK-demand factor and a learned adjustment. Default weights: recent eBay orders 3.0 (the strongest signal); financial exposure (price × quantity) 2.0; order frequency 1.5; recent views 1.5; view velocity 1.5; Amazon price volatility 1.5; stock volatility 1.5; conversion 1.0; staleness 1.0; category performance 0.5. Only their ratio matters.
The intervals
| Score | Level | Next check |
|---|---|---|
| 9.0 to 10 | CRITICAL | 60 minutes |
| 7.5 to 8.9 | HIGH | 3 hours |
| 5.5 to 7.4 | MEDIUM | 12 hours |
| 3.5 to 5.4 | LOW | 24 hours |
| under 3.5 | DORMANT | 72 hours |
Bounded at both ends (never more often than 30 minutes, never less often than a week) so learning can never run away. A listing that is held or out of stock is re-read at least every 10 minutes whatever it scores: it is off sale, so it has no views and no sales, and would otherwise wait days for the reading that could put it back on sale.
Jumping the queue
- An eBay order → CRITICAL, due immediately (see after a sale).
- A view spike (views up 50% off a base of at least 5), conversion rising above 10% of views, or Amazon turning volatile (out of stock on more than 40% of recent readings). A promotion cannot re-fire for 3 hours.
UK demand and self-learning
Your own orders over 90 days, bucketed by weekday and hour in Europe/London time, become a multiplier of roughly 0.75× to 1.35×; until there are enough orders it is exactly 1.0. Every check is recorded with what it found and whether an order followed within 48 hours; once there are 200 outcomes the engine compares the yield of checks against a 20% target and shortens or lengthens intervals within 0.5× to 1.8×.
How the price is calculated
One function decides every price. The manual button, the scheduled batch, the after-sale reprice and the full-catalogue sweep all go through the same formula; the only intentional difference is that a manual reprice ignores the minimum-change threshold, because you asked for that listing by name.
- base = the Amazon price just read + your shipping cost.
- profit = a percentage of base, or a fixed amount (the markup type), plus any extra percentage and extra fixed amount.
- the minimum profit is a floor, not an addition: it only bites when everything above it falls short.
- gross up for the fee:
price = (base + fee_fixed + profit) ÷ (1 − fee% ÷ 100). Dividing is what makes eBay's percentage the buyer's cost instead of coming out of your margin. The fee percentage is the number that moves the price most. - Optionally round to
.99(or a per-listing cents ending).
- Per-listing overrides: markup, markup type and fixed amount, default quantity, delivery limit,
.99, set in the listing drawer or by bulk edit, and shown in the price breakdown. - Sales-based pricing: rules that adjust a listing's price by a percentage or amount according to its sales in the last 30 days, applied inside the same formula.
- Minimum change: a change is pushed only if it moves the price by at least 3%, so pennies of drift do not spend an API call.
- Quantity is a target, not a floor: where stock monitoring is on, the listing is set to the account's default quantity, restoring one at 0 as readily as capping one too high. Stock monitoring off leaves quantity to you; price still updates.
The guards: what stops a bad push
Each guard can hold a listing for review and pull it off sale (quantity 0). Held listings appear on Price Review with the reason and the source; most release themselves when the reason clears.
| Guard | Trigger | Release |
|---|---|---|
| Out of stock | An explicit unavailability signal from Amazon → eBay qty 0, flagged so nothing raises it again. | Automatic on the next in-stock read. |
| No featured offer | A product page with no buy box, no add-to-cart, no price and no used offer, once loaded and quiet → eBay qty 0. | Automatic on the next read with a featured offer (or, with the All-Offers fallback on, a New offer). |
| Product gone | Amazon 404 (either shape of the page, or the tab's HTTP status), recorded separately from a stock-out because it is permanent. | Remap the SKU or end the listing. |
| Used-only | The only offer is used → held, qty 0. | Automatic once a later read shows a new offer, priced and in stock; the review row is retired. |
| Purchase limit / pre-order / Fresh | Amazon will not let the item be resupplied reliably → qty 0, recorded distinctly. | Automatic on a normal read. |
| Slow delivery | Amazon's estimate exceeds the listing's limit (listing override → postage policy → account default, 7 days by default) → held. | Automatic the first time a read shows delivery within the limit. |
| Price circuit breaker | Proposed price below the floor (0.99), above the ceiling (1,500), or, if enabled, a swing larger than the configured percentage. | A person: approve, reject, or push price only. |
| Wrong currency | Reading not in the marketplace's currency → rejected outright. | Fix the delivery location. |
| Wrong product served | Amazon served a different ASIN → nothing written; recurring → held with "remap". | A person: set the correct ASIN in the drawer (which locks it against report overwrites). |
| Quota breaker | eBay reports the Trading pool exhausted → Trading-model pushes pause 60 minutes. | Automatic. Inventory-model listings are unaffected. |
| Kill switches | The super-admin can pause eBay writes globally or per account. | The switch. |
How a change reaches eBay
| Route | Daily allowance | Used for |
|---|---|---|
| Inventory API | 2,000,000 | Listings under eBay's Inventory model. 25 offers per bulk call. Needs an offer id, which a job discovers continuously. |
| Feed API | 100,000 | Bulk price and quantity files, up to 4,000 listings per file, confirmed by eBay before Dropizon's copy is updated. |
| Trading API | 5,000, shared by the whole application | Everything else, one call per listing. The scarce route. |
- Batched accounts decide, they do not call. On an account with batching on, the scheduled repricer only records decisions in a push queue; a drain sends them 25 to a call every minute, from every worker lane. This is how a 35,000-listing catalogue crosses in minutes rather than days.
- The Trading breaker never stops Inventory work. A refused Trading call pauses only the listings that need Trading; everything with an offer id keeps flowing.
- A queued decision has a shelf life (60 minutes). If the drain fell behind, a stale decision is dropped and re-decided from the current reading rather than shipped.
- A duplicates END job reserves the Trading pool so it can finish; the after-sale reprice and the off-sale push when Amazon has none are the two things that override that reservation.
After a sale: highest priority
An eBay order is the strongest repricing signal there is: you have just committed to buy the item at whatever Amazon charges now.
- Orders are synced every 2 minutes. Each line item's listing is flagged and promoted to CRITICAL, due immediately.
- The extension's very next batch reads that ASIN.
- The after-sale repricer runs first in every server tick, before any other job, for every account. It waits up to 6 minutes for the read the sale triggered (pricing from the reading that predated the sale would throw the fresh one away), then pushes price and restock in one call, with an optional post-sale uplift (2% by default). If the extension is closed, it prices from the best reading it has rather than leaving a sold item at its old price.
Typical latency, order to new price: two to four minutes.
Dropizon custom label vs eBay SKU
eBay's Inventory API cannot rename an existing inventory item's SKU without ending and relisting, which creates a new listing and loses its history. Dropizon therefore keeps two things and shows them distinctly:
- eBay inventory SKU: read-only in Dropizon. Used for every eBay API operation, forever. Never changed behind the scenes.
- Dropizon custom label: yours to set, search by and display. Optionally it can also point the listing at a different Amazon source (which locks that ASIN against the daily report overwriting it).
Only a listing not under the Inventory model (no offer id) can have its actual eBay SKU renamed, through Trading, and only when you explicitly ask.
Multi-variation listings
A multi-variation eBay listing has one parent and many children, and each child is its own Amazon product with its own ASIN, price and stock. Children are read and priced individually; a parent ASIN is never read, because Amazon would serve an arbitrary sibling. Children are mapped from the listing's variation specifics (or distinct SKUs) and verified before they are scraped; a variation push prefers the Inventory API and falls back to Trading. Sales credit, out-of-stock flags and the tracking score all go through the children, never the parent row.
The listings page & states
Inventory (the eBay listings page) shows every row with its eBay price, latest Amazon price, target, delta, state and, since the state alone was not enough, a Reason column that says in one sentence why the row is in that state and what, if anything, is holding it.
| State | Meaning |
|---|---|
| in sync | eBay price equals the target from the latest Amazon read. |
| will update | A push is pending: the target differs by ≥ 3%, or the quantity is below the floor and Amazon has it. The reason names any hold (plan cap, skip date, quota, kill switch). |
| under threshold | Target differs by less than the minimum change: no push, on purpose. |
| price too old | The latest Amazon read is older than 24 hours; waiting for a fresh one before pushing. |
| held by guard | Off sale by a guard (see above). The Guard page shows the incident. |
| paused | Repricing paused for this listing by you. |
| no Amazon price | The latest read found no price: out of stock, no buy box (deleted / no featured offer), or not read yet. The tile on the page breaks the count down. |
| non-ASIN | The SKU does not decode to an ASIN and no source is set: set one in the drawer. |
Filters (state, tier, type, availability, profit, region, uploaded) drive every bulk action, including "select everything this filter matches" for pause, resume, tier pinning, pricing rules, bulk edit and delete. Live preview shows how the current settings would price a row before anything is pushed.
Orders, tracking, duplicates
- Orders: every eBay order with the product picture, the order date in your local time, the buyer's address, links to the listing on eBay and in Dropizon, and the fulfilment toolbar: open on Amazon (the right marketplace, as the right supplier account), place the order, record the Amazon order id and cost, and push tracking.
- Tracking: found by the extension's sweep, uploaded to eBay, marked "on eBay" or "not pushed".
- Duplicates: eBay allows two live listings with the same custom label; Dropizon's identity is account + SKU, so the second cannot be tracked. The Duplicates page finds them from the daily report and ends the extras on eBay through a single background job, in the background, with a typed confirmation. It is the one place that ends listings.
- Listings CSV and Inventory Migration: bulk edit by file, and a one-way conversion of an account's listings to eBay's Inventory model so they can use the bulk routes.
Scheduled jobs
The server runs a tick every minute on four parallel worker lanes; lane 0 carries the singleton jobs. Each job records its last outcome, visible on the app's Cron page and the Health page's self-check.
| Job | Cadence | What it does |
|---|---|---|
| After-sale reprice | every tick, first | Reprices and restocks listings that just sold. |
| Sync eBay orders | 2 min | Pulls new orders; flags and promotes their listings. |
| Batch price push (drain) | 1 min, every lane | Sends queued decisions 25 per Inventory call. |
| Bulk price push (Feed API) | 3 min | Files pending price/quantity changes; write-back on eBay's confirmation. |
| Recompute priority | per the Cron page | Rescores every listing, refreshes volatility and demand, promotes on spikes. |
| Discover offer ids | per the Cron page | Finds Inventory offer ids for listings and variations that lack one. |
| Sync sales velocity / traffic | 15 min / 6 h | Sales per SKU; eBay views and impressions. |
| Fast listing sync (CSV report) | daily 05:00 | Refreshes every listing from eBay's Active Inventory report; prunes ended ones. |
| Inventory API import | 20 min | Walks inventory items for titles, images and offer ids. |
| Delete jobs (drain) | 1 min | Processes END jobs from Duplicates and filtered deletes. |
| Sales-based pricing | hourly | Applies sales rules to listing adjustments. |
| Subscription enforcement / reminders | 10 min / daily 09:00 | Lapsed plans: 402 and eBay accounts switched off; renewal emails. |
| Purge price history / retention purge | daily | Trims old readings and closed-account data. |
| System self-check | 10 min | Stale prices, stuck jobs, listings under the stock floor, extension heartbeat, traffic scope. |
Plans and limits
Every plan includes every feature. A plan is the number of listings Dropizon reprices for you, counted across all the eBay accounts you connect (200 to 10,000 listings); the Unlimited plan has no cap for one eBay account. Over the cap, the newest listings are marked plan blocked and left alone rather than silently dropped. A lapsed plan pauses repricing and switches the eBay accounts off until it is renewed; nothing is deleted. Prices and details are on the plans page.
Why is my listing…? (FAQ)
…"will update" but not updating?
Read the Reason column. The usual holds: the plan cap, a skip-until date, the Trading quota (Trading-model listings only), a kill switch, or a delete job holding the Trading pool. If none is named, the push is queued and lands on the next drain, under a minute on a batched account.
…showing "no Amazon price"?
Amazon was read and showed no price: out of stock, deleted, or no buy box. The listing is at quantity 0 because of that reading, which is the intended outcome. "Not read yet" means it is still in the queue.
…"held for review" although Amazon has it in stock now?
Look at the hold's source on Price Review. Stock, used-only and slow-delivery holds release themselves on the next read that clears them. A circuit-breaker or "remap" hold needs a decision from you; that is the point of it.
…priced in the wrong currency / rejected?
The browser's Amazon delivery location is in the wrong country. Set it in the extension's control panel; the guard will accept the next read.
The extension says "blocked": what now?
Nothing. It has changed the postcode and will resume in 15 minutes from the same product. If blocks keep following blocks, the pauses lengthen; setting a lower Top speed per PC or fewer reading tabs is the lever if it persists.
Reads fail with "page never loaded" / ERR_TOO_MANY_REDIRECTS?
Another extension in the same Chrome profile is rewriting Amazon URLs (affiliate tags do this). The log names it; disable it for the profile the reader runs in.
Nothing has been read for a while?
The browser must be open, the extension connected and the account chosen. The app's Health page shows the extension heartbeat and the last read; the extension's Diagnostics panel shows the alarm and window state.
Where data lives
| Table | Holds |
|---|---|
| ebay_offers | One row per listing: SKU, resolved ASIN, custom label, price, quantity, tier, score, next/last check, hold and pause flags, per-listing overrides. |
| ebay_variations | One row per variation child with its own ASIN, price, quantity and offer id. |
| price_history | Every Amazon reading: price, currency, stock, source on the page, when. |
| tracking_outcomes | One row per check and what followed: the learning data. |
| price_guard_queue | Listings held for review, reason and source. |
| ebay_push_queue | Decisions waiting for the bulk drain. |
| ebay_orders | Orders, buyer address, Amazon order id, tracking. |
| audit_log | Every decision the system made and why: the first place to look. |
| settings / integrations.config | Every global threshold; every per-account pricing knob. |
Locally, the extension keeps its API key, settings, the last 15 days of reads and the rolling activity log in chrome.storage.local; nothing leaves the machine except reports to dropizon.com.
Known limits
- No browser, no prices. Reads depend on a signed-in Chrome with the extension connected and the right delivery location.
- eBay's Trading API is one shared pool of 5,000 calls a day for the whole application; that is why bulk work goes through the Inventory and Feed routes, and why converting an account to the Inventory model matters at scale.
- eBay does not publish transit time in a fulfilment policy, only handling time; the delivery limit is what you configure.
- Duplicate custom labels on eBay collapse into one tracked row; the extras are listed on Duplicates until ended.
- Some variation SKUs cannot be mapped automatically when the same SKU is reused across listings; they are left alone rather than wired to the wrong offer.
- Amazon's page changes. Selectors are updated centrally, but a new layout can still produce "no price" for a while; the diagnostics carry what the reader saw.
Questions this page does not answer: contact us. Inside the app, Settings → Manual shows the same rules with your installation's live values.