Skip to main content
Metrics type: Cross-Platform MetricsCategory: Ecommerce Platform
Your best-selling OpenCart SKUs that are getting little or no ad spend behind them. Proven demand you are under-funding, the cheapest growth lever most stores leave on the table.

At a glance

A cross-connector view that joins your top-velocity OpenCart SKUs (the products selling fastest by units) with connected Google Ads spend per product. It flags proven winners that are receiving little or no ad investment. The logic is simple: a SKU already selling fast organically is the safest place to add ad spend, because demand is demonstrated. Under-investing in your top sellers while spending on unproven products is the most common, most fixable ad-efficiency leak. OpenCart has no native ads integration, so this card only populates when a Google Ads connector is linked, and spend is matched to SKUs by product identifier.

Calculation

Calculated automatically from your OpenCart data joined with the connected channel. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A US pet-supplies merchant on OpenCart 3.x with Google Ads connected and running Shopping campaigns. The 30-day window covers 14 Mar 26 to 12 Apr 26. Total ad spend in the window is USD 18,000. What’s interesting here:
  1. The three best sellers share under 9% of spend, and that trips the alert. With the top sellers receiving 8.7% of ad budget against the <10% floor, the card is firing. These SKUs are selling fastest with almost no ad support, which means there is proven demand the merchant is funding from organic alone.
  2. A new launch is eating a third of the budget on 90 units. PET-TOY-NEW takes 32% of spend for velocity rank 31. New products sometimes deserve investment to build demand, but a 32% allocation to an unproven SKU while the top sellers starve is exactly the imbalance this card exists to surface.
  3. Velocity is units, not revenue, by design. PET-BOWL-SS is a cheap, fast-moving SKU. Ranking on units rather than revenue keeps high-turnover staples visible; a revenue-ranked view would bury them under a few expensive items. The point is to back demonstrated demand wherever it lives.
  4. OpenCart cannot produce this alone. OpenCart knows the unit velocity (from oc_order_product), but it has no idea what each SKU costs in ads. The spend half comes entirely from the connected Google Ads account. Without it, the card cannot compute a share.
  5. The fix is reallocation, not more budget. The merchant does not need to spend more overall. Shifting even a few thousand dollars from PET-TOY-NEW toward the proven top three would likely lift total return immediately, because the demand is already there.
Action priority order:
  1. Raise bids or budget on the top-velocity SKUs that are under the 10% floor. Proven demand is the lowest-risk place to add spend.
  2. Cap or review the over-invested new launch. Decide deliberately whether PET-TOY-NEW’s 32% is a demand-building bet or a leak.
  3. Resolve any unmatched top sellers by adding SKU or model values so the Google Ads feed can match them, otherwise a top seller can be invisible to this card.
  4. Re-check after a week. Reallocation effects show quickly on fast-moving SKUs; confirm the share moved and the return held.

Sibling cards merchants should reference together

Reconciling against OpenCart

Where to look in OpenCart admin: OpenCart gives you the velocity half but not the spend half. Reports → Products → Products Purchased ranks SKUs by units and revenue over a date range, which is the velocity input. Catalog → Products holds the sku and model used to match against the ad feed. The underlying data is the quantity column on oc_order_product joined to oc_product. Ad spend lives entirely in the connected Google Ads account, OpenCart has no native ads integration, so the spend half is supplied by the Google Ads connector. Other OpenCart views that look relevant but cannot answer this:
  • Reports → Products → Products Purchased: ranks by units and revenue but has no ad-spend column.
  • Reports → Products → Products Viewed: views, not sales velocity, and no spend.
  • The Dashboard best-sellers widget: a quick velocity snapshot with no cost context.
Why our number may legitimately differ from a manual cross-check: Cross-connector reconciliation (OpenCart velocity joined with a connected Google Ads account):

Known limitations / merchant FAQs

Why is this card empty? Because no Google Ads connector is linked. OpenCart has no native ads integration, so the spend half of the join comes from a connected Google Ads account. Without it, there is no spend to compare your top sellers against. Why rank by units instead of revenue? Ranking by units keeps high-turnover, lower-price staples visible. A revenue-ranked view buries fast-moving cheap SKUs under a handful of expensive items, hiding exactly the proven demand this card is meant to surface. The detail view shows revenue too, so you have both. Should I always increase spend on flagged SKUs? Almost always, with two checks first: confirm the SKU is in stock (never fund a top seller about to go OOS) and confirm margin supports the extra spend. Proven demand is the lowest-risk place to invest, but not if you cannot fulfil it or it loses money. A new product is taking most of my budget, is that wrong? Not necessarily. New launches sometimes deserve investment to build demand. The card flags the imbalance so you can decide deliberately, rather than starving proven sellers by accident. Intentional demand-building is fine; accidental misallocation is not. Why are some top sellers missing from the card? Most often because they cannot be matched. A product without a SKU or model on OpenCart cannot be joined to the Google Ads feed, so it is reported as unmatched. Fix Products Missing SKU / Model so every top seller is visible. My spend share does not add up cleanly per SKU, why? Performance Max and broad campaigns spread spend in ways that are hard to attribute to a single product. For pure Shopping campaigns the per-SKU mapping is clean; for blended campaigns the spend share is an approximation. Why a 30-day window? It is long enough to establish stable velocity and smooth out daily spend swings, and it matches the revenue cards so you can read efficiency and revenue on the same window. A shorter window makes both velocity and spend share too noisy to act on.

Tracked live in Vortex IQ Nerve Centre

Top-Velocity SKUs vs Ad Spend is one of hundreds of KPI pulses Vortex IQ tracks across OpenCart and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.