Skip to content

Case study

A shopping feed and bidding structure built on margin

An outdoor equipment retailer with four Alberta stores and about seven thousand products online was judging paid search on revenue while margin drained away. We rebuilt the feed, then rebuilt the bidding around what each product actually earns.

Named only with client approval Figures marked are illustrative Reply within one business day

Organic - last 90 days

Vancouver, BC

custom software development vancouver

3

+4

1

+2

2

new

5

+1

Impressions

13 weeks

+186%

Impressions

4.2

Average position

27

Page-one keywords

The engagement, in short

OlDevs rebuilt the Google Merchant Center feed for an outdoor equipment retailer with four stores in Alberta, replacing SKU code titles with structured product data and clearing hundreds of disapprovals, leaving 6,900 products in a clean, approved feed.Availability now reads live stock instead of a nightly export, and campaigns are grouped by margin band, with Performance Max fed by product sets that share a profitability target rather than one blended goal. Reporting moved into Looker Studio, so the weekly number the team reads is contribution rather than revenue. Contribution margin rose 31 percent and spend on non converting terms fell 44 percent.

Key facts

01Client
Outdoor equipment retailer, four stores in Alberta
02Industry
Retail and e-commerce
03Services
Paid search and shopping, performance marketing
04Duration
14 weeks
05Platforms
Google Merchant Center, Google Ads, Performance Max, Looker Studio
06Outcome
6,900 products in a clean, approved feed, contribution margin up 31 percent

The challenge

Healthy revenue, quietly draining margin

Paid search was judged on revenue, so the account looked healthy while margin quietly drained into search terms that never converted. The product feed had been generated once and never revisited: titles were internal SKU codes, hundreds of items sat disapproved, and availability went stale during sale weeks. Nobody in the business could say which products were actually worth bidding on.

01

Revenue hid the real result

Every report ended at revenue, so a campaign could grow sales and lose money in the same week without anyone noticing. With no contribution figure in the weekly review, there was never a reason to question spend that was buying low margin volume.

Reporting · Margin blindness

02

A feed generated once and forgotten

Product titles were internal SKU codes no shopper would ever type, GTINs were missing across whole ranges and product types were inconsistent. The feed described the warehouse system rather than the products people were actually searching for.

Product feed · Data quality

03

Hundreds of items sat disapproved

Hundreds of products were disapproved in Merchant Center and simply never appeared. Nobody owned the diagnostics queue, so errors accumulated quietly month after month while whole ranges stayed invisible to shoppers.

Merchant Center · Disapprovals

04

Availability went stale during sale weeks

Stock synced once a night, so in the busiest sale weeks fast selling lines stayed listed as available for hours after they sold out. The account paid for clicks on products nobody could buy, and shoppers landed on empty product pages.

Inventory sync · Wasted spend

What we built

Fix the data first, then bid on margin

We rebuilt the Merchant Center feed with a supplemental feed for titles, GTINs and product types, cleared the disapprovals and wired availability to live stock instead of a nightly export. Campaigns were then restructured by margin band, with Performance Max fed by product sets that share a profitability target rather than one blended goal. Reporting moved into Looker Studio, so the weekly number the team reads is contribution, not revenue.

01

A rebuilt primary and supplemental feed

A supplemental feed rewrites titles into the language shoppers use, fills missing GTINs and normalises product types across the catalogue, which left 6,900 products in a clean, approved feed without anyone having to touch the source system.

Supplemental feed · Product data

02

A cleared diagnostics queue with an owner

We worked the Merchant Center diagnostics list down item by item, fixing the underlying data rather than the symptom, and left a documented weekly check with a named owner so new disapprovals get caught in days instead of quarters.

Merchant Center · Process

03

Live availability instead of a nightly export

Availability now reads from live stock, so sold out lines drop out of the feed within minutes rather than the next morning. Sale weeks no longer pay for clicks on products the stores cannot ship to anyone.

