About Services Cases Blog Tools Reviews Partners Contacts

Why You Shouldn’t Stop After the First Month: A Mattress Store Case Study

Mattress store case: why the first month is just the first month, ROAS 7.77, average order value UAH 11,941 ($265)

If you’ve read articles from the “Boring Numbers” series, where I break down projects purely through numbers, you already know: Google Ads runs on statistics. A Google Ads specialist runs on statistics too. When there isn’t enough of it, you either make the wrong decisions, or the promotion turns from a system into a series of random actions.

That’s why at the very first meeting I tell every client: Google Ads doesn’t work in the first month. It doesn’t work in the second. Results start somewhere in the third, and from the third month you can scale. If your first thought is “let’s run it for a month and see how it goes”, you won’t see anything.

Contents
  1. “Let’s run it for a month and see”
  2. About the project
  3. Merchant Center: what was there and why it was a matter of time
  4. Bad title — irrelevant clicks
  5. Product feed enrichment: why do it
  6. Shipping rules for products of different sizes
  7. Not every call is a sale, not every purchase is a sale
  8. Switching to CRM data
  9. What real data actually looks like
  10. Why the first month isn’t about results
  11. Forecasting in Google Ads: 4 time series forecasting methods
  12. Conclusions
  13. FAQ

Horoshop + Google Ads: Sending Real CRM Sales to the Account to Stop Wasting Budget

Video: Horoshop + Google Ads: Sending Real CRM Sales to the Account to Stop Wasting Budget

“Let’s run it for a month and see”

I turn such projects down. A recent example: a marketing agency offers to launch Google Ads for three lines of business at once (social ads, website development and turnkey marketing). The budget is $500 a month for everything. The client’s plan: “we’ll run it for a month, look at the output and decide”.

Chat with the client: $500 for three lines of business for one month
Chat with the client: $500 for three lines of business for one month

In these niches, the average click costs from UAH 100 ($2), and with smart bidding it can reach UAH 200+ ($4+). $500 is at best about 220 clicks a month for all three lines, that is, about 70 for each. The conversion rate in such competitive niches is 2% at best. Even if we imagine 5%, the first month would bring 4–10 leads for everything combined. What decision can you make on such a sample? None. This data is statistically insignificant. To collect proper statistics, a project like this would need about three lifetimes, one for each line.

I declined. The only thing you can offer on such a budget is adding and excluding keywords and changing bids. You can’t call that promotion, because there’s no room to maneuver.

Now to the project. Closer to the end it will become clear why I started with the first month.

About the project

An online store of mattresses of its own manufacture on Horoshop. Tasks at the start: Google Merchant Center, call tracking, then CRM and end-to-end analytics. The client came in early July, not the peak season for the niche. This summer was difficult for most niches overall.

Merchant Center: what was there and why it was a matter of time

The client registered Merchant Center himself, uploaded the feed himself and even passed moderation (at least before the ads were launched). When I looked at the website and the feed, it was clear that a suspension was only a matter of time. So the first thing I did was fix the technical pages of the website and Merchant Center itself.

I won’t go into the technical pages in detail, everything there is as usual. What exactly you need on the website before launch, I described in the case of launching Merchant Center without suspensions. But shipping had a nuance, more on that below.

Bad title — irrelevant clicks

This is what the product title looked like in the feed:

Product title in the feed before the changes: the size is at the very end
Product title in the feed before the changes: the size is at the very end

The main thing for a mattress is its size, and it was at the very end. People search for mattresses by size: for a bed, for a specific 160×200. So, through a supplemental feed, I rewrote the title in this order: size first, then the word “mattress” in Ukrainian, then the model name, and at the end the Russian spelling of “mattress”. People often type that spelling in search too.

A supplemental feed is a separate table that is attached to the main feed and overwrites or adds attributes by product ID. You don’t need to touch the website or the admin panel.

Supplemental feed: new title and brand
Supplemental feed: new title and brand

At the same time, I added a brand attribute to all products, pulling it out of the product name.

It’s not some super game-changer. But already at the search results stage, the buyer immediately sees the size they need, and the ad’s relevance to the query increases.

Product feed enrichment: why do it

Since I was already editing the products, I decided not to stop at the title. These products have no GTIN (international barcodes), because they are made in-house. This means everything Google knows about a product comes from the feed attributes. The more of them there are, the better the system understands what the product is and whom to show it to.

