Growth · Paid Search & Ops
Performance Marketing & Growth Ops
Took a 14,000-product textbook store from guesswork to a measured growth engine — Google Ads built around edition and ISBN intent, a Python repricing engine, and a catalogue-wide SEO clean-up. In the first month paid search ran at a 1.48% CTR and $0.46 CPC, and the store did 195 orders and $17k+ gross.
- Role
- Growth & Operations Lead (COO) · Google Ads · Pricing Automation · SEO
- Client
- US academic-textbook e-commerce business
- Platform
- Shopify · Google Ads · Python (Keepa / ISBNdb / Shopify APIs)
- Year
- 2026
- 1.48%
- Search CTR (Google Ads, first month)
- $0.46
- Average CPC (Google Ads, first month)
- 195
- Orders in one month
- $17k+
- Gross sales in one month
- 81/100
- SEO health score (site audit, Aug 2026)
- 10k+
- Meta descriptions rewritten

Overview
An academic-textbook e-commerce business with a 14,000-product catalogue was competing against Amazon on price with manual pricing, no real paid-search structure, and a catalogue whose SEO was quietly broken. I took on growth and operations end to end: the paid-search programme, a pricing-automation engine, and the catalogue clean-up — and ran it on real numbers. I had designed and built this store's Shopify storefront earlier (see the Online Bookstore case), so this was the same store, now run for growth.
The challenge
Margins on textbooks are thin (15–25%), which puts a hard ceiling on what a customer can cost to acquire — roughly $12. Pricing had to track Amazon continuously across thousands of ISBNs without giving margin away. Conversion tracking was over-counting (184 conversions recorded against about 12 real orders), so nothing could be optimised honestly until that was fixed. And 98% of product pages carried meta descriptions far past the length Google shows, burying the store in search results.
Before / after
Before Meta descriptions: median 277 characters, 98% over Google's limit
After Median 147, zero over 160
Before 184 conversions recorded against ~12 real orders
After Tracking fixed — every decision on true orders
Before Manual pricing against a marketplace
After Python repricing engine inside margin guardrails
Before Paid search: no structure
After 1.48% CTR, $0.46 CPC on intent-led campaigns
Approach
- Built the paid-search structure around buyer intent — ISBN and edition-number queries first, category terms second — across Search, Shopping and Performance Max, with a small brand-defence budget.
- Wrote a Python repricing engine against the Keepa, ISBNdb and Shopify APIs to reprice against Amazon inside margin guardrails, instead of by hand.
- Audited the full catalogue: rewrote 10,000+ over-length meta descriptions (median 277 → 147 characters, zero over 160, zero failures), fixed empty product descriptions and sitemap coverage, and shipped a WebP cover set to cut layout shift.
- Found and fixed the conversion-counting defect so every decision ran on true orders, not inflated events.
- Cut wasted spend by excluding queries for out-of-stock inventory and tightening to US-only delivery.
Outcome
A measurable engine instead of guesswork. In the first month paid search delivered 289k impressions and 4,286 clicks at a 1.48% CTR and $0.46 CPC — and edition-number queries alone returned roughly the full period's spend in tracked conversion value. The store did 195 orders and $17k+ gross in a month across 39 states, and a full-site SEO audit in August 2026 scored its health at 81/100.
