Why are my Meta ads not generating sales or leads?
You are paying for Facebook and Instagram ads, the clicks are coming in, maybe even add-to-carts, but the orders are not. Here is how to find out whether the problem is the setup, the campaigns, the creative or the store.
Running lead generation rather than e-commerce? Jump to why Meta isn’t generating leads.
Short answer
Work through it in this order: tracking (is Meta receiving purchase events correctly?), campaign objective (are you optimizing for purchases?), audience and budget (is the campaign able to learn?), creative and offer (does the ad attract buyers rather than browsers?), and finally the landing page and checkout. Most “Meta ads don’t work” problems are found in the first three.
Clicks are not the goal
Meta will deliver whatever you ask it to optimize for. If the campaign is optimized for traffic, engagement or link clicks, it finds people who click, and many of them never buy. That is why a campaign can look busy and still generate no orders. To get purchases, Meta needs to be optimizing for purchases and needs accurate purchase data to learn from.
The most common causes, in the order to check them
1. Purchase tracking is missing or broken
If Meta is not receiving a clean Purchase event for every order, it cannot find buyers. Common problems: the pixel was added by hand and also through the Shopify app (duplicate events), the Conversions API is not connected, the domain is not verified, or purchases are sent without values. In Events Manager, check that Purchase events arrive, roughly match your Shopify orders and show a good event match quality.
2. The wrong campaign objective
Boosted posts and Traffic or Engagement campaigns are not built to sell. Use a Sales campaign optimized for Purchase (or Advantage+ shopping campaigns where appropriate). If you have very few purchases, optimizing for add-to-cart or initiate checkout for a short period can help, but treat that as a temporary step.
3. Too little budget for the campaign to learn
Spreading a small budget across many ad sets and audiences means none of them gets enough purchases to learn. Fewer campaigns, broader audiences and consolidated budgets usually perform better than many small, narrowly targeted ad sets.
4. Over-narrow or mismatched targeting
Detailed interest stacking and tiny lookalikes can starve delivery. On the other hand, a very broad audience with weak creative brings the wrong people. Today the creative does much of the targeting: who the ad speaks to decides who clicks.
5. Creative that attracts browsers, not buyers
Ads that are entertaining but vague about the product, the price or who it is for can drive cheap clicks from people who were never going to buy. Strong e-commerce creative shows the product in use, states the main benefit and the offer clearly, and gives people a reason to buy now.
6. Too few creatives, or creative fatigue
Running one or two ads for months leads to rising frequency and cost. Test new concepts regularly (different angles, formats and hooks), not just small variations of the same ad.
7. The offer is not strong enough for a cold audience
People who have never heard of you need more reason to buy than returning customers do. Price, bundle, shipping terms and guarantee all affect cold-traffic conversion.
8. The landing page breaks the promise
If the ad shows a product and a price, the page must show the same product and price immediately. Sending paid social traffic to the homepage is one of the most common and expensive mistakes.
9. Judging results too early or on the wrong numbers
Turning ads off after a day or two, or comparing Meta’s attributed purchases with Shopify orders over different date ranges, leads to wrong conclusions. Decide your evaluation window and the source of truth before you launch.
A step-by-step diagnosis
- Events Manager: confirm Purchase events arrive for real orders, are not duplicated and carry order value and currency. Check that the Conversions API is connected through the Shopify app.
- Campaign setup: check the objective and the optimization event of every active campaign. Turn off boosted posts used for sales.
- Structure: count your active ad sets. If budget is split so thinly that none gets regular purchases, consolidate.
- Funnel by ad: compare link clicks, landing page views, add-to-carts and purchases per ad. A big gap between clicks and landing page views points to page speed or accidental clicks. A gap between add-to-cart and purchase points to price, shipping or checkout.
- Creative: review frequency, cost per purchase and click-through rate by ad. Retire fatigued ads and brief new concepts.
- Landing page: click your own ads on a phone and check that each lands on the matching product with the same price and offer.
- Reconcile: compare Shopify orders from Meta-tagged sessions with Meta’s reported purchases for the same period and attribution setting.
What usually fixes it
- A clean pixel and Conversions API setup through the official Shopify integration, with the domain verified.
- Sales campaigns optimized for Purchase, with a simpler structure and consolidated budget.
- A steady pipeline of new creative concepts that show the product, the benefit and the offer.
- Separate messaging for new and returning customers.
- Landing pages that match each ad, and a store that converts mobile visitors well.
- Clear rules for when to judge, scale or pause an ad, based on cost per purchase or ROAS targets that fit your margins.
Running lead ads? Why Meta isn’t generating leads
Lead generation fails on Meta for many of the same reasons as e-commerce: tracking, objective, budget and creative. But it has two problems of its own: the form, and what happens after someone fills it in. Check these in order.
The causes, in the order to check them
- Leads are not tracked correctly. Instant-form leads are counted inside Meta, but website leads need a Lead event from the pixel and the Conversions API. Confirm that every real lead appears once in Events Manager and in your CRM.
- The campaign is not optimized for leads. Traffic and engagement campaigns find clickers, not enquirers. Use a Leads campaign, and once you have enough volume, optimize toward the leads that become customers.
- The budget is spread too thin. Many small ad sets mean none of them gets enough leads to learn. Consolidate.
- The audience overlaps and fatigues. Overlapping ad sets push frequency up and the same people see the same ad again and again. Frequency caps and fewer, better-separated audiences fix this.
- The offer is weak for a cold audience. “Contact us” is not an offer. A free quote, consultation, assessment or guide gives people a reason to share their details.
- The creative is generic. Ads that do not say who the service is for, what it costs or what happens next attract curiosity, not enquiries.
- The form or landing page creates friction. Too many fields lose people; too few attract low-intent sign-ups. Match the form length to the value of the lead.
- Nobody follows up quickly. A lead contacted hours or days later is often a lead lost, and Meta never learns which leads were good.
Getting leads, but low-quality ones
Cheap leads that never answer the phone usually mean the campaign is optimizing for volume. Add a qualifying question to the form, use a higher-intent form type, send lead outcomes from your CRM back to Meta through the Conversions API, and judge campaigns on cost per qualified lead or per booked appointment, not cost per lead alone.
What fixed it in real accounts
- US wellness and home services: precise audience segmentation and structured A/B testing of ads cut cost per lead by 40%. Read the home services case study.
- European lead-generation business: broad audiences, generic copy and frequency above 30 were replaced with high-intent targeting, mid-funnel retargeting and frequency caps. On the top lines, completed registrations cost €0.94, €0.95 and €2.48 each, including 805 registrations at €0.95 on a single line. Read the Europe lead generation case study.
Illustrative example
This is a hypothetical scenario to show the method, not a client result.
A skincare brand runs five ad sets, each with a small daily budget and a different interest audience, plus regular boosted posts. Events Manager shows two Purchase events for every order because the pixel was added in the theme and through the Shopify app. Meta therefore thinks it is getting twice as many purchases as it really is, and the brand thinks some ad sets are profitable when they are not. The fix starts with removing the duplicate pixel, then consolidating into one Sales campaign optimized for purchases with fewer, broader ad sets, and replacing the boosted posts with product-focused creative.
Recommended actions
- Check Purchase events in Events Manager against Shopify orders for the last 7 days.
- Make sure every campaign meant to sell is optimized for Purchase.
- Stop using boosted posts to drive sales.
- Consolidate small ad sets so each one can get regular purchases.
- Launch at least two new creative concepts this month.
- Click every live ad on a phone and confirm the landing page matches.
When to get professional help
Meta advertising rewards experience: knowing what “normal” looks like for tracking, structure, frequency and creative testing saves a lot of budget. Consider expert help if you have spent for several weeks without a clear return, if your tracking numbers do not reconcile, or if you are about to increase budget and want to be sure the account is ready to scale.
If you want an experienced team member on the account, see Zali Digital’s Meta Ads agency services for e-commerce brands.
For service businesses that need enquiries rather than orders, the same Meta Ads service covers lead generation.