What I added:

  • item_group_id — groups variants of one product together. The store has about 1,600 SKUs, but essentially it’s 100 models in 16 sizes. Without grouping, Google treats them as 1,600 separate products and learns on each one separately. With grouping, it learns on 100 groups, and the statistics for a model aren’t spread across 16 parts.
  • product_length, product_width, product_height and size — product dimensions. Again, people search for mattresses by size.
  • material — what the mattress is made of.
  • product_highlights and product_detail — key benefits and specifications that help the system understand the product better.
Supplemental feed: dimensions, materials, product_detail
Supplemental feed: dimensions, materials, product_detail

All of these are small things that improve how products show up, and you don’t have to pay anything for them. In theory, all of this can be filled in in the admin panel. But if the client filled it in manually for 1,600 products, you would never have read this article. That’s why such things are done with feed rules in Merchant Center or supplemental feeds.

This is what the product card looks like now:

Product card in Merchant Center with the full set of attributes
Product card in Merchant Center with the full set of attributes

Shipping rules for products of different sizes

Now about the nuance. There are single mattresses and double mattresses, and shipping them costs differently. Stating this on the shipping page of the website is easy. But the same information has to be passed to Merchant Center, otherwise the data on the website and in the feed won’t match.

That’s what the shipping_label attribute is for — a label you can attach a separate shipping rule to. Through a supplemental feed, I gave every SKU the label “single” or “double”. Not by hand, of course.

Supplemental feed: shipping_label single / double
Supplemental feed: shipping_label single / double

Then in Merchant Center I created two shipping rules: one for single mattresses with their fixed cost, the other for double ones.

Shipping rules in Merchant Center by shipping_label
Shipping rules in Merchant Center by shipping_label

If your products differ in size and weight, with different shipping costs, and your Merchant Center gets suspended, don’t be surprised. The reviewer saw that you offer shipping for, say, UAH 120 ($3) for equipment weighing 50 kilograms. That can easily be a reason for suspension. That’s why products of different sizes need to be split into different shipping rules in Merchant Center via shipping_label. More on what gets you suspended and how to get unblocked — in the Merchant Center “Misrepresentation” unblock case.

11 — Merchant CenterGoogle Merchant Center unblocking“Misrepresentation”, data mismatches, site suspensions. 100+ unblocks and launches without suspensions.from $200Learn more

Not every call is a sale, not every purchase is a sale

Of course, I started by optimizing for cart purchases. But I quickly persuaded the client to set up call tracking. I had access to another mattress store, and I saw that about 70% of inquiries there came by phone.

That’s logical. The average order value here is almost UAH 12,000 ($267), and such products are bought over the phone: people want to clarify, get advice, agree on delivery. In “Boring Numbers” about calls and average order value, I showed with numbers that as the average order value grows, so does the share of calls. Same here. Looking only at Google Ads data, the period had 96 cart “purchases” and 153 calls. That is, almost two thirds of inquiries came by phone.

Conversion actions in Google Ads: Purchase 96, calls 83 + 70
Conversion actions in Google Ads: Purchase 96, calls 83 + 70

Everything looked great. A conversion cost roughly UAH 300 ($7), counting carts and calls together. With such a figure, someone else would already be writing a case study “cost per conversion in the mattress niche — UAH 300”. But not me. Because the client set up a CRM, and after the very first report it became clear that my numbers had nothing to do with reality.

What turned out:

  • Cart “purchases” are pre-orders, and some of them ended in refusal.
  • Some of the calls are “where is my order?” and “when will it be delivered?”.
  • Some people were calling the wrong store altogether. There are about five stores with the same name on different domains. A person googles the brand, clicks the first result and asks about an order they placed elsewhere.

Google Ads treated all of this as quality inquiries and learned from them.

This is how the number of calls and leads gets “increased”: every call, callback and cart counts as a conversion. The numbers in the ad account grow, the report looks great, and meanwhile the algorithm learns to bring more and more people who buy nothing.

Switching to CRM data

I explained this to the client. He is a reasonable person, agreed and set up KeyCRM. Then I integrated the CRM with Google Ads and started sending real orders to the ad account. I showed in detail how this setup works in the offline conversions case, ROMI +45 pp

