A used-gear business, rebuilt as one Magento system.

US Camera Pro buys and resells used cameras and lenses. IWD folded their separate quoting, pricing, and eBay app into a single Magento store, with a used-gear pricing engine driven by live eBay comps, customer trade-in quotes, two-way eBay sync, and in-admin shipping labels.

The client

US Camera Pro

US Camera Pro buys pre-owned cameras, lenses, and photography gear from customers and resells it across its storefront and its eBay store. Every acquired unit is unique, graded by condition with its own serial number and shutter count, which makes both pricing and inventory unusually complex, the kind of catalog our Adobe Commerce experts are built for.

The solution

Running a used-gear business across two separate apps doesn't scale.
So we engineered it into one Magento system.

Two apps became one

The separate quoting, pricing, and eBay app folded into Magento as native extensions, no more sync layer.

A used-gear pricing engine

Buy prices computed from live eBay sold comps and condition-grade formulas, refreshed daily.

Trade-in quotes, self-serve

A Sell Gear tool and My Quotes turn the internal pricing engine into an online offer.

Condition-graded inventory

Catalog templates spawn unique salable units, each with its grade, serial, and shutter count.

Storefront and eBay in sync

Two-way sync keeps both channels aligned from one catalog, no double listing.

Labels printed in-house

USPS and FedEx labels generated in the Magento admin, with customer tracking.

By the numbers

Engineered,
not assembled.

A used-gear marketplace with unique, graded inventory and live market pricing doesn't fit off-the-shelf Magento. So we built the system that does.

Start a project
13 builds
2 apps into 1
4 eBay APIs
2 sales channels
The stack

Nine systems. One platform.

Marketplace, payments, shipping, and the custom pricing and quoting engines, wired straight into the one Magento store, not bolted on as a separate app.

  • PlatformMagento 2The single system the whole business now runs on
  • MarketplaceeBayIdentity, scraper, selling, and trading APIs
  • MarketplaceM2E ProTwo-way Magento and eBay catalog sync
  • PaymentsStripeCard payment processing
  • PaymentsBraintreeSecond card gateway
  • ShippingFedExIn-admin FedEx label generation
  • ShippingUSPS (Stamps.com)In-admin USPS labels and postage
  • PricingPricing EngineeBay-comp-driven used-gear valuation
  • Trade-inQuote ManagementAdmin and storefront trade-in quoting
Platform evolution

Built in phases.

US Camera Pro wasn't a single launch. It moved from two apps to one, then to a self-serve trade-in storefront, to in-house shipping labels, to a front-end refresh, each phase shipped without losing the layer beneath it.

  1. Phase 01Two systems into one

    Migrated the quoting engine, pricing engine, catalog, and eBay services out of a separate app and into Magento as native extensions, plus the admin Quote Management tooling and a bulk catalog import, so the business runs on one platform.

  2. Phase 02Storefront & trade-in

    Shipped the customer Sell Gear quote tool and My Quotes, B2B-versus-consumer pricing, quote PDFs and email with holiday-aware expiry reminders, two-way eBay sync via M2E Pro, and a theme upgrade.

  3. Phase 03Labels in-house

    Added USPS and FedEx shipping-label generation directly in the Magento admin, with configurable handling fees and customer tracking, ending the dependence on eBay to create labels.

  4. Phase 04Refresh & maintain

    A storefront refresh across the homepage, category, and product pages with Core Web Vitals work, plus ongoing platform upkeep as the catalog and channels grow.

A Canon mirrorless camera and lens, used photography gear
Platform engineering

One system, not two.

The hard part wasn't any single feature. It was taking a business that ran as two synchronized apps, a custom quoting and pricing engine on one side and a Magento storefront on the other, and folding it into a single Magento system the team can run and grow from one place.

13custom builds, all native to one Magento platform
  • Pricing on live comps. An eBay sold-listing scraper feeds a valuation engine that prices every unit.
  • Unique, graded units. Each acquired camera or lens is its own item with grade, serial, and shutter count.
  • One catalog, two channels. Two-way eBay sync keeps the storefront and the eBay store aligned.
The payoff

Faster offers,
one system to run.

The build was never the point. This is what changed day to day for US Camera Pro's buying desk and storefront.

Get this for your store
Buying gear

Instant, data-backed offers

The pricing engine turns recent eBay sold listings into a buy quote in seconds, so staff stopped hand-pricing every trade-in against comps and buyers get a consistent, defensible number.

Custom builds. Engineered for a used-gear marketplace.

Buying gear from customers, pricing unique graded units against live market comps, and selling across a storefront and eBay is not what stock Magento is built for. So we engineered the quoting, pricing, inventory, sync, and fulfillment layer the business actually runs on. Every build is owned by US Camera Pro.

Platform

Central-to-Magento Consolidation

What it doesThe business originally ran as two systems: a separate custom app that held the quoting engine, pricing engine, catalog, and eBay services, plus a Magento storefront. We migrated that logic into Magento as native extensions so the whole operation runs as one system.

