What an ecommerce growth agency is actually selling you
“Growth agency” is the vaguest phrase in this industry, so this page attaches it to mechanics you can check: Merchant Center attributes, crawl waste on category pages, Interaction to Next Paint on product pages, Product structured data, the Conversions API, and the UK statutes that decide what a price may legally say. I am Moeez Abbas, one person working remotely from Lahore, Pakistan, for businesses in the UK and the US — no office anywhere, no team. Every figure below is sourced, and where no honest figure exists the point is made qualitatively instead. Read it as a specification, not a pitch.
Growth agency is a phrase that means nothing on its own
I am Moeez Abbas. I work on my own, remotely from Lahore in Pakistan, for businesses in the United Kingdom and the United States. There is no office anywhere and no team. The phrase “ecommerce growth agency” is the vaguest label in this industry. It survives because it is unfalsifiable: growth is a direction, not a deliverable, and a page that promises it has promised nothing a client can later hold anyone to.
So the argument of this page is simple. The phrase only earns its keep when it is attached to named mechanics — a specific attribute in a specific feed specification, a specific HTTP status code on a specific class of URL, a specific statutory instrument that constrains what a price may say. Where a number exists below it is sourced; where it does not, the point is made qualitatively rather than invented.
The honest framing of the market: the Office for National Statistics put online sales at 28.8% of all retail sales in Great Britain in August 2026, up from 28.4% in July 2026, in its Retail Sales Index bulletin — the continuous series is J4MC, so anybody can check it. That is the scale of the channel. It is not evidence that any particular shop will grow.
The businesses that come to a page like this sit in one of four groups: direct-to-consumer brands on Shopify or WooCommerce; mid-market multi-channel retailers on BigCommerce, Adobe Commerce, Magento Open Source or Shopware, running acquisition through Google Merchant Center and a Meta catalogue; marketplace-dependent sellers on Amazon Marketplace, eBay and TikTok Shop trying to build demand they own; and cross-border sellers exposed to the UK £135 consignment rule, the European Union’s Import One Stop Shop, and now a per-item customs duty on low-value parcels.
Each of those four has a different failure mode. The rest of this page is organised around the four places online revenue actually leaks — the product feed, the category page, the product detail page and the checkout — plus the regulatory layer that decides what may legally be advertised at all.
Where the money usually goes missing on a working shop
An ecommerce business is not buying traffic. It is buying the removal of specific obstructions between a person who already wants something and the moment their card clears. There are four of them, and they are almost always the same four.
One: the feed
The product feed is the spine of Google Shopping ads, Google Shopping free listings, Performance Max, Microsoft Advertising via Microsoft Merchant Center, Meta’s Advantage+ catalogue ads, Pinterest catalogues and most marketplace integrations. When it is wrong, nothing downstream can compensate, because the auction never sees the product. A disapproved item is not a ranking problem. It is an absence.
Two: the category page
Category and collection pages are where faceted navigation, layered navigation, sorting parameters and pagination create an enormous number of near-identical URLs. Google’s own documentation on crawling and managing faceted navigation states the problem plainly: URL parameters create an effectively infinite URL space, which causes overcrawling and slows the discovery of genuinely useful content. That is Google’s wording, not SEO folklore.
Three: the product detail page
This is where Core Web Vitals bite hardest, and where Interaction to Next Paint replaced First Input Delay as the metric that matters. Variant pickers, size selectors, quantity steppers, reviews widgets, wishlist buttons and add-to-cart handlers are all interactions, and every one is now measured. It is also where Product structured data either earns a merchant listing or quietly earns nothing.
Four: the checkout
Checkout is where consumer law stops being abstract. Under the Digital Markets, Competition and Consumers Act 2024, drip pricing — advertising a headline price and adding mandatory charges later in the journey — is an unfair commercial practice in all circumstances, with no fairness defence to argue. A mandatory handling fee revealed at step three is not a conversion experiment; it is a compliance defect that also depresses conversion.
The useful opening question is not how to grow, but which of these four leaks costs the most and how anyone would know. Merchant Center diagnostics, Google Search Console, the Chrome User Experience Report and the shop ledger answer that between them within a day.
Merchant Center is a specification, not a vibe
Google publishes a product data specification precise enough that feed work stops being a matter of opinion. Seven attributes are required for every product: id, title, description, link, image_link, availability and price. Three more are conditional and routinely misunderstood: condition only for used or refurbished items, brand for new products excepting movies, books and musical recordings, and mpn only where the product has no manufacturer-assigned GTIN — which is why identifier_exists is there for genuinely unbranded or handmade stock.
The limits are equally concrete. id is capped at 50 characters, title at 150, description at 5,000. price must be submitted in ISO 4217 format, so a UK feed states GBP explicitly rather than leaning on an account default — a failure that surfaces when a store switches on multi-currency selling through Shopify Markets and the feed stops matching the landing page. link must use http or https.
That 150-character ceiling is why feed title templates are engineered to a budget rather than written freehand: brand, product name, key attribute, size and colour all have to fit, and a supplier dump that concatenates everything gets truncated or rejected. The same discipline applies to google_product_category versus product_type: the first is Google’s taxonomy, the second is yours, and only the second is safe for campaign segmentation alongside custom_label_0.
One dated deadline belongs in a client’s calendar now: Google will enforce a minimum image size of 500×500 pixels for image_link and additional_image_link, across all product categories, from 31 January 2027, having begun surfacing warnings on undersized images inside Merchant Center during 2026 ahead of enforcement. Any retailer still serving legacy 300-pixel thumbnails must re-render its library or lose Shopping eligibility. That sits alongside the longstanding prohibition on promotional overlays, watermarks and borders, so assets with a burnt-in sale badge cannot be reused in the feed.
Variants are the other reliable source of confusion. item_group_id ties a colourway or size run together, availability_date handles pre-orders, sale_price with sale_price_effective_date handles promotions without rewriting price, and unit_pricing_measure matters for anything sold by weight or volume, where the Price Marking Order 2004 also has views. additional_image_link and shipping are optional in the specification and near-mandatory in practice.
One piece of plumbing has already moved. Merchant API became generally available in August 2025 as Google’s primary programmatic interface, superseding Content API for Shopping, which shut down on 18 August 2026 — so any middleware or ERP bridge still written against it is already broken rather than heading for a deadline. Stores that maintain products only by manual file upload, scheduled fetch or a Google Sheet were never affected by that switch. That is definable work, unlike a proposal offering a “Merchant Center Next migration”: Google upgraded all retailers to Merchant Center Next by September 2024 and has since dropped the suffix.
The September 2026 agentic commerce updates — AI performance insights in Merchant Center, the Universal Commerce Protocol checkout tools and the new feed guidance — are explained in the Google agentic commerce update guide.