An important nuance: I don’t send the final “sale” status, but “sent to production”. At this stage the client has already paid. From order to “sale” status it takes up to three weeks on average because of production and delivery. That’s too long for Google Ads, especially on a project with little statistical data. And the conversion from “sent to production” to sale is 100%: there are no returns or unclaimed orders, because the money has already been paid. If the client weren’t in a hurry, we could wait for the final status. But it’s the season now, and there’s no point in losing three weeks.

What real data actually looks like

Now the most interesting part. For the same period in which the ad account showed 249 conversions at UAH 300 ($7), the CRM received 134 orders. No fake calls, no “checking on my order”, no other stores’ customers. And these are all orders, including those that later fell through: delivery wasn’t agreed, they bought elsewhere, other refusals.

134 out of 249 is 54%. In other words, the ads were optimizing half on real data and half on junk.

End-to-end analytics dashboard, 11.07–18.10.2026
End-to-end analytics dashboard, 11.07–18.10.2026

The screenshot shows all order statuses, including refusals, which is why the numbers here are higher than in the dynamics table below.

Where do these numbers come from? The project has end-to-end analytics set up: a dashboard that combines Google Ads spend and CRM orders. It shows everything you need in any breakdown: by status, source, campaign. For me this is nothing new — I have a dashboard like this on almost all my projects. I wrote in more detail about what reporting based on such data should look like in “Google Ads Reporting from an Expert” — which, by the way, is a report for this same store.

Why the first month isn’t about results

And now, what this whole case was actually about. Monthly dynamics:

Dynamics by period: spend, leads, orders, ROAS
Dynamics by period: spend, leads, orders, ROAS

July is the hardest month. A budget of UAH 23,555 ($523), which was enough for 11 leads. 6 of them converted into orders. ROAS 3.10. ROAS is ad revenue divided by ad spend. For this niche, 3.10 is a loss. And this is the period when the ads were still learning on dirty data.

August — the budget was increased. Of 56 leads, 38 turned into real orders, that is, 68%. ROAS 9.19.

September and part of October — already optimizing on real CRM data. 88% of leads convert into orders.

Interestingly, August, despite the large number of orders that didn’t happen, delivered a ROAS of 9.19 on actual data. Could we have kept working like that? In theory, yes. The client was more than happy with this figure, because it’s very high for this niche. But the data wasn’t clean. Sometimes, thanks to statistics and random sets of audiences, the system really does deliver decent results even on dirty data. It just doesn’t last long. Sooner or later the algorithm starts bringing more “fake” conversions, because it learns from them. Then their number snowballs, and the ads slide down to 50% junk, and sometimes to 100%.

The overall ROAS for the whole period is 7.77, the average order value is UAH 11,941 ($265). Note that October is only part of the month. The attribution window is at work: in this niche it takes 2–3 weeks from the first click to an order, and some October orders are still to come. That’s why October’s ROAS (6.87) is currently lower than the previous months. We’ll see the real October figure in November, and it will be better.

Forecasting in Google Ads: 4 time series forecasting methods

The dashboard has a “Forecast” tab. The key point right away: I wouldn’t promise the client any forecasts right now. This forecast is purely statistical and is not a guarantee of results. But it gives an idea of where and how the project is moving and shows a possible scenario.

Forecast for October and November 2026: 4 methods and consensus
Forecast for October and November 2026: 4 methods and consensus

How it works. Daily data for the last 90 days is taken: spend, number of orders and order value. In statistics, such a time-ordered set of values with a stable step (daily) is called a time series. Each metric is calculated separately using four time series forecasting methods. The forecast for the current month is the actual figure from the first of the month plus the forecast for the remaining days.

Why four methods? Because none of them on its own deserves to be considered accurate.

Method 1. Run-rate. I call it the “average temperature across the hospital”. The daily average over 90 days is multiplied by the number of days remaining. The simplest method. It says: if everything goes as on average, this is the result. It sees neither growth nor decline.

Method 2. Trend. A straight line (linear regression) is drawn through 90 points and extended forward. If the metric is growing, the forecast will be above average; if it’s falling, below. The weak spot: the line keeps pulling the trend further even if the growth has already ended.

Method 3. Weighted average. The same average as in the first method, but recent days carry more weight. The first day of the 90-day window has a weight of 1, the last one 90. So yesterday is 90 times more important than a day three months ago. The method reacts to recent changes, but without sharp jumps.

