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:
- 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. - 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.
- 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.
- 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. - 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.
- 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.
- Cap or review the over-invested new launch. Decide deliberately whether PET-TOY-NEW’s 32% is a demand-building bet or a leak.
- 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.
- 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 thesku 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.
Cross-connector reconciliation (OpenCart velocity joined with a connected Google Ads account):