Why from scratchKeeping two synchronized apps in step was fragile and slow to change. Folding everything into Magento removed the sync layer and put the business on a single, maintainable platform.

Pricing

Used-Gear Pricing Engine

What it doesA valuation engine that computes a buy price and buy percentage from formula tables (condition grade, grade ratios, price settings, shutter-count ratios) fed by real eBay sold-listing data, with a daily cron that refreshes a current price for every catalog item.

Why from scratchPricing used gear is judgment-heavy and never fit a generic markup formula. The engine encodes how US Camera Pro actually values gear so an offer is fast, consistent, and grounded in live market comps.

Data

eBay Price Scraper

What it doesA scraper that pulls eBay sold and completed listings to source comparable pricing, with carefully encoded queries (a stray + vs % changed result counts dramatically) and a weekly cron that refreshes the comps table behind the pricing engine.

Why from scratchThe pricing engine is only as good as its comps. Scraping real sold prices, accurately, is what makes each quote reflect what gear is actually selling for.

Trade-in

Quote Management

What it doesA Quote Management area in the admin: quote lists, create and edit forms, and line-item grids carrying grade, serial number, shutter count, discount reason and percentage, buy price, buy percentage, and retail price, with statuses through the buy workflow.

Why from scratchBuying gear from customers is a workflow Magento does not ship with. Quote Management models the whole trade-in process the buying desk runs every day.

Storefront

Sell Gear & My Quotes

What it doesA customer-facing Sell Gear quote tool and a My Quotes area in the account, plus a synonym-aware quote search (so f2.8, f/2.8, and f28 all match) and a quote bonus or adjustment that recalculates each line.

Why from scratchSellers want to see what their gear is worth without a phone call. The storefront tool turns the internal pricing engine into a self-serve quote.

Catalog

Condition-Graded Inventory

What it doesA model where the Magento catalog acts as a template (custom attributes for pricing title, quote title, eBay category, price bounds, identifiers) and each acquired unit becomes its own salable item with a condition grade, serial number, and shutter count.

Why from scratchNo two used units are identical. The model treats every camera and lens as a unique graded item while still pricing it against a shared template.

B2B

B2B vs Consumer Quote Pricing

What it doesA B2B customer group that sees the exact buy price and full discount and retail detail, while consumers see a price range (one grade above and below), with an admin toggle between range and flat pricing for non-B2B buyers.

Why from scratchTrade partners and walk-in sellers need different levels of detail. Group-based pricing shows each audience the right view of the same quote.

Trade-in

Quote PDF & Email Workflow

What it doesGenerated quote PDFs for customer and internal printing, email-a-quote to one or many recipients with automatic account creation, and automated expiry reminders that skip weekends and public holidays and fire a set number of working days before a quote lapses.

Why from scratchQuotes move through email and print, not just the cart. The workflow makes a quote a shareable document and nudges sellers before it expires.

Marketplace

eBay Two-Way Sync

What it doesOngoing two-way synchronization between Magento and the eBay store via M2E Pro: new eBay products pull into Magento and Magento products push to eBay, and an eBay store category feeds the homepage clearance and savings sliders.

Why from scratcheBay is a primary sales channel. Two-way sync keeps both channels current from one catalog instead of listing each unique unit twice.

Shipping

In-Admin Shipping Labels

What it doesUSPS (via a Stamps.com account) and FedEx label generation directly from the Magento admin, replacing rate-only carrier methods, with configurable flat or percentage handling fees, customer tracking in My Account, and tracking details in notification emails.

Why from scratchThe team had been depending on eBay to create labels. Generating USPS and FedEx labels in-house put fulfillment back inside the store, with tracking the customer can see.

Search

Tuned Catalog Search

What it doesA MySQL-based catalog search tuned for the used-gear catalog: an all-words, any-order match across product, pricing, and quote titles, admin-managed stop words to filter noise, and quote-search synonyms.

Why from scratchThe catalog could not run Elasticsearch in this environment, so we tuned the MySQL queries and added stop words and synonyms to make search behave the way buyers and staff expect.

Data

Bulk Catalog Import

What it doesMagento's CSV import extended for the custom catalog attributes for a large template catalog, with validation that caught real data issues (blank prices importing as zero and breaking the scraper's price ranges).

Why from scratchA template catalog this large can't be entered by hand. The extended import loads it cleanly and protects the pricing engine from bad data.

UX

Core Website Refresh

What it doesA front-end refresh across the homepage, category, and product pages, layered on the functional build, with Core Web Vitals performance work.

Why from scratchOnce the engine worked, the storefront needed to match. The refresh modernized the buying and selling experience and tightened performance.

Let's work together

Got a store that doesn't fit off-the-shelf?

Consolidate, integrate, and scale. We engineer Magento and Adobe Commerce stores for retailers with custom pricing, marketplace sync, and complex inventory, and we stay for the long run. Tell us what you're up against.