Method 4. Exponential smoothing (Holt’s method). It calculates two numbers: the current level and the current trend. Each new day updates the level by 30% and the trend by 10%. It’s the method most sensitive to recent changes, which is why it gives the widest spread. In this case, it forecasts a ROAS of 4.26 for November, while the other methods show 9.5 to 10.3.

Consensus. This isn’t a separate super-method, but the average of the four methods for spend, number of orders and order value. Average order value, CPL and ROAS in the consensus aren’t averaged, but recalculated from these totals. No single method gets it right on its own, but when four different approaches give a similar figure, you can more or less trust it.

All four methods share one drawback: the forecast is built on a small sample. The consensus gives about 54–55 orders a month, and that’s very little for a quality forecast. For November, the consensus shows 55 orders worth UAH 670,745 ($14,905) and a ROAS of 7.84.

Conclusions

First: yet more proof that you can’t work on ad account data. 249 conversions in the ad account and 134 orders in the CRM — that’s the difference between “everything’s great” and reality.

Second: use every free opportunity to improve your ads. A supplemental feed, the right title, attributes, shipping_label cost nothing but time and willingness.

Third, and most important. If the client had stopped after the first month with a ROAS of 3.10, he wouldn’t be earning in August, September and October. He’d be looking for another contractor who would start everything from scratch and feed him nonsense. Instead of staying on the course that had already started to work.

So forget about the first month. The first month is always technical work and collecting initial data. If someone promises you results in seven days or a month, you’ve been hooked. And for another three months they’ll keep telling you it’s just around the corner, until you change contractors.

05 — CRMCRM integration with Google AdsOffline conversions: real sales from your CRM flow back into Google Ads, so the algorithm learns from revenue, not leads.from $300Learn more

The same feed work — attribute enrichment and product segmentation — is available as a separate service: Merchant Center product feed optimization. And the product campaigns that run on this feed: Performance Max and Shopping campaign setup.

Related services
Google Ads consultation Your specific question worked through on Zoom or Google Meet: performance drops, conversions, launch strategy. $50 / hourLearn more Google Ads account audit I find where the budget leaks: structure, bidding, keywords, conversion tracking, website. from $50Learn more
Want Google Ads to learn from real orders, not calls and carts? Get in touch

FAQ on the topic

Frequently asked questions

How long does Google Ads take to show results?
In most projects, the first month goes to setup and data collection, the second to the first optimization. Stable results appear in the third month, and that’s when you can think about scaling. For niches with a long deal cycle, it takes even longer.
What is the minimum budget for Google Ads?
The budget should bring enough conversions to make decisions on. The math is simple: divide the monthly budget by the average cost per click and multiply by the expected conversion rate. If you get a few leads a month, you’ll be guessing, not optimizing.
What is a supplemental feed in Merchant Center?
It’s a separate data source, most often a Google Sheet, that adds to or overwrites attributes of the main feed by product ID. This way you can change the title, add brand, dimensions, materials or shipping_label without touching the website or the admin panel.
Why do you need the shipping_label attribute?
It lets you assign different shipping rules to different products in Merchant Center. This matters if your products vary in size and shipping costs differ. A mismatch between shipping costs on the website and in Merchant Center is one of the common reasons for suspension.
Why don’t Google Ads conversions match sales in the CRM?
Google Ads counts actions on the website: calls, carts, forms. It doesn’t know whether the action ended in a purchase, a refusal or a “where is my order” call. The CRM knows. That’s why for optimization it’s better to send real orders from the CRM to Google Ads via offline conversions.
Can you trust a sales forecast in Google Ads?
A statistical forecast shows the direction, not a guaranteed result. The more data and the more stable the project, the more accurate it is. It’s better to look at several methods at once: if they give a similar figure, the forecast is more trustworthy.



Contact

Let's discuss
your project

Leave a request — we'll assess your situation, discuss your goals and find the best solution for your business and budget.

🏆
As a Google Partner, I can help you get a Google Ads bonus of up to 55,000 UAH ($1.2K) for your first campaigns.
❌ I don't work with: gambling · betting · alcohol · tobacco · crypto · grey niches · payday loans
▸ new_project.init()
Discuss a project