Inventory sync · Live stock

04

Campaigns structured by margin band

Shopping campaigns and Performance Max asset groups are built on product sets that share a profitability target, so bidding follows what a product earns. High margin lines get room to spend and thin lines are capped rather than quietly subsidised.

Performance Max · Margin bands

Process

How the engagement ran.

  1. Margin data before account work

    Before touching the account we mapped cost and contribution to every product line, so bidding decisions had a number behind them rather than a hunch about what sells well.

  2. Feed audit and rebuild

    We audited the Merchant Center feed attribute by attribute, then built a supplemental feed for titles, GTINs and product types without disturbing the source catalogue.

  3. Clear the disapprovals

    We worked the diagnostics queue down to zero blocking errors, fixing root causes in the data and documenting each fix so the same failure would not quietly return.

  4. Restructure by margin band

    Campaigns were rebuilt around product sets that share a profitability target, with Performance Max fed by those sets instead of one blended goal for the whole catalogue.

  5. Report on contribution

    We rebuilt reporting in Looker Studio so the weekly review opens on contribution by product set, then tuned bids and exclusions against that number every week.

Stack

What it was built with.

Feed and catalogue

Google Merchant CenterPrimary product feedSupplemental feed for titles and GTINsProduct type mapping

Campaigns

Google AdsShopping campaignsPerformance MaxProduct sets by margin band

Measurement

Looker StudioContribution margin reportingWeekly contribution review

Data plumbing

Live stock availability syncScheduled feed uploadsMargin data mapped to product lines

Governance

Weekly diagnostics checkA named owner for the feedNaming conventions

6,900

Products in a clean, approved feed

+31%

Contribution margin

−44%

Spend on non converting terms

Outcomes

What changed for the client.

01

6,900 products in a clean, approved feed

Almost the entire catalogue is now eligible to show, with titles shoppers recognise and product types that group sensibly.

02

Contribution margin up 31 percent

Bidding follows profitability rather than revenue, so the same catalogue earns more from spend the business was already committing.

03

Spend on non converting terms down 44 percent

Money that used to leak into searches that never converted now goes to product sets with a profitability target attached.

04

The team can answer which products are worth bidding on

Contribution by product set is the weekly number, so buying, merchandising and paid search argue from the same figure.

In their words

The client on the result.

We know which products make us money before we bid on them, which we never did before.
AO

E-commerce director, multi store outdoor retailer

Retail and e-commerce

FAQ

Questions about work like this.

Shopping campaigns bid on the data in your feed. If titles are SKU codes and product types are inconsistent, no amount of bid tuning will put the right product in front of the right search. Fixing the feed first changes what the auction can match you to at all, and it makes every optimisation after it cheaper and more reliable.

No. A supplemental feed sits on top of the primary feed and overrides specific attributes such as titles, GTINs and product types. Your source catalogue and the systems that depend on it stay untouched, which is why this is usually the fastest safe route to a clean, approved feed in an established business.

With you, not on our own. We map cost and contribution to product lines from your own figures, agree bands that reflect how the business actually makes money, then build Merchant Center product sets against them. Performance Max is fed by sets that share a profitability target instead of one blended goal for the entire catalogue.

Two things: fixing the root cause in the data rather than patching the symptom, and leaving a documented weekly diagnostics check with a named owner inside your team. New errors then surface in days rather than quarters. The check is handed over as part of the work, so it does not depend on us staying in the account.

Yes. The method depends on Merchant Center and Google Ads rather than any one storefront, so it applies wherever your product data comes from, provided we can read live stock and product costs. During scoping we review your current export and stock endpoints and tell you plainly what has to change before the rebuild starts.

Still have a question? Ask us when you request a quote

Let’s connect

Have a problem like this one?

Tell us what is not working. We’ll reply within one business day with how we would approach it and a tailored quote.

We’ll only use your details to prepare your quote. No lists, no spam.

Call us Request a quote