A disapproval takes out two channels at the same time
Google Shopping free listings and Google Shopping ads draw on the same Merchant Center product data. Free listings surface in the Shopping tab and other unpaid surfaces; Shopping ads require a live Google Ads campaign. The commercially important consequence: a disapproved feed removes both at once. That is the strongest argument for treating feed hygiene as organic work rather than filing it under paid media, because one fix restores two channels.
The recurring disapproval causes are a short list, diagnosable against Merchant Center diagnostics rather than guessed at: missing or incorrect required attributes, price and availability mismatches between feed and landing page, a missing GTIN where one exists, image quality failures and promotional overlays, and currency in a format the specification does not accept.
The price and availability mismatch deserves attention because of how it fails. It is a crawler-side check against the live landing page, so it breaks silently after somebody runs a sale in the admin without waiting for a recrawl, or after a stock sync drops an item to out of stock while the feed still says in stock.
What a badly built feed actually costs
I will not put a percentage on this, because no honest published figure applies to an arbitrary catalogue, but the structure of the loss is describable without one. A disapproved item earns zero impressions on Shopping surfaces regardless of margin, so the loss concentrates in whatever share of revenue those items represent — frequently the newest lines, which are the ones with incomplete supplier data. A truncated title loses query coverage rather than being rejected, so it fails invisibly. A feed with no shipping values forces Google back on account-level settings that may not match what the checkout charges, which is both a mismatch risk and a pricing-disclosure risk.
Diagnosable in an hour
Item-level disapproval reasons in Merchant Center diagnostics, the Merchant listings report in Google Search Console, and ten live product URLs spot-checked against their feed rows.
Diagnosable in a week
Whether the source is a platform app, a Merchant API integration, a scheduled XML or TSV fetch, or a supplementary feed over a primary one — and so where a fix must live to survive the next theme update.
Faceted navigation is the most expensive default setting in retail
Google’s guidance on faceted navigation is unusually prescriptive. Where faceted URLs do not need indexing, the preferred remedies are to disallow them in robots.txt while still allowing individual item pages, or to use URL fragment identifiers such as #products=fish&colour=green instead of query parameters such as ?products=fish&colour=green.
The alternatives are explicitly weaker. Google calls rel=canonical a less effective option that may only reduce crawling of non-canonical faceted URLs over time, and notes rel=nofollow has to be implemented on every relevant link to do anything. Plenty of UK ecommerce sites rely on canonicals alone, and Google’s own documentation says that is the weaker choice — more persuasive in a development sprint than a consultant’s preference.
Where faceted URLs must be indexable — and for some retailers a small set genuinely should be, because “waterproof walking boots size 9” is a real demand pattern — Google asks for three things. Standard & separators rather than commas, semicolons or brackets. Consistent filter order, so ?colour=blue&size=m and ?size=m&colour=blue do not become two crawlable URLs for one result set. And an HTTP 404 status code when a filter combination returns no results — not a redirect, not a soft 404, not an empty page with a 200.
That last instruction conflicts with the default behaviour of many platforms, which render an empty results page and return 200 — one of the few defects demonstrable on a live site within minutes, using nothing but a browser and the response headers.
Two adjacent wastes get missed by audits that look only at filters. Sorting parameters such as ?orderby= and ?sort= produce reordered duplicates of one item set and consume crawl budget. And infinite scroll on app-heavy themes is a crawling concern rather than a design preference: content loaded only on user interaction may not be reachable by Googlebot Smartphone unless paginated URLs also exist, which can leave a large catalogue’s long tail undiscoverable. Parameter-order duplication is invisible in an XML sitemap audit and obvious in server logs, which is why log file analysis belongs in the audit rather than the optional extras. A noindex robots meta tag, a correctly scoped hreflang set and a clean canonical policy finish what robots.txt starts.
What each platform actually does to your URLs
“Growth” proposals tend to be platform-agnostic, which is convenient for the agency and useless for the client, because the available fixes differ enormously by stack.
| Platform | URL behaviour | What that means for the work |
|---|---|---|
| Shopify and Shopify Plus | Products live at /products/{handle} and collections at /collections/{handle}. A product reached through a collection generates /collections/{collection}/products/{handle}, a duplicate path Shopify canonicalises back to the bare product URL. Collection filtering moved from ?constraint= to ?filter.v parameters under Search & Discovery, with ?page= for pagination. | A structural constraint, not a setting. A client asking for category-then-product URLs on Shopify wants something the platform will not give, and the honest answer is no rather than a workaround built out of Shopify Liquid hacks. |
| WooCommerce on WordPress | Product URLs sit under a configurable permalink base, commonly /product/ or /shop/. Layered-nav widgets produce filter_ query parameters, sorting adds ?orderby=, and pagination uses /page/N/. WooCommerce product attributes drive variations as query strings on one parent product URL. | Structure is fully editable, so the fix is configuration rather than workaround — a different scope of work. Yoast SEO or Rank Math handle the canonical and robots layer; the feed plugin decides whether variants appear as separate items with item_group_id or one parent listing. |
| Adobe Commerce, Adobe Commerce Cloud and Magento Open Source | Magento layered navigation appends multiple filter parameters to category URLs by default and can generate very large numbers of crawlable combinations from a modest attribute set. | This is where Google’s faceted-navigation guidance bites hardest and where a robots.txt or fragment fix pays back fastest. It is also where empty-facet pages returning 200 create the most index bloat. |
| BigCommerce | Category and product URLs are configurable, and the product-URL setting can produce either a category-path form or a flat form depending on store configuration. | Check it before an engagement starts, not after. Switching that setting mid-life on a live store is a site-wide URL migration with redirect mapping, not a tick-box. |
Shopware, PrestaShop, Squarespace Commerce, Wix Stores and Salesforce Commerce Cloud each have their own version of the same trade-offs. A proposal that cannot name your platform’s parameter syntax has not looked at your site.
Interaction to Next Paint has real numbers attached
Interaction to Next Paint is the Core Web Vital a transactional page is most exposed to, because a product page is very little except interactions, and unlike most speed advice it comes with hard thresholds: good is at or below 200 milliseconds, needs improvement is above 200ms and at or below 500ms, poor is above 500ms. That gives a product page a pass mark rather than an instruction to be faster.
The reason a site that comfortably passed First Input Delay can now fail is structural. INP observes all interactions made with a page during a visit and measures from the moment a user initiates one until the next frame is painted; FID measured only the input delay of the first interaction. INP became a Core Web Vital in March 2024 and FID was fully deprecated in September 2024, so every variant picker, filter widget, accordion, quantity stepper and add-to-cart handler is now in scope.
On an app-heavy store the long interactions are rarely in the theme. They are in the reviews widget, the wishlist app, the size-guide modal, the upsell recommender, the live-chat loader, the consent banner and the Google Tag Manager container that fires four vendors on click. Diagnosing that means attributing long tasks to the script that owns them, not buying a faster host.
There are two legitimate ways to measure and they routinely disagree. Field data comes from Real User Monitoring or the Chrome User Experience Report, reflecting real devices on real connections. Lab data comes from PageSpeed Insights or Lighthouse, or from simulating interactions in a controlled run. The web-vitals JavaScript library handles the edge cases hand-rolled measurement gets wrong.
The other vitals still matter and are easier to move. Largest Contentful Paint on a product page is usually the hero image, which means image format, dimensions and fetch priority rather than heroics. Cumulative Layout Shift is usually unreserved space for a badge, a banner or a lazily injected review star row. Time to First Byte exposes hosting and template rendering. Total Blocking Time and First Contentful Paint are useful lab proxies while field data refreshes.
Accessibility overlaps here rather than competing. WCAG 2.2 and the Equality Act 2010 both push towards keyboard-operable variant pickers and visible focus states, and the interactions cheapest to make accessible are usually the ones cheapest to make fast.
Google asks for maximal markup, and it says so
Google distinguishes two Product structured-data experiences, and choosing the wrong one is a common reason a product page earns no rich result despite validating cleanly in the Rich Results Test. The merchant listing experience is for pages where a customer can buy directly from you, and prioritises apparel sizing, shipping details and return policy. The product snippet experience is for pages where people cannot directly purchase, and supports editorial pros and cons. A product detail page wants the first; a comparison article wants the second.
Google settles the perennial minimal-versus-maximal argument itself. Its guidance is to provide as much rich product information as is available without trying to target one specific search experience, noting that adding the required merchant-listing properties generally also makes a page eligible for product snippets. The answer to whether all of it is really needed is that Google asks for all of it.
In practice, on a JSON-LD block using the Schema.org vocabulary, that means a Product with a nested Offer or AggregateOffer, itemCondition, priceValidUntil, and two properties worth checking for explicitly: hasMerchantReturnPolicy using MerchantReturnPolicy, and OfferShippingDetails. Return and delivery markup maps onto exactly what Google prioritises in merchant listings, and is among the cheapest remaining differentiators in Shopping-adjacent results. BreadcrumbList and ItemList on collection pages complete the set.
Reviews, and the rules people break without noticing
Review markup has hard requirements. A Review needs author, itemReviewed, itemReviewed.name, reviewRating and reviewRating.ratingValue. An AggregateRating needs itemReviewed, itemReviewed.name, ratingValue, and either ratingCount or reviewCount. An aggregate rating missing its count is invalid, which is one reason a review snippet disappears after a theme or app update.
Three policy rules then decide whether the markup is legitimate at all. You must not aggregate reviews or ratings from other websites — reviews have to come from users on your own platform, so pulling third-party ratings into your Product schema is a documented policy breach rather than a grey area. Reviews are treated as self-serving and ineligible for the star feature where the entity reviewed controls the reviews about itself, on pages using LocalBusiness or any other Organization markup — which is why an agency’s own homepage cannot legitimately carry review stars while a retailer’s product pages can. And both must reference a specific product or service rather than a category or an item list, which rules out dropping one site-wide rating onto every category page.
The Schema Markup Validator checks syntax; the Merchant listings and Product snippets reports in Search Console check eligibility separately, which gives schema work a measurable outcome that does not depend on rankings moving.
Catalogues, the Conversions API and the attribution gap
On the paid side the mechanics are equally nameable. A Meta catalogue in Meta Commerce Manager underpins Advantage+ catalogue ads and Dynamic Product Ads, and it can be fed from the same product feed that serves Google Merchant Center — though Meta’s required fields differ from Google’s product data specification, so reusing one source needs mapping rules rather than a toggle.
The Meta Conversions API sends events server-to-server instead of relying solely on the browser-based Meta Pixel — the documented response to signal loss from Apple’s App Tracking Transparency and browser cookie restrictions, and unlike most tracking work it produces a number you can check. Event Match Quality rates, out of 10, how effectively customer information sent from a server matches event instances to a Meta account, based on which parameters arrive, their quality, and the share of events matched. The Dataset Quality API scores datasets on the same scale with named bands: under 4 is poor, 4 to 5.9 is OK, 6 to 7.9 is good, 8 or above great. A before-and-after on those bands is a deliverable. “Improved tracking” is not.
Why Ads Manager and the shop ledger never agree
Meta’s default attribution setting is 7-day click plus 1-day view. That single fact explains most of the gap between platform-reported revenue and what Shopify or WooCommerce actually banked, before any tracking fault is considered. Attribution platforms report modelled and claimed conversions, not observed causal effect, which is why platform-reported return on ad spend routinely exceeds blended return calculated as ledger revenue over total spend. The attribution settings exposed in Meta Ads Manager are worth pinning explicitly rather than inheriting, and the pixel and Conversions API events in Events Manager are worth checking for duplicates before any number is trusted.
The practical arrangement is to run blended figures from the ledger as the decision number, use in-platform figures for comparing campaigns against each other only, and treat lift tests as the only real answer to causal questions.
Consent sits underneath all of it. UK GDPR, the Data Protection Act 2018 and the Privacy and Electronic Communications Regulations 2003 require consent for non-essential cookies including advertising and analytics tags, and Google Consent Mode v2 is required for advertisers serving UK and EEA users who want full Google Ads and Google Analytics 4 functionality. A banner that blocks tags without signalling consent state silently degrades remarketing audiences and conversion reporting at once, which then gets misread as a media problem. Enhanced conversions, a server-side Google Tag Manager container and a Conversions API Gateway are the usual remedies, each with a real implementation cost worth quoting. Standard Shopping campaigns still have a place alongside Performance Max where a retailer needs control over which products get pushed.
What an online retailer is allowed to advertise
Marketing advice that ignores consumer law is advice to break it, and in ecommerce the statutes constrain the offer, the price display and the returns promise.
- The Consumer Contracts (Information, Cancellation and Additional Charges) Regulations 2013, Statutory Instrument 2013 No. 3134. Regulation 30 sets the normal cancellation period, giving distance-selling consumers a 14-day right to cancel; Regulation 31 extends it where the trader has failed to give the required cancellation information; Regulation 34 governs reimbursement. A missing cancellation notice extends every affected customer’s refund window, which hits returns forecasting.
- The Consumer Rights Act 2015. Section 9 implies a term that quality is satisfactory, judged by what a reasonable person would consider satisfactory taking account of description, price and all other relevant circumstances — and because price is explicitly a factor, a heavily discounted line is judged against a lower standard. Section 10 covers fitness for a particular purpose, section 11 goods as described, section 20 the right to reject.
- The 30-day short-term right to reject. It can be extended by agreement but not restricted. After 30 days and up to six months the trader must repair or replace at no cost, and after one unsuccessful attempt the consumer may reject for a refund with no deduction for use within the first six months, motor vehicles excepted. A returns page advertising fewer than 30 days for faulty goods is unenforceable.
- The Digital Markets, Competition and Consumers Act 2024. The consumer enforcement and unfair commercial practices regimes came into force on 6 April 2025 under the Commencement No. 2 Regulations 2025, listing both drip pricing and fake reviews as unfair in all circumstances. The Act also gives the Competition and Markets Authority direct enforcement powers, so it can decide a breach and impose penalties administratively rather than going to court as it had to under the Consumer Protection from Unfair Trading Regulations 2008.
The grace period is over. The CMA said it would delay enforcing the new fake-review rules for six months, focusing the first three on supporting business compliance, and that initial drip-pricing enforcement would target only practices clearly breaching its guidance. It launched a broader consumer protection enforcement drive in November 2025.
The advertising rules mirror the statutes closely enough that one fix closes two exposures. CAP Code rule 3.17, written by the Committee of Advertising Practice, requires price statements to relate to the product featured and not to mislead by omission, undue emphasis or distortion. Rule 3.18 requires quoted prices to include non-optional taxes, duties, fees and charges applying to all or most buyers. The Advertising Standards Authority treats unavoidable per-product delivery charges as exactly that, and CMA price transparency guidance says that where there is no free delivery or collection option the quoted price should include the cheapest delivery option until the consumer chooses otherwise. That constrains the value in your feed’s price attribute, not just your ad copy. The ASA ruled against Groupon Goods Global GmbH on 30 May 2018 over a shoe advert that stated a product price without making the total including delivery clear.
Rule 3.23 governs the word “free”: a product may only be described as free if the consumer pays no more than the unavoidable cost of responding and the actual, uninflated cost of collection or delivery, and charging for packing, packaging, handling or administration on a “free” item is not permitted — which is where the “free gift, just pay postage” promotion usually falls down. The Electronic Commerce (EC Directive) Regulations 2002, the Consumer Protection Act 1987, the BCAP Code for broadcast work, Trading Standards, the Chartered Trading Standards Institute’s Business Companion guidance, the Information Commissioner’s Office, Which?, Citizens Advice, the Federation of Small Businesses and the Department for Business and Trade fill in the rest of the map.
Thresholds that quietly decide whether an order is profitable
Selling across a border changes the arithmetic of a basket, and the thresholds are specific enough to plan around. Take the UK inbound rules first, because they determine what a checkout must display and therefore what the feed’s price should contain.
- For goods sold to UK customers, the £135 limit applies to the total consignment imported, not to individual items within it — basket-level calculation is what catches out sellers whose average order value straddles the line.
- For consignments at or under that limit, the seller charges and accounts for UK VAT at the point of sale, unless the customer is a business supplying a UK VAT registration number, in which case the reverse charge applies and the buyer accounts for it.
- Above it, ordinary UK VAT and customs rules apply at importation. A seller whose bundling or cross-sell pushes a consignment over the threshold may become liable for import VAT and customs duty and must adjust VAT already charged, so an upsell widget can create an unbudgeted duty liability.
Outbound to the European Union, the Import One Stop Shop covers goods imported from outside the EU in consignments valued under €150, applied per consignment. Above the €150 consignment threshold IOSS cannot be used and normal import VAT and customs procedures apply. A seller based in Great Britain cannot register for IOSS directly and must appoint an EU-established intermediary to register the business and handle monthly filings — a real cost to budget before any EU expansion campaign.
Then the change that many UK brands have not modelled. From 1 July 2026 the EU abolished the customs duty exemption for low-value imports, and Council Regulation (EU) 2026/382 introduced a €3 customs duty on goods in consignments worth €150 or less, applying regardless of VAT scheme — IOSS, the Special Arrangements or standard VAT alike. Read the charging rule carefully, because it is the part that gets mis-briefed: the €3 is levied per item rather than once per parcel, so a box of five identical shirts carries one charge while a box holding a shirt and a watch carries two. It is a transitional measure, set to run until the permanent regime under the EU customs reform package takes over in July 2028, when standard tariff rates are due to apply to imports regardless of value. A per-item charge on cheap multi-item baskets changes their unit economics outright, and the right response is usually a change to product mix, bundling and minimum order value rather than to ad budget.
IOSS continues to operate for VAT collection on business-to-consumer imports up to the same €150 level and coexists with the new duty obligations, so VAT and duty are two separate workstreams. It is easy to assume an IOSS registration covers duty. It does not, and surprise charges at the door generate refund requests and bad reviews that no amount of creative fixes.
The adjacent machinery is where the operational work lands: an EORI number, correct commodity codes, the Customs Declaration Service, Postponed VAT Accounting, VAT Notice 741A from HM Revenue & Customs, the choice between Incoterms DDP and Incoterms DAP, the Union OSS scheme and the Non-Union OSS scheme under the EU VAT e-commerce package, the Union Customs Code with its Implementing Act and Delegated Act, the EU General Product Safety Regulation, and the EU Digital Services Act for anyone running a marketplace rather than a shop.
Peak is a deadline, not a season
UK retail’s Golden Quarter runs from October to December. Black Friday falls on the Friday after United States Thanksgiving and Cyber Monday on the Monday after, which by the fourth-Thursday rule puts Black Friday on 27 November 2026 and Cyber Monday on 30 November 2026. Campaign builds, feed freezes and conversion work all key off those dates.
A corrective to the assumption that the online share of retail climbs smoothly towards Christmas: the monthly series does not behave like a season. It moves with discounting events and with whatever happened on the high street in the same month, which is why a single month can swing hard in either direction. Online sales values rose 2.5% month on month in August 2026 after falling 4.2% in July 2026, and were 8.9% higher than in August 2025, while the amount spent online rose 1.9% in the three months to August 2026 against the three months to May 2026. Swings of that size are why single-month performance reporting misleads, and why a rolling three-month comparison is the honest view to put in front of a client.
The Christmas cut-off
Royal Mail publishes annual Christmas last posting dates, and those dates function as the effective UK order cut-off. I will not print this year’s from memory; take them from Royal Mail’s own published list and display them prominently on site, because a clearly stated cut-off is one of the highest-leverage conversion elements in December.
January, and the bill for December
January brings a returns bill, and the mechanism is statutory rather than cultural. Under the 2013 Regulations the cancellation clock runs from receipt of goods, so December deliveries generate a January refund liability independently of any voluntary extended-returns policy. The consequence: peak-season return on ad spend as reported in December is systematically overstated until January returns are netted off, and any December report without that caveat is flattering itself.
Around those fixed points sit Amazon Prime Day, Singles’ Day, Boxing Day sales and the post-Christmas clearance window, plus the BRC-KPMG Retail Sales Monitor from the British Retail Consortium and the IMRG index as sector context for anyone wanting a second opinion on whether a bad month was theirs or everyone’s. Klarna, Clearpay, PayPal, Stripe, Shop Pay, Apple Pay and Google Pay all change basket behaviour at peak, and the payment mix is worth reviewing before November.
What this costs, and who should not hire anybody yet
My published figures are these. SEO packages start at £299 a month on the pricing page; monthly retainers are £650, £1,200 or from £4,000; one-off projects are listed on the packages page, from £650. For US clients the retainer equivalents are $800, $1,500 and from $5,000. There is no percentage of revenue.
What the tiers buy differs in scope rather than in effort per pound. At the lower monthly figure the scope is narrow and sequential: feed hygiene and Merchant Center diagnostics cleared, then structured data on product templates, then one class of crawl waste removed. At the middle figure technical work runs alongside paid management and measurement, including the Conversions API and Consent Mode work described above. At the top figure the scope can carry a multi-market build, an EU compliance workstream and continuous testing at once. The one-off project is a defined audit or implementation with a written end state, often the right first purchase precisely because it ends.
The only result I can point to is small and I will not dress it up. An independent UK artist spent £25 on Meta Ads and saw more than 500 Spotify saves and ten new followers over five days, verified in a five-star Fiverr review. That is one small result, on a tiny budget, over a very short window, in a category unrelated to retail — not a benchmark, not a forecast, and not evidence about your catalogue.
Who should not hire anybody yet
- Anyone whose average order value, gross margin per order and returns rate are not known. Without those three nobody can tell whether a campaign is profitable, and the agency becomes a spender rather than an operator.
- Anyone whose checkout is non-compliant on price disclosure. Fix the drip-pricing exposure before paying anybody to send more traffic into it.
- Anyone mid-migration, whether replatforming from Magento Open Source to Shopify or switching a BigCommerce product-URL setting. Migrate, stabilise, then optimise.
- Anyone whose stock feed is unreliable. Marketing an out-of-stock catalogue generates refunds and price-and-availability disapprovals at the same time.
- Anyone with fewer than about twenty saleable lines and no repeat-purchase mechanic. The leverage is in range and retention first, and a mailing list in Klaviyo costs less than a retainer.
A defensible engagement begins with what is measurable, names the mechanic it intends to change, and states how you will know whether it worked. Everything else in this industry is vocabulary.
What a client said, and what you can check
“Great communication and very helpful throughout the process. Took the time to explain everything clearly and set up the campaign professionally. Focused on quality results rather than just numbers. Highly recommended.”
This is one of three client reviews published so far; the other two, from a UK SEO client and a US Google Ads client, are on the home page. Every figure comes from the client’s own ad account, and a review goes on this site only when it is real.
What you can check before you pay
- Prices published in full on the pricing page, not hidden behind a sales call
- Month to month, with one month’s notice and no lock-in contract
- Every account, profile and file stays in your name; I work through partner access
- A written report every week, in plain English
- One specialist does the work, from the audit to the report
Questions worth asking before anyone signs anything
What does an ecommerce growth agency actually do that is different from an SEO agency?
On a well-run engagement the overlap is large. The distinction that holds up is scope: ecommerce work covers the product feed, the catalogue’s URL architecture, the transactional templates, the payment and returns experience and the paid catalogue channels. A brief that stops at content and links has left out the feed, and the feed is where Shopping eligibility lives.
Is it a problem that you work remotely from Lahore rather than in the UK?
Decide that with the facts in front of you. I am one person in Lahore, Pakistan, working for businesses in the UK and the US, with no office anywhere and no team. The work is asynchronous, written down, and done by the person you spoke to. It does not include local presence or anyone calling in person. If a supplier who is physically nearby matters to you, I am not it.
How do I tell whether my Merchant Center feed is actually healthy?
Read the item-level disapproval reasons in Merchant Center diagnostics rather than the account-level summary, then take ten live product URLs and compare each against its feed row for price, availability and canonical target. Check the required attributes are present and within their limits, currency is explicit, and no image carries a promotional overlay. That is a morning’s work and tells you more than a proposal will.
My filters create thousands of URLs. Do I need to block them all?
Not all, but you need a decision per class. Decide which combinations represent real demand and should be indexable, then handle the rest with a robots.txt disallow that still permits individual item pages, or move filtering to URL fragments so no crawlable URL is created at all. For the indexable set, enforce consistent parameter order and make empty combinations return a genuine not-found status. Sorting parameters belong in the blocked set almost always.
Why did my product star ratings disappear after an app update?
Often an aggregate rating that lost its count property, because the markup is invalid without either a rating count or a review count. The next thing to check is whether the markup was ever eligible: ratings sourced from a third-party site rather than reviewers on your own platform, or one site-wide rating applied to category pages. Validate the template, then watch the merchant listings and product snippets reports separately.
My product pages score badly on interactivity. Is that a hosting problem?
Rarely. Hosting shows up in Time to First Byte; interactivity failures are usually JavaScript from apps and tag containers blocking the main thread when someone taps a variant or opens a size guide. Attribute long tasks to the owning script, then remove, defer or replace it. Compare field data against a lab run first, because the two disagree often enough that acting on one alone wastes a sprint.
Why is Meta reporting far more revenue than my Shopify dashboard?
Mostly attribution rather than fault. Meta credits a purchase against an ad using the default attribution window set out earlier on this page, so a sale from someone who would have bought anyway is still attributed if they clicked earlier in the week. Reported numbers are modelled claims, not measured causation. Use blended figures — ledger revenue divided by total spend — as the decision number, and run a lift test when the question is genuinely causal.
We sell to the EU. What has changed that I should act on?
Two things, and they are separate. VAT on business-to-consumer imports below the consignment threshold described above still runs through the Import One Stop Shop, and a Great Britain-based seller needs an EU-established intermediary to use it. Customs duty is now its own obligation on low-value consignments since the exemption was removed, it is charged on the items inside the parcel rather than once per parcel, and an IOSS registration does not cover it. Model the effect on your cheapest lines first.
Is drip pricing really unlawful, or just frowned upon?
It is listed as an unfair commercial practice in all circumstances under the Digital Markets, Competition and Consumers Act 2024, so no fairness defence is available, and the Competition and Markets Authority can decide a breach and impose a penalty administratively rather than going to court. Advertising rules on non-optional charges point the same way, so one fix to how your total price displays closes both exposures.
What should a first month look like so I can tell whether it is working?
It should produce artefacts, not adjectives. A feed audit with item-level disapproval reasons and a fix log. A crawl-waste inventory naming your platform’s actual parameters, with a decision per class. Structured data on the product template, with eligibility tracked in Search Console. A measurement baseline including a dataset quality score if paid social is in scope. If month one cannot be summarised as a list of changed things, ask why before renewing.
Send the store, and I will name the row
Send the shop address and, if you can, read-only access to Merchant Center and analytics. You get a written answer naming which of the four leak points is costing you most right now, what the evidence for that is, and what I would fix first. It costs nothing and there is nothing to sign. If the answer is that the store is sound and the constraint is traffic volume rather than conversion, that is what the answer will say.

