<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Ask Moiz Blog</title>
    <link>https://askmoiz.digital/blog/</link>
    <atom:link href="https://askmoiz.digital/blog/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Practical Meta Ads, Google Ads and tracking notes from Moiz Khan for e-commerce stores and service businesses: what to check, what to change and why.</description>
    <language>en</language>
    <lastBuildDate>Sat, 24 Oct 2026 09:00:00 +0500</lastBuildDate>
    <image><url>https://askmoiz.digital/assets/img/icon-512.png</url><title>Ask Moiz Blog</title><link>https://askmoiz.digital/blog/</link></image>
    <item>
      <title>Targeting is not your problem: what I fixed inside a real estate ad account</title>
      <link>https://askmoiz.digital/blog/targeting-is-not-your-problem-meta-ads/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/targeting-is-not-your-problem-meta-ads/</guid>
      <pubDate>Sat, 24 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Meta Ads</category>
      <category>Tracking</category>
      <description>A real estate account was stuck on audience settings. The real problems were creative, tracking and the page after the click. Here is what I fixed, in order.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> Targeting is rarely why Meta ads fail. In a real estate account I fixed, the problems were too few creatives per campaign, no Conversions API and instant forms with no landing page. In my experience, Meta and Google judge the whole journey after the click. Fix the inputs first, and accept a slightly higher cost per lead for better leads.</p><ul><li>Too few creatives per campaign gives Meta little to learn from. Add more, and make them different.</li><li>No Conversions API means no proper tracking or measurement.</li><li>Instant forms give cheap leads. A landing page gives fewer, better qualified ones.</li><li>A higher cost per lead can be the cheaper option if sales reps get better calls.</li><li>Focus on quality inputs: creative, offer, landing page and tracking. Targeting comes last.</li></ul><p>"Which audience should we target?" I hear that question almost every week. Inside a real estate client's account, the team was stuck in analysis paralysis over targeting. The account was stuck, and targeting was not the reason.</p>
<p>The real problems sat everywhere else. Here is what I found inside the account, what I fixed, and the rule I use now.</p>

<h2 id="is-targeting-the-problem">Is targeting the reason your Meta ads are not working?</h2>
<p>Targeting is rarely the reason Meta ads underperform. In this account, the bigger problems were the creative, the landing page and the tracking. Targeting gets the blame because it is the easiest setting to change, so people keep changing it.</p>
<p>Meanwhile each campaign had too few creatives, there was no tracking worth the name, and every lead came through an instant form.</p>

<h2 id="what-was-broken">What was broken inside the account?</h2>
<p>Four things were broken, and none of them was an audience setting.</p>
<ol>
<li><strong>Too few creatives.</strong> Each campaign had too few creatives. Meta had almost nothing to learn from.</li>
<li><strong>No Conversions API.</strong> The account had no proper tracking or measurement. Meta's own documentation describes the Conversions API as a way to connect your website events to Meta so ads can be optimized and results measured. Tracking setups like this are part of <a href="https://askmoiz.digital/about/" data-cta="blog_body_about">the work I do</a>.</li>
<li><strong>Instant lead forms only.</strong> There was no landing page. Forms are quick to fill, so the leads came cheap, but very few were marketing-qualified.</li>
<li><strong>Campaign structure.</strong> The account was wrongly structured.</li>
</ol>

<h2 id="why-the-click-matters">Why does what happens after the click matter?</h2>
<p>What happens after the click matters because, in my experience, Meta and Google judge the whole journey, not just the ad. If the page after the ad is weak, or nothing reports back, the platform has poor signals to work from.</p>
<p>That is why a perfect audience cannot rescue a weak journey. The audience only decides who sees the ad. The journey is what the platform measures. Tracking changes after iOS updates made this matter even more, and I explain that in <a href="https://askmoiz.digital/blog/meta-ads-after-ios-updates/" data-cta="blog_body_ios">Meta ads after iOS updates</a>.</p>

<h2 id="what-i-fixed">What did I fix, in order?</h2>
<p>I fixed tracking first, then creatives, then the landing page.</p>
<ol>
<li><strong>Added tracking.</strong> I set up the Conversions API so Meta could see what happened after the click.</li>
<li><strong>Added more creatives.</strong> Each campaign got more creatives, so Meta had more options to learn from.</li>
<li><strong>Built landing pages.</strong> I built them with AI. Each page answers the buyer's basic questions before they sign up, so the sales rep does not have to.</li>
</ol>
<p>I did not touch the audience until these three were done.</p>

<h2 id="higher-cost-per-lead">Is a higher cost per lead ever the better result?</h2>
<p>Yes. A higher cost per lead can be the cheaper option. Once the landing page replaced the instant form, the cost per lead went up slightly. I accepted that on purpose. The leads that arrived were better qualified, so the sales reps spent their time on better calls.</p>
<p>A cheap lead that never answers the phone costs the business more than an expensive lead that does. Judge lead quality by what the sales team does with it, not by the number in Ads Manager.</p>

<h2 id="decision-rules">What should I focus on instead of targeting?</h2>
<p>Focus on quality inputs: creative, offer, landing page and tracking. Targeting comes last.</p>
<ol>
<li><strong>Creative.</strong> Several different ads per campaign, each with a different reason to buy.</li>
<li><strong>Offer.</strong> Make clear what the buyer gets and what it costs them.</li>
<li><strong>Landing page.</strong> Answer the questions buyers have before they hand over their details.</li>
<li><strong>Tracking.</strong> Pixel plus Conversions API, so the platform sees real outcomes.</li>
<li><strong>Targeting.</strong> Keep it simple. It comes last.</li>
</ol>
<p>Targeting is the question I get every week from students. My answer is always the same: fix the inputs first.</p>

<h2 id="meta-ai">Should I let Meta's AI build my campaigns?</h2>
<p>Yes, use it, but check every campaign it creates. Students ask me whether to let Meta's AI build campaigns by chatting with it, or to do it themselves. Open each campaign afterwards and confirm it matches what you intended. It does not replace your review.</p>

<h2 id="next-step">What is the next step for this account?</h2>
<p>The next step is a video sales letter (VSL) funnel. It gives buyers a longer, more convincing page before the sales call than a lead form can. I will write about when that move makes sense in a later post.</p>

<p class="bl-sign">After 12 years in this work, the audience is almost never the answer. If you want me to look at your account and tell you what to fix first, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>.</p>
<h2>Common questions</h2><h3>Should I let Meta&#x27;s AI build my campaigns?</h3><p>Yes, use it, but check every campaign it creates matches what you intended before you turn anything on.</p><h3>Is targeting the priority on Meta ads?</h3><p>No. Focus on quality inputs first: creative, offer, landing page and tracking. Targeting is not the priority.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to build a media buyer portfolio with no clients (without faking results)</title>
      <link>https://askmoiz.digital/blog/ads-portfolio-with-no-clients/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/ads-portfolio-with-no-clients/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Careers and Freelancing</category>
      <description>You don&#x27;t need fake screenshots to land your first ads client. You need one small real campaign, honest case notes and a few mock audits.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> You can build a media buyer portfolio with no clients. Run a small real campaign on your own money or for a friend&#x27;s business, log every decision, and write two or three one-page case notes. Add mock audits of brands in the Meta Ad Library. Label each piece honestly, because clients hire judgement, not screenshots.</p><ul><li>Set the account up properly before spending, so your case note shows a clean setup.</li><li>Keep a decision log: date, what you did and why.</li><li>Use one case note structure: business, goal, setup, decisions, results, next step.</li><li>In Ad Library audits, describe what you can see, not results you can&#x27;t.</li><li>Never edit numbers or call a friend&#x27;s project a client account.</li></ul><p>The question I get most from students after the course is not about bidding or audiences. It's this: how do I get my first client when every client wants to see results from other clients?</p>
<p>You don't need fake screenshots to break that loop. You need one or two small real campaigns, written up in a way that shows how you think. Clients who know ads care more about your decisions than your numbers. Here's how I'd build that portfolio from zero.</p>

<h2 id="can-you-build-one">Can you build a media buyer portfolio with no clients?</h2>
<p>Yes. Run a small real campaign yourself, document every decision, and add a few mock audits of other brands' ads. That's enough to show a client you can do the work.</p>
<p>A portfolio for a media buyer isn't a gallery of pretty ads. It's proof that you can set up an account properly, make sensible decisions with a budget, read results honestly and explain what you'd do next. All of that can be shown without a paying client.</p>
<blockquote class="bl-quote"><p>A client hiring a media buyer is buying judgement. Show them how you decide, not only what happened.</p></blockquote>

<h2 id="small-real-campaign">How do I run a small real campaign without a client?</h2>
<p>Use a small budget of your own, or offer to run ads for a friend's or relative's business. A real campaign with a real product teaches you more than any amount of watching.</p>
<p>Good options are a cousin's clothing page, a local bakery, a tuition centre, or a small Shopify store someone has already built. Agree on the budget in writing, even with family. Make clear it's a learning project and you're not promising results.</p>
<p>Before you spend anything, set the account up properly. Domain, pixel, events, a clear objective and a simple structure. My <a href="https://askmoiz.digital/blog/meta-ads-launch-checklist-new-store/" data-cta="blog_body_launch">launch checklist for a new store</a> is the order I'd follow.</p>
<aside class="note note--sun" aria-label="Cash on delivery note">
  <span class="sticker sticker--ink note__tag" style="--rot:-3deg">COD note</span>
  
  <div class="note__body"><p>If the business sells on cash on delivery, track confirmed or delivered orders as well as placed orders, even in a simple Google Sheet. A case note that shows you understood COD refusals will stand out to clients in Pakistan, the Gulf and other markets where cash on delivery is common.</p></div>
</aside>

<h2 id="document-decisions">What should I document besides results?</h2>
<p>Document the setup and the decisions: what you chose, why, what you expected, and what you changed after. Results alone don't show skill. A lucky campaign and a well-run one can have the same numbers.</p>
<p>Keep a simple log while the campaign runs. For each decision, write the date, what you did and the reason. It's the most useful thing you'll have when you write the case note, and it's what experienced buyers notice.</p>
<ul>
  <li>Why you picked that objective and optimization event.</li>
  <li>How you structured campaigns and ad sets, and why not more.</li>
  <li>Which creative angles you tested and what each was meant to prove.</li>
  <li>What you saw in the first few days and what you left alone.</li>
  <li>How Ads Manager compared with the real orders or leads.</li>
</ul>

<h2 id="case-notes">How do I write a case note?</h2>
<p>Write two or three short case notes, one page each, with the same structure every time: the business, the goal, the setup, the decisions, the results and what you'd do next.</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>The business and the goal.</b> What they sell, who buys, and what a good result means to them.</li>
    <li><b>The setup.</b> Tracking, objective, structure and budget.</li>
    <li><b>The decisions.</b> Three or four key choices and why you made them.</li>
    <li><b>The results.</b> Real numbers, including what didn't work. Say clearly how small the budget was.</li>
    <li><b>What you'd do next.</b> The next test and the reason for it.</li>
  </ol>
</div>
<p>A campaign that lost money can still make a strong case note if you explain why and what you learned. One honest weak result beats a dozen perfect screenshots.</p>

<h2 id="mock-audits">How do I do mock audits with the Meta Ad Library?</h2>
<p>Pick a few brands in a niche you want to work in, look at their active ads in the Meta Ad Library, and write a short audit of what they're doing and what you'd test. It shows clients you can think about creative without needing their account.</p>
<p>The Ad Library is public. You can search any page and see the ads it's running, and for many ads, how long they've been live. In your audit, look at:</p>
<ul>
  <li>The angles and hooks they keep running. Ads that stay live for a long time are often working.</li>
  <li>Language: which language or mix they use (Urdu, Roman Urdu, English, Arabic), and who that speaks to.</li>
  <li>Whether they show the price, delivery time and COD in the creative.</li>
  <li>Gaps: buyers or angles nobody in the niche is speaking to.</li>
</ul>
<p>Be careful with claims. You can see their ads, not their results. Write "this ad has been live for a long time, which suggests it's working" rather than pretending to know their ROAS. My take on <a href="https://askmoiz.digital/blog/creative-is-targeting-meta-ads/" data-cta="blog_body_creative">why creative now does the targeting</a> is a useful lens for these audits.</p>

<h2 id="present-it">How do I present it on Upwork and LinkedIn without faking results?</h2>
<p>Present your case notes and audits as exactly what they are: a self-funded test, a project for a friend's business, or a mock audit. Clients respect honesty. They don't respect results they later find out were invented.</p>
<p>On Upwork, add each case note as a portfolio item with a clear title like "Self-funded Meta test for a clothing page" and a short summary of the decisions. On LinkedIn, post one case note at a time with the setup and the lesson, not just a screenshot. Never edit numbers, crop out spend to make results look better, or call a friend's project a client account.</p>

<p>Two honest case notes and two mock audits are enough to start applying. Every real client you win after that becomes the next case note.</p>
<p class="bl-sign">If you want to build these with feedback on real accounts, <a href="https://askmoiz.digital/services/academy/" data-cta="blog_body_course">the academy takes you through it step by step</a>. Still deciding where to start? Read <a href="https://askmoiz.digital/blog/learn-meta-or-google-ads-first/" data-cta="blog_body_learn_first">whether to learn Meta or Google ads first</a>, or <a href="https://askmoiz.digital/webinar/" data-cta="blog_body_webinar">join the free webinar</a>.</p>
<h2>Questions people ask me about ads portfolios</h2><h3>How much should I spend on my first practice campaign?</h3><p>Only what you can afford to lose while learning. The point is real decisions and real data, not big results. Say clearly in your case note how small the budget was, so nobody reads more into the numbers than they should.</p><h3>Can I use a campaign that lost money in my portfolio?</h3><p>Yes. If you explain what you tested, why it didn&#x27;t work and what you&#x27;d change, it shows judgement. Experienced clients know most tests fail. They want to see that you can tell why.</p><h3>Is a mock audit enough to get hired?</h3><p>On its own, usually not. Together with one or two real campaigns, it shows you can think about creative and strategy. Send a short audit of a prospect&#x27;s own ads with your proposal, and keep it honest about what you can and can&#x27;t see.</p><h3>Should I show screenshots from Ads Manager?</h3><p>Yes, as long as they&#x27;re real and unedited. Blur the business details if the owner asks. Don&#x27;t crop out spend or dates to make results look better.</p>]]></content:encoded>
    </item>
    <item>
      <title>Your creative is your targeting on Meta ads now. Here&#x27;s how I brief it</title>
      <link>https://askmoiz.digital/blog/creative-is-targeting-meta-ads/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/creative-is-targeting-meta-ads/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Meta Ads</category>
      <description>Broad audiences only work when your ads say genuinely different things. Here&#x27;s how I brief creative concepts for a store, and what I test first.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> On Meta, your creative now does most of the targeting. With broad audiences, Meta learns who to reach from who stops, watches and buys after each ad. So brief three to five genuinely different concepts, each a different reason to buy for a different person, keep the audience wide, and test concepts before hooks and formats.</p><ul><li>A colour swap is a variation. A different reason to buy is a concept.</li><li>Brief from angles like trust, price and offer, problem first, occasion and social proof.</li><li>Keep one broad ad set with several concepts instead of many audiences with one ad.</li><li>Test the concept first, then the hook, then the format.</li><li>On COD, judge creative on confirmed or delivered orders, not placed orders.</li></ul><p>Here's a setup I find often in store accounts. Twelve ad sets, each with a different interest stack, all running the same three product photos with different background colours. The owner keeps asking which audience is the winner. None of them is, because Meta is seeing the same ad twelve times.</p>
<p>On Meta now, the ad itself does most of the targeting work. The hook, the language, the face on screen and the offer tell Meta who to show it to next. If every ad says the same thing, you have only given Meta one direction to look in.</p>

<h2 id="why-creative-targets">Why does creative do the targeting on Meta now?</h2>
<p>Creative does the targeting because Meta finds buyers by watching who stops, watches and buys after seeing each ad, and with broad audiences that reaction is the main signal it has. The audience box you fill in sets the limits. The ad decides who inside those limits actually responds.</p>
<p>Think about two videos for the same lawn suit. One opens with a mother in Faisalabad saying the fabric survived three washes. The other opens with the price in PKR and "free delivery in Karachi". Different people stop for each one. Meta notices who stopped and finds more people like them. That is targeting, it just happens after the ad goes live instead of before.</p>
<p>This is also why narrow interest stacks lost their edge. Meta sees less of what happens after the click than it used to, and with Advantage+ audience it treats the interests you add as suggestions anyway. I explain the tracking side of that in <a href="https://askmoiz.digital/blog/meta-ads-after-ios-updates/#broad" data-cta="blog_body_ios_broad">what changed after the iOS updates</a>.</p>
<blockquote class="bl-quote"><p>If every ad says the same thing, Meta only has one direction to look in.</p></blockquote>

<h2 id="what-is-a-concept">What counts as a genuinely different creative concept?</h2>
<p>A different concept is a different reason to buy, said to a different person. A new colour, a new font or a new background on the same photo is a variation, not a concept. Meta will usually treat it as the same ad.</p>
<p>When I brief a store, I ask four questions for each concept: who is this for, what problem or wish are they walking in with, what is the first thing they see or hear, and what proof makes them believe it. If two concepts give the same answers, they are one concept.</p>
<div class="bl-table" role="region" aria-labelledby="cap-concept" tabindex="0">
  <table class="bl-tbl">
    <caption id="cap-concept">Variation vs concept: how I tell them apart</caption>
    <thead><tr><th scope="col">Change</th><th scope="col">What it is</th><th scope="col">New signal for Meta?</th></tr></thead>
    <tbody>
      <tr><th scope="row">Same photo, new background colour</th><td data-label="What it is">Variation</td><td data-label="New signal for Meta?"><span class="bl-tbl__no">Barely</span></td></tr>
      <tr><th scope="row">Same video, new caption font</th><td data-label="What it is">Variation</td><td data-label="New signal for Meta?"><span class="bl-tbl__no">Barely</span></td></tr>
      <tr class="is-pick"><th scope="row">Customer review video vs price and delivery offer</th><td data-label="What it is">Concept</td><td data-label="New signal for Meta?"><span class="bl-tbl__yes">Yes</span></td></tr>
      <tr class="is-pick"><th scope="row">Gift for Eid vs everyday use at the office</th><td data-label="What it is">Concept</td><td data-label="New signal for Meta?"><span class="bl-tbl__yes">Yes</span></td></tr>
    </tbody>
  </table>
</div>

<h2 id="brief-for-pakistani-store">How do I brief creative for a COD store?</h2>
<p>I brief three to five concepts at a time, each built on a different angle, and I write the brief in the words customers actually use. For a typical cash on delivery store, the angles I start from look like this:</p>
<ul>
  <li><strong>Trust.</strong> Cash on delivery, check before you pay, a real phone number, a real person unboxing the parcel. In COD-heavy markets, many buyers have been burned by online orders before.</li>
  <li><strong>Price and offer.</strong> The price on screen in the first seconds (in PKR, AED or whatever you sell in), delivery charges, delivery time by city.</li>
  <li><strong>Problem first.</strong> Open on the problem the product solves, in the customer's own words, before showing the product.</li>
  <li><strong>Occasion.</strong> Eid, weddings, winter, back to school, a gift for a mother or a husband. Use the dates your own buyers shop around.</li>
  <li><strong>Social proof.</strong> WhatsApp screenshots of real customer messages (with permission and names hidden), or a short review video.</li>
</ul>
<p>Language is part of the angle. The same concept in two languages reaches different people: Urdu, Roman Urdu captions or English for a Pakistani store, Arabic or English in the Gulf. I usually pick based on who already buys, which you can see in your WhatsApp chats and order notes.</p>

<h2 id="broad-audiences">Should I still pick audiences at all?</h2>
<p>Yes, but keep them wide. I set the country or the cities you actually deliver to, an age range only if it truly matters, and very few interests or none. Then I let the concepts compete inside one campaign.</p>
<p>The mistake I see most is the opposite: one concept, many audiences. That tests the audience box, which matters less now, and starves each ad set of conversions. One broad ad set with several real concepts gives Meta more to learn from. If you are setting up from zero, my <a href="https://askmoiz.digital/blog/meta-ads-launch-checklist-new-store/" data-cta="blog_body_launch_checklist">launch checklist for a new store</a> covers the structure I start with.</p>

<h2 id="what-to-test-first">What should I test first?</h2>
<p>Test the concept first, then the hook, then the format. Small details like button colour or caption length come last, if at all.</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Launch three to five concepts</b> with different angles in one broad ad set.</li>
    <li><b>Give them time</b> to spend and get conversions before you judge. Don't switch things off on day one.</li>
    <li><b>Find the concept that sells,</b> judged on confirmed or delivered orders, not clicks.</li>
    <li><b>Make new hooks</b> for the winning concept: three or four different openings on the same body.</li>
    <li><b>Try new formats</b> for the winner: video, static, carousel, a different person on screen.</li>
    <li><b>Brief the next round</b> of new concepts before the winner gets tired.</li>
  </ol>
</div>
<p>On COD, judge on orders that were confirmed or delivered. A concept that brings cheap orders that get refused at the door is not a winner.</p>

<h2 id="how-often">How often do I need new creative?</h2>
<p>Often enough that you always have a fresh concept ready when the current winner slows down. There is no fixed number of days. Watch frequency rising and cost per confirmed order climbing on the same ad, and treat that as the signal to bring in the next round.</p>
<p>Creative is the part of Meta ads you still fully control. Spend your time there, not on rebuilding audiences every week.</p>
<p class="bl-sign">If you want a second pair of eyes on your creative briefs, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>. If you'd rather hand the whole thing over, that's what <a href="https://askmoiz.digital/services/managed-ads/" data-cta="blog_body_managed">managed ads</a> is for.</p>
<h2>Questions people ask me about Meta ad creative</h2><h3>How many creatives should I launch with on Meta?</h3><p>I usually launch three to five genuinely different concepts, not dozens of small variations. Each concept should be a different reason to buy for a different person. More concepts than your budget can feed means none of them gets enough spend to show what it can do.</p><h3>Is changing the colour or text on an ad a new creative?</h3><p>Not really. Changing the background colour, font or button on the same photo is a variation. Meta tends to treat it as the same ad. A new concept changes who it speaks to, the opening hook, or the reason to buy.</p><h3>Should I stop using interests on Meta ads?</h3><p>Mostly, yes. I set the country or delivery cities, an age range only if it really matters, and few or no interests. With Advantage+ audience, Meta treats added interests as suggestions anyway. Put the effort into creative that speaks clearly to the buyer you want.</p><h3>Which language should my Meta ads use?</h3><p>Use the language your buyers already use with you. Check your WhatsApp chats and order notes. In Pakistan, some stores sell best in Urdu, some in Roman Urdu captions, some in English. In the Gulf it is often Arabic or English. Testing the same concept in two languages is a fair test, because it reaches different people.</p>]]></content:encoded>
    </item>
    <item>
      <title>Facebook ad payment failed? The causes and the order to fix them</title>
      <link>https://askmoiz.digital/blog/facebook-ad-payment-failed-pakistan/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/facebook-ad-payment-failed-pakistan/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Meta Ads</category>
      <description>A failed Meta payment is almost always a card or bank problem, not a banned account. Here&#x27;s what usually causes it and the order I fix it in.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> When a Facebook ad payment fails, the card usually isn&#x27;t enabled for international online payments, its limit is too low, or the bank blocked the charge. Stop retrying, turn on international and online payments in your banking app, raise the limit above your billing threshold, call the bank if needed, then pay the outstanding balance in Meta.</p><ul><li>An unpaid balance restriction pauses ads. It is not a ban.</li><li>Fix the card and bank first, then the details in Meta, then pay the balance.</li><li>Keep your card&#x27;s online limit above your Meta billing threshold.</li><li>Check Payment methods to see if prepaid funds are offered for your account.</li><li>Never pay anyone to unlock an ad account.</li></ul><p>"Your payment failed" is one of the most common messages I get from store owners. Sometimes it comes with a second one: the ad account is restricted because of an unpaid balance, and every ad has stopped. Usually this happens on a Friday evening, right before a sale.</p>
<p>In most cases the ad account is fine. The problem is between your card, your bank and Meta. If you fix things in the right order, it is usually sorted the same day. Here is the order I follow.</p>

<h2 id="why-payment-fails">Why does my Facebook ad payment fail?</h2>
<p>Most failed Meta ad payments I see come down to the card not being allowed to pay an international online merchant. In many countries Meta charges as a foreign merchant, and plenty of banks keep international or online payments switched off until you turn them on. If you pay with a Pakistani card, check this first: many Pakistani debit and credit cards ship with both switched off. The other common causes:</p>
<ul>
  <li><strong>The card limit is too low.</strong> Many cards have a separate daily or monthly limit for online or international spending, often lower than people think.</li>
  <li><strong>The bank blocked the charge.</strong> Fraud systems sometimes stop a foreign charge they don't recognise, especially the first one, or several attempts close together.</li>
  <li><strong>The billing threshold was reached.</strong> With automatic payments, Meta charges you when your spend hits a threshold or on your monthly billing date. If the charge fails at that moment, the balance is left unpaid.</li>
  <li><strong>The details don't match.</strong> The name, billing address or country on the payment method don't match what the bank has, or the card has expired or been replaced.</li>
  <li><strong>Not enough balance.</strong> Simple, but it happens, especially on debit cards shared with other spending.</li>
</ul>

<h2 id="restricted-unpaid-balance">What does "account restricted for unpaid balance" mean?</h2>
<p>It means Meta tried to charge you, the charge failed, and your ads are paused until the outstanding amount is paid. The account isn't banned. Once the balance is cleared, ads normally start delivering again.</p>
<p>You will usually see the amount owed in Billing (in some accounts it's called Payment activity or Billing and payments, inside Business Settings or Ads Manager). There is normally an option there to pay the balance now, either with the same card once it's fixed or with a different payment method.</p>
<blockquote class="bl-quote"><p>An unpaid balance is a payment problem, not a policy problem. Fix the card first, then pay the balance.</p></blockquote>

<h2 id="fix-order">In what order should I fix it?</h2>
<p>Start with the card and the bank, then the details in Meta, then pay the balance. Retrying the same card again and again before fixing anything often makes the bank block it harder.</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Stop retrying.</b> Several failed attempts in a row can get the card flagged.</li>
    <li><b>Check the card in your banking app.</b> Look for settings like international transactions, online or e-commerce payments, and turn them on if they are off.</li>
    <li><b>Check the limits.</b> Make sure the online or international limit is higher than your Meta billing threshold.</li>
    <li><b>Call the bank</b> if it still fails. Ask them to allow the charge (script below).</li>
    <li><b>Check your details in Meta.</b> Name, billing address, country and expiry date should match the card exactly.</li>
    <li><b>Pay the outstanding balance</b> from the billing screen, then wait for ads to start delivering again.</li>
  </ol>
</div>

<h2 id="what-to-say-to-bank">What should I say to my bank?</h2>
<p>Tell them plainly that you are paying for online advertising with an international merchant, give the amount and the date it failed, and ask them to enable international and online payments on the card and remove any block on that merchant. Keep it short. The person on the phone needs the merchant, the amount and what you want changed.</p>
<div class="bl-copy">
  <div class="bl-copy__top"><p class="bl-copy__h" id="bank-h">What to tell your bank</p><button class="bl-copy__btn" type="button" data-copy="Hello, my card payment to Facebook / Meta for online advertising was declined on [date] for [amount]. Please enable international and online (e-commerce) payments on this card, raise my online limit to [amount] if needed, and remove any block on charges from Meta Platforms. I authorise these charges." data-copy-name="bank_script" data-cta="blog_copy_bank_script"><span data-copy-label>Copy the script</span></button></div>
  <pre class="bl-copy__pre" aria-labelledby="bank-h">Hello, my card payment to Facebook / Meta for
online advertising was declined on [date] for
[amount].

Please enable international and online (e-commerce)
payments on this card, raise my online limit to
[amount] if needed, and remove any block on charges
from Meta Platforms. I authorise these charges.</pre>
  <p class="bl-copy__note">Check the merchant name on your bank statement or the decline SMS and use that exact name. Never share your card PIN or OTP on the call.</p>
</div>

<h2 id="prepaid-funds">Can I use prepaid funds instead of a card?</h2>
<p>Possibly. In some countries and currencies, Meta lets you add money to the ad account in advance (often called prepaid funds or manual payments) instead of being charged automatically. What is available depends on your account's country and currency, and it changes, so check Payment methods in your billing settings to see what your account offers.</p>
<p>If prepaid is available, it removes the surprise of a failed threshold charge, because ads simply stop when the funds run out. If it isn't, the card route above is your option. Adding a second card as a backup payment method also helps, so a single failed charge doesn't stop everything.</p>

<h2 id="prevent-it">How do I stop this happening again?</h2>
<p>Use a card you control that is set up for international online payments, keep its limit well above your billing threshold, and add a backup payment method. Don't share one card across many ad accounts you don't manage, and don't let other people add your card to their accounts.</p>
<p>Also keep an eye on your billing threshold. If spend grows, the charges get bigger, and a card that worked last month can hit its limit this month. And never pay anyone who offers to "unlock" or "unrestrict" your account for a fee. A real unpaid balance is cleared from inside Meta's own billing screens.</p>
<p>Payment problems feel scary because the ads stop, but they are usually the easiest thing in Meta to fix. Work through it in order and keep notes of what the bank told you.</p>
<p class="bl-sign">If your account is restricted for something other than billing, or you want it checked properly, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>. If you're launching a new store, my <a href="https://askmoiz.digital/blog/meta-ads-launch-checklist-new-store/" data-cta="blog_body_launch_checklist">launch checklist</a> covers billing too, and <a href="https://askmoiz.digital/services/managed-ads/" data-cta="blog_body_managed">managed ads</a> takes the whole account off your hands.</p>
<h2>Questions people ask me about Meta ad payments</h2><h3>Will my ads start again after I pay the unpaid balance?</h3><p>Usually, yes. An unpaid balance restriction pauses delivery until the amount is paid. Once the payment goes through, ads normally start delivering again. If they don&#x27;t, check Account Quality in Meta for any other restriction that has nothing to do with billing.</p><h3>Can I use a debit card for Facebook ads?</h3><p>Many people do, as long as the card is enabled for international and online payments and has enough limit and balance. Check those settings in your banking app first. If the bank keeps declining, ask them directly whether the card supports international online merchants.</p><h3>What is the billing threshold on Meta?</h3><p>With automatic payments, Meta charges you when your spend reaches a set amount or on your monthly billing date, whichever comes first. That amount is your billing threshold. If your card limit is lower than the threshold, the charge can fail.</p><h3>Should I use someone else&#x27;s card to pay for my ads?</h3><p>I don&#x27;t recommend it. Use a card you control, in your own or your business&#x27;s name, with details that match your billing settings. Borrowed cards cause mismatches and lose you access when that person changes or cancels the card.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to cut fake COD orders with WhatsApp confirmation</title>
      <link>https://askmoiz.digital/blog/fake-cod-orders-whatsapp-confirmation/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/fake-cod-orders-whatsapp-confirmation/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>E-commerce</category>
      <category>Meta Ads</category>
      <description>A COD order is only a promise to pay. Here&#x27;s how I confirm orders on WhatsApp before dispatch, with scripts you can copy, and why it matters for your ads.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> To cut fake and refused COD orders, send every order a short WhatsApp message with the items, order total and address, and ask the customer to reply YES or NO. Call when there&#x27;s no reply or the order looks risky, dispatch only confirmed orders, and send confirmed or delivered orders back to Meta and Google instead of every placed order.</p><ul><li>Confirmation catches fake orders and honest mistakes before you pay for shipping.</li><li>Keep the message short, with order number, total, address and a clear YES or NO.</li><li>Call for no replies, high value orders and strange addresses.</li><li>Feeding every placed order to ad platforms teaches them to find more refusals.</li><li>Track placed, confirmed and delivered orders per campaign every week.</li></ul><p>Every COD store owner I work with has a story about the parcel that came back. The customer's phone was off. The address was a mosque. Someone ordered as a joke. The courier charged both ways, the stock sat in a warehouse for a week, and the ad that brought the order is still being told it found a buyer.</p>
<p>You can't stop every refused parcel, but you can stop a lot of them before they leave your warehouse. The simplest tool most COD stores already have is WhatsApp. Here is how I set up confirmation, and why it matters for your ads too.</p>

<h2 id="why-confirm">Why should I confirm COD orders before dispatch?</h2>
<p>Confirming before dispatch filters out fake, mistaken and impulse orders before you pay for shipping on them. On cash on delivery, the customer risks nothing by ordering. A short confirmation step asks them to commit once, while the order is fresh in their mind.</p>
<p>It also catches honest problems: a wrong number, an incomplete address, a size they want to change, or a customer who ordered twice by accident. Each of those would otherwise become a returned parcel.</p>
<blockquote class="bl-quote"><p>A COD order isn't a sale. It's a promise to maybe pay later. Confirmation turns more promises into sales.</p></blockquote>

<h2 id="what-to-send">What message should I send on WhatsApp?</h2>
<p>Send one short message soon after the order is placed, with the order number, the items, the total (in PKR, AED or your own currency), the delivery address and a clear question: confirm or cancel. Keep it friendly and make replying easy.</p>
<p>Here are the two versions I start from. Use the language your customers use with you.</p>
<div class="bl-copy">
  <div class="bl-copy__top"><p class="bl-copy__h" id="confirm-en-h">Order confirmation (English)</p><button class="bl-copy__btn" type="button" data-copy="Hi [Name], thank you for your order from [Store]!&#10;&#10;Order #[number]&#10;[Items]&#10;Total: PKR [amount] (cash on delivery)&#10;Address: [address]&#10;&#10;Please reply YES to confirm, or NO to cancel. We will dispatch once you confirm." data-copy-name="cod_confirm_en" data-cta="blog_copy_cod_confirm_en"><span data-copy-label>Copy the message</span></button></div>
  <pre class="bl-copy__pre" aria-labelledby="confirm-en-h">Hi [Name], thank you for your order from [Store]!

Order #[number]
[Items]
Total: PKR [amount] (cash on delivery)
Address: [address]

Please reply YES to confirm, or NO to cancel.
We will dispatch once you confirm.</pre>
  <p class="bl-copy__note">Fill in the brackets from the order. Keep the total and address in the message so the customer can spot mistakes.</p>
</div>
<div class="bl-copy">
  <div class="bl-copy__top"><p class="bl-copy__h" id="confirm-ru-h">Order confirmation (Roman Urdu)</p><button class="bl-copy__btn" type="button" data-copy="Assalam o Alaikum [Name], [Store] se order karne ka shukriya!&#10;&#10;Order #[number]&#10;[Items]&#10;Total: PKR [amount] (cash on delivery)&#10;Address: [address]&#10;&#10;Order confirm karne ke liye YES likhein, cancel karne ke liye NO. Confirm hote hi hum parcel dispatch kar denge." data-copy-name="cod_confirm_ru" data-cta="blog_copy_cod_confirm_ru"><span data-copy-label>Copy the message</span></button></div>
  <pre class="bl-copy__pre" aria-labelledby="confirm-ru-h">Assalam o Alaikum [Name], [Store] se order karne ka shukriya!

Order #[number]
[Items]
Total: PKR [amount] (cash on delivery)
Address: [address]

Order confirm karne ke liye YES likhein, cancel karne ke liye NO.
Confirm hote hi hum parcel dispatch kar denge.</pre>
  <p class="bl-copy__note">Adjust the tone to match how your store already talks to customers.</p>
</div>
<p>If you send these automatically through the WhatsApp Business API or an app that uses it, the message usually has to be an approved template. With the free WhatsApp Business app, you can save it as a quick reply. I compare the two in <a href="https://askmoiz.digital/blog/whatsapp-business-app-vs-api-stores/" data-cta="blog_body_whatsapp_api">WhatsApp Business app vs API for stores</a>.</p>

<h2 id="when-to-call">When should I call instead of messaging?</h2>
<p>Call when the order carries more risk than usual or the customer hasn't replied. A phone call takes longer, so save it for the orders where it pays off.</p>
<ul>
  <li><strong>No reply</strong> after a few hours, or by the end of the day.</li>
  <li><strong>High value orders,</strong> where one return costs you a lot.</li>
  <li><strong>Incomplete or strange addresses,</strong> or a city you rarely deliver to.</li>
  <li><strong>Repeat orders from the same number</strong> in a short time, or a number with past refusals.</li>
  <li><strong>The customer asked a question</strong> in their reply that's easier to answer by voice.</li>
</ul>
<p>Decide a rule for what happens if you still can't reach them, for example hold the order for a day, then cancel. Write it down so your team does it the same way every time.</p>

<h2 id="feed-ad-platforms">Why should only confirmed or delivered orders go back to ad platforms?</h2>
<p>Because Meta and Google learn from the conversions you send them. If every placed order counts as a purchase, they learn to find more people like the ones who ordered and then refused. That makes fake orders cheaper to get, not rarer.</p>
<aside class="note note--sun" aria-label="Cash on delivery note">
  <span class="sticker sticker--ink note__tag" style="--rot:-3deg">COD note</span>
  
  <div class="note__body"><p>Keep the normal Purchase event, but also send confirmed or delivered orders back to Meta from your server as a separate event, and judge campaigns on that event. On Google Ads, retract cancelled orders with conversion adjustments or upload confirmed orders as offline conversions. I explain the Meta side in <a href="https://askmoiz.digital/blog/meta-ads-after-ios-updates/#capi" data-cta="blog_body_meta_capi">setting up the Conversions API</a>.</p></div>
</aside>
<p>Even if you can't automate it yet, track confirmed and delivered orders in a sheet next to each campaign. You will often find that the campaign with the cheapest orders isn't the one with the cheapest delivered orders.</p>

<h2 id="measure-it">How do I know confirmation is working?</h2>
<p>Track three numbers every week: orders placed, orders confirmed and orders delivered. If confirmation is working, fewer parcels come back, even if fewer orders are dispatched.</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Send the confirmation message</b> soon after every COD order.</li>
    <li><b>Call when there's no reply</b> or the order looks risky.</li>
    <li><b>Dispatch only confirmed orders,</b> with a written rule for the rest.</li>
    <li><b>Log placed, confirmed and delivered</b> for each campaign.</li>
    <li><b>Send confirmed or delivered orders</b> back to Meta and Google.</li>
  </ol>
</div>
<p>Once you have delivered orders per campaign, you can judge ads on real money. I cover how in <a href="https://askmoiz.digital/blog/roas-poas-blended-roas/" data-cta="blog_body_roas">ROAS vs POAS vs blended ROAS</a>.</p>
<p class="bl-sign">If fake orders are eating your margin and you want the whole loop set up, <a href="https://askmoiz.digital/services/managed-ads/" data-cta="blog_body_managed">managed ads</a> covers it. To talk it through first, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>.</p>
<h2>Questions people ask me about fake COD orders</h2><h3>Will asking customers to confirm reduce my orders?</h3><p>It can reduce dispatched orders, because some people won&#x27;t confirm. Those are mostly the orders that would have come back anyway. Judge it on delivered orders and money collected, not on orders placed.</p><h3>Can I automate WhatsApp order confirmation?</h3><p>Yes. Many Shopify apps send confirmation messages through the WhatsApp Business API, usually as an approved template, and mark the order based on the reply. With the free WhatsApp Business app, you can save the message as a quick reply and send it by hand.</p><h3>Should I take an advance payment instead?</h3><p>For high value orders, or customers with past refusals, a small advance or full prepayment can make sense. For most orders it adds friction many COD buyers don&#x27;t like. I&#x27;d start with confirmation and use advances only for the risky cases.</p><h3>How do I send confirmed orders back to Meta?</h3><p>Keep the normal Purchase event, and send confirmed or delivered orders as a separate event from your server through the Conversions API, either with an app or a developer. Then judge campaigns on that event instead of placed orders.</p>]]></content:encoded>
    </item>
    <item>
      <title>GA4 purchase tracking audit for COD stores: the checklist I use</title>
      <link>https://askmoiz.digital/blog/ga4-purchase-tracking-cod-audit/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/ga4-purchase-tracking-cod-audit/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Tracking</category>
      <category>E-commerce</category>
      <description>If GA4 counts purchases wrong, every report built on it is wrong too. This is the checklist I run on cash on delivery stores before I trust a single number.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> To audit GA4 purchase tracking on a COD store, check that purchase fires once per order with a unique transaction_id, the right value and your store&#x27;s currency. Remove duplicate tags from the theme, apps and Tag Manager, test in DebugView, then compare GA4 purchases with Shopify orders. Don&#x27;t expect GA4 to match the courier sheet.</p><ul><li>Purchase should fire once per order, on the order confirmation, never on page reloads.</li><li>Every purchase needs a unique transaction_id, value and the correct currency code, like PKR or AED.</li><li>Theme code, the Google channel app and Tag Manager can all send purchase. Keep one.</li><li>Use DebugView with a test order to see exactly what GA4 receives.</li><li>GA4 counts placed orders. The courier sheet counts delivered ones. They will never match.</li></ul><p>Before I touch a store's ads, I check whether GA4 is counting purchases correctly. If it isn't, every report built on it is wrong: revenue, conversion rate, best selling products, and any Google Ads conversion imported from it.</p>
<p>On cash on delivery stores there are extra traps, because a placed order is not a paid order. This is the audit I run, in the order I run it.</p>

<h2 id="fires-once">Is the GA4 purchase event firing once per order?</h2>
<p>It should fire exactly once, when the order is confirmed, and never again for the same order. Firing twice inflates revenue. Not firing at all hides sales. Both are common.</p>
<p>Place a test order and watch what GA4 receives. Then reload the order confirmation page and see whether purchase fires again. On many themes and custom checkouts, it does. Also check that purchase doesn't fire on the cart or checkout page by mistake, which happens when a tag is set to fire on "all pages".</p>
<figure class="bl-callout">
  <figcaption class="bl-callout__k">The rule for purchase tracking</figcaption>
  <p class="bl-callout__num">1 order = 1 purchase</p>
  <p>Same order, same transaction ID, sent once. Anything else means a tag needs fixing.</p>
</figure>

<h2 id="parameters">What parameters should the purchase event send?</h2>
<p>At minimum, purchase should send a unique transaction_id, the order value and the currency, plus the items in the order. Currency should be your store's currency, for example PKR in Pakistan or AED in the UAE, and value should match what the customer was charged.</p>
<ul>
  <li><strong>transaction_id.</strong> Use your store's order number. It lets you match GA4 against Shopify, and GA4 can use it to spot repeated purchases.</li>
  <li><strong>value.</strong> Decide whether it includes shipping and tax, write that down, and keep it the same everywhere.</li>
  <li><strong>currency.</strong> Your store's currency code, such as PKR, AED or GBP. If it's missing or set to USD, revenue reports will be wrong or empty.</li>
  <li><strong>items.</strong> Product name, ID, price and quantity, so product reports work.</li>
</ul>

<h2 id="duplicate-tags">Why is GA4 counting purchases twice?</h2>
<p>Usually because more than one thing is sending the purchase event. On Shopify stores I often find GA4 code pasted into the theme, the Google and YouTube channel app connected to GA4, and a Tag Manager container with its own GA4 tags, all at once.</p>
<p>Pick one source and remove the others. On Shopify, the Google channel app is usually the simplest choice for GA4. Keep GA4 in that app on Shopify, because theme code no longer runs on the thank-you page and Google doesn't support Tag Manager inside Shopify custom pixels. On WooCommerce or a custom site, Tag Manager is a good single source. Install Google Tag Assistant and look at a product page: if you see the same GA4 measurement ID loading twice, you have a duplicate.</p>
<p>If Tag Manager is part of your setup, I go through which tags a store needs in <a href="https://askmoiz.digital/blog/gtm-five-tags-pakistani-store/" data-cta="blog_body_gtm">the handful of GTM tags most stores need</a>.</p>

<h2 id="debugview">How do I test GA4 purchases in DebugView?</h2>
<p>Turn on debug mode, place a test order and open DebugView in GA4 admin. You'll see each event arrive in real time, and you can click purchase to read every parameter it sent.</p>
<p>The easiest way to turn on debug mode is Tag Manager's Preview mode, or the Tag Assistant browser extension. Then check the purchase event for transaction_id, value, currency and items. Cancel the test order in Shopify afterwards so it doesn't count as a sale.</p>

<h2 id="compare-shopify">How do I compare GA4 purchases with Shopify orders?</h2>
<p>Pick one full week, count online orders in Shopify, and count purchases in GA4 for the same dates. Then look at the gap. A small, steady gap with GA4 lower is normal. GA4 higher than Shopify almost always means duplicates.</p>
<p>For a closer look, export the transaction IDs from a GA4 exploration and compare them with Shopify order numbers. Missing IDs show orders GA4 never saw. Repeated IDs show duplicates. Leave out orders your team created by hand for phone or WhatsApp customers, because they never touched the website.</p>
<blockquote class="bl-quote"><p>You are not trying to make GA4 match Shopify perfectly. You are trying to know why it doesn't.</p></blockquote>

<h2 id="courier-sheet">Why will GA4 never match the courier sheet?</h2>
<p>Because GA4 counts orders placed on the website, and your courier sheet counts parcels that were delivered and paid for. On COD those are different numbers, and they should be.</p>
<aside class="note note--sun" aria-label="Cash on delivery note">
  <span class="sticker sticker--ink note__tag" style="--rot:-3deg">COD note</span>
  
  <div class="note__body"><p>Between the website and the courier, orders get cancelled on WhatsApp confirmation, refused at the door, or returned. GA4 never hears about any of that. Use GA4 to understand the website, and use your store and courier data for real revenue. For ad platforms, send cancelled or delivered orders back through their own tools, as I explain in <a href="https://askmoiz.digital/blog/google-ads-pakistan-ecommerce-settings/#tracking" data-cta="blog_body_google_tracking">conversion tracking for COD stores on Google Ads</a>.</p></div>
</aside>

<h2 id="audit-checklist">My GA4 purchase audit checklist</h2>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Purchase fires once</b> per test order, and not again on reload.</li>
    <li><b>transaction_id is the order number,</b> unique every time.</li>
    <li><b>Value and currency are right,</b> with currency set to your store's currency.</li>
    <li><b>Only one source sends GA4 events:</b> theme, app or Tag Manager.</li>
    <li><b>DebugView shows every parameter</b> on a test purchase.</li>
    <li><b>GA4 and Shopify compared</b> for one full week, gap explained.</li>
    <li><b>Courier data kept separate</b> for delivered revenue.</li>
  </ol>
</div>
<p>Run this once properly, then repeat the Shopify comparison every month and after any theme or app change.</p>
<p class="bl-sign">If you want to learn tracking step by step, <a href="https://askmoiz.digital/services/academy/" data-cta="blog_body_course">the course covers it</a>. If you'd rather audit your store with me, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>.</p>
<h2>Questions people ask me about GA4 purchase tracking</h2><h3>Why does GA4 show fewer purchases than Shopify?</h3><p>Some shoppers block analytics, decline cookies or leave before the confirmation page loads, so GA4 never sees those orders. Orders created by your team for phone or WhatsApp customers also never touch the website. A small, steady gap is normal. A sudden change usually means a tag broke.</p><h3>Why does GA4 show more purchases than Shopify?</h3><p>That almost always means purchase is firing more than once. Common causes are two tags sending the same event, or the confirmation page firing again when the customer reloads it. Check the transaction_id values in your purchase report. The same ID appearing twice tells you it is a duplicate.</p><h3>Should I track delivered COD orders in GA4?</h3><p>GA4 is good at what happened on the website. Delivery happens later, off the website, so I keep delivered orders in the store or courier sheet and use that for profit. If you need delivered sales in your ad platforms, use their own offline or adjustment tools instead of forcing it into GA4.</p>]]></content:encoded>
    </item>
    <item>
      <title>The 15-minute weekly search terms check I run on every Google Ads account</title>
      <link>https://askmoiz.digital/blog/google-ads-search-terms-weekly-check/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/google-ads-search-terms-weekly-check/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Google Ads</category>
      <description>The search terms report shows what people really typed before they clicked. Fifteen minutes a week in it stops most of the waste I find in the accounts I audit.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> Once a week, open the search terms report for the last 7 days, sort by cost and read the top terms. Flag searches with the wrong intent: jobs, free, used, DIY, competitor names, cities you don&#x27;t serve and information queries. Add them as negatives at the right level, keep common ones in a shared list, and add proven winners as keywords.</p><ul><li>Look at the last 7 days, sorted by cost, so the expensive mistakes come first.</li><li>Wrong intent is the main thing to catch: jobs, free, used, DIY, how to and kaise searches.</li><li>Add negatives at the campaign or ad group level depending on where the term is wrong, and use shared lists for terms that are wrong everywhere.</li><li>Use phrase or exact match negatives when a broad negative would block good searches.</li><li>Add a search term as a keyword only after it has brought real conversions, not just clicks.</li></ul><p>Keywords are what you tell Google you want. Search terms are what people actually typed before they clicked your ad. Those two lists are rarely the same, and the gap between them is where most Google Ads budgets leak.</p>
<p>I check the search terms report on every account I manage, every week. It takes about 15 minutes once you have a routine. Here is the routine, step by step, with the things I look for.</p>

<h2 id="where-is-the-report">Where is the search terms report in Google Ads?</h2>
<p>The search terms report sits under Insights and reports in the left menu of Google Ads, then Search terms. Google moves menus around, so if you can't find it there, use the search bar at the top of the account and type "search terms".</p>
<p>Set the date range to the last 7 days. Add the columns for cost, conversions and cost per conversion if they aren't already showing. Then sort by cost, highest first. That way the expensive mistakes are at the top, and you can stop reading when the costs get small.</p>
<p>You will also see a row for search terms that Google doesn't show for privacy reasons. You can't act on those, so don't worry about them. Work on what you can see.</p>

<h2 id="what-to-look-for">What should I look for in my search terms?</h2>
<p>Look for searches where the person was never going to buy from you. For each term near the top, ask one question: would someone typing this want to buy what I sell, from a store like mine? These are the patterns I see most often:</p>
<div class="bl-table" role="region" aria-labelledby="cap-terms" tabindex="0">
  <table class="bl-tbl">
    <caption id="cap-terms">Search terms that usually waste money, and why</caption>
    <thead><tr><th scope="col">Pattern</th><th scope="col">Example searches</th><th scope="col">Why it wastes money</th></tr></thead>
    <tbody>
      <tr><th scope="row">Jobs and careers</th><td data-label="Example searches">jobs, salary, vacancy, hiring</td><td data-label="Why it wastes money">They want to work for a company like yours, not buy from it.</td></tr>
      <tr><th scope="row">Free and cheap hunting</th><td data-label="Example searches">free, free download, sample</td><td data-label="Why it wastes money">They don't plan to pay at your price.</td></tr>
      <tr><th scope="row">Used and repair</th><td data-label="Example searches">used, second hand, olx, repair</td><td data-label="Why it wastes money">Wrong product, unless you sell these.</td></tr>
      <tr><th scope="row">DIY and information</th><td data-label="Example searches">how to, kaise, banane ka tarika, diy</td><td data-label="Why it wastes money">They want to learn, not order.</td></tr>
      <tr><th scope="row">Competitor names</th><td data-label="Example searches">another brand's name plus your product</td><td data-label="Why it wastes money">Most of them want that brand.</td></tr>
      <tr><th scope="row">Location noise</th><td data-label="Example searches">a city or country you don't deliver to</td><td data-label="Why it wastes money">You can't serve them, even if they want to buy.</td></tr>
    </tbody>
  </table>
</div>
<p>Searches in your buyers' own language deserve a careful read. In Roman Urdu, "kaise" and "tarika" usually mean someone wants to learn. But "price in Pakistan" or "online order" can be your best buyers. The same goes for Arabic, Hindi or any language your customers type in. Don't block a whole language. Block the intent.</p>

<h2 id="right-level">At what level should I add negative keywords?</h2>
<p>Add a negative at the level where the search is wrong, and no higher. If a term is wrong for your whole store, add it to a shared list. If it is only wrong for one campaign or one ad group, add it there.</p>
<ul>
  <li><strong>Ad group level.</strong> Useful when one ad group is catching searches meant for another. A "men's watches" ad group catching "ladies watch" searches should get "ladies" as a negative, so those searches go to the right ad group.</li>
  <li><strong>Campaign level.</strong> For terms that are wrong for everything in that campaign, like a city you don't deliver to.</li>
  <li><strong>Shared negative list.</strong> For terms that are wrong across the whole account: jobs, free, used, and so on.</li>
</ul>
<p>Match type matters for negatives too. A broad negative blocks any search that contains all its words, in any order. Phrase and exact negatives are narrower. Negatives also don't cover close variants the way normal keywords do, so you may need to add plurals and common misspellings yourself.</p>

<h2 id="shared-lists">How do shared negative keyword lists work?</h2>
<p>A shared negative keyword list is one list you build once and apply to many campaigns. You find it in the Shared library, under negative keyword lists. Change the list once and every campaign using it updates.</p>
<p>I keep a starter list on every account, then add to it each week from the report. I covered the day one version of this in <a href="https://askmoiz.digital/blog/google-ads-pakistan-ecommerce-settings/#negatives" data-cta="blog_body_google_settings">the five settings I change on every new account</a>. Here is a starting point you can copy:</p>
<div class="bl-copy">
  <div class="bl-copy__top"><p class="bl-copy__h" id="weekly-neg-h">Account-wide negative list</p><button class="bl-copy__btn" type="button" data-copy="jobs&#10;job&#10;salary&#10;vacancy&#10;hiring&#10;free&#10;used&#10;second hand&#10;olx&#10;repair&#10;how to&#10;kaise&#10;tarika&#10;diy" data-copy-name="weekly_negative_keywords" data-cta="blog_copy_weekly_negatives"><span data-copy-label>Copy the list</span></button></div>
  <pre class="bl-copy__pre" aria-labelledby="weekly-neg-h">jobs
job
salary
vacancy
hiring
free
used
second hand
olx
repair
how to
kaise
tarika
diy</pre>
  <p class="bl-copy__note">Remove any word that describes what you actually sell before you paste it into Google Ads.</p>
</div>

<h2 id="add-winners">When should I add a search term as a keyword?</h2>
<p>Add a search term as its own keyword when it has brought real conversions at a cost you are happy with, not just clicks. A term that got a lot of clicks and no orders is a warning, not a winner.</p>
<p>When a term earns it, add it as an exact or phrase match keyword in the ad group it fits best. That gives you control over the bid and the ad text for that search. On cash on delivery, judge it on orders that were actually delivered if you can, because a placed order is not yet a sale.</p>
<blockquote class="bl-quote"><p>Negatives stop the waste. Winners tell you what to build more of. You need both from the same report.</p></blockquote>

<h2 id="weekly-routine">My 15-minute weekly routine</h2>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Open the search terms report</b> for the last 7 days, sorted by cost.</li>
    <li><b>Read the top terms</b> until the costs get small.</li>
    <li><b>Flag wrong intent:</b> jobs, free, used, DIY, competitors and locations you don't serve.</li>
    <li><b>Add negatives at the right level,</b> and put account-wide terms in the shared list.</li>
    <li><b>Check your negatives aren't too broad</b> by searching the report for words you just blocked.</li>
    <li><b>Promote winners</b> that brought real orders as exact or phrase keywords.</li>
  </ol>
</div>
<p>Do it on the same day every week. Fifteen minutes is enough once it becomes a habit, and the report gets shorter as your negative lists grow.</p>
<p class="bl-sign">If you want to learn Google Ads properly, <a href="https://askmoiz.digital/services/academy/" data-cta="blog_body_course">the course covers it step by step</a>. If you'd rather go through your own report with me, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>.</p>
<h2>Questions people ask me about the search terms report</h2><h3>How often should I check the Google Ads search terms report?</h3><p>Once a week is enough for most accounts. In the first month of a new campaign I check every few days, because that is when the most waste shows up. After that, a fixed 15 minutes on the same day each week keeps it under control without turning it into a full time job.</p><h3>Why do some search terms show as &#x27;other search terms&#x27;?</h3><p>Google hides search terms that only a small number of people searched, for privacy reasons. You can see the cost of that hidden group but not the words in it. You can&#x27;t fix what you can&#x27;t see, so focus on the visible terms, which usually cover the expensive mistakes.</p><h3>Should I add a negative keyword for my competitors&#x27; names?</h3><p>Usually yes, unless you are running a competitor campaign on purpose. People searching for another brand by name mostly want that brand. If you do want to test competitor terms, put them in their own campaign with their own budget so they don&#x27;t hide inside your main numbers.</p><h3>Can I see search terms for Performance Max?</h3><p>Yes. Performance Max now has its own search terms report showing the searches that triggered your ads, and you can add negative keywords at campaign or account level to block the waste you find. Check it weekly, the same as Search.</p>]]></content:encoded>
    </item>
    <item>
      <title>Google Search ads for service businesses: how I set them up</title>
      <link>https://askmoiz.digital/blog/google-ads-service-business-pakistan/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/google-ads-service-business-pakistan/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Google Ads</category>
      <description>Clinics, coaching centres, home services and B2B firms all sell to people nearby. This is how I set up Google Search ads so the leads are real, local and countable.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> For a local service business, run Google Search ads only in the city or area you serve, with location options set to Presence. Build one ad group per service with a short list of buying keywords, track calls, WhatsApp clicks and form leads separately, send each to a page about that service, and judge cost per qualified lead, not cost per lead.</p><ul><li>Target only the cities or radius you can serve, with Presence, not Presence or interest.</li><li>Group keywords by service, and keep each list short and close to how people really search.</li><li>Track calls, WhatsApp clicks and forms as separate conversion actions.</li><li>Send each ad group to a page about that one service, with the phone and WhatsApp buttons easy to find.</li><li>Mark which leads were real and work out cost per qualified lead before you scale.</li></ul><p>A dental clinic in Gulberg, a tuition academy in Karachi, an AC repair service in Dubai and a B2B supplier all have the same problem with Google Ads. They don't sell to the whole country. They sell to people nearby who need the service now.</p>
<p>Most service accounts I review were set up like an online store. Broad targeting, too many keywords, and a lead counted every time someone tapped a button. This is how I set them up instead.</p>

<h2 id="city-targeting">How should a local service business target locations?</h2>
<p>Target only the cities, areas or radius you can actually serve, and set location options to Presence. That way your ads reach people who are in or regularly in your area, not people abroad who are only interested in it.</p>
<p>In campaign settings, under Locations, add your city or set a radius around your address. A clinic might use a few kilometres. A home services company might use the whole city. A B2B firm might use several cities. Then open Location options and pick Presence. The default also reaches people who have only shown interest in your location, and a person in Dubai can't book a home visit in Lahore.</p>
<figure class="bl-callout">
  <figcaption class="bl-callout__k">Location options for a local service</figcaption>
  <p class="bl-callout__num">Presence only</p>
  <p>People in, or regularly in, the area you serve. Check the locations report after a week to see where clicks really came from.</p>
</figure>
<p>The same settings logic applies to stores, and I cover the rest of it in <a href="https://askmoiz.digital/blog/google-ads-pakistan-ecommerce-settings/#location" data-cta="blog_body_google_settings">the five settings I change on every new account</a>.</p>

<h2 id="keywords-by-service">How many keywords does a service campaign need?</h2>
<p>Fewer than you think. Build one ad group per service, and give each one a short list of keywords that a person would type when they want to book or buy that service.</p>
<p>A clinic offering teeth whitening, braces and root canal treatment should have three ad groups, not one. Each one gets its own keywords, its own ads and its own landing page. Good service keywords usually include the service plus a signal of intent:</p>
<ul>
  <li>The service and the city, like "dentist in Lahore" or "IELTS classes Karachi".</li>
  <li>Price and booking words, like "fee", "charges", "appointment" or "near me".</li>
  <li>The specific problem, like "AC not cooling repair".</li>
</ul>
<p>Use phrase and exact match while the account is new, so you can see what you're paying for. Add negatives for jobs, training, salary, free and "how to" searches from day one. Then check the search terms every week, as I explain in <a href="https://askmoiz.digital/blog/google-ads-search-terms-weekly-check/" data-cta="blog_body_search_terms">my weekly search terms check</a>.</p>

<h2 id="call-whatsapp-tracking">How do I track calls and WhatsApp leads from Google Ads?</h2>
<p>Track each type of lead as its own conversion action: calls from the ad, calls from the website, WhatsApp clicks and form submissions. If they all count as one "lead", you can't tell which one brings real customers.</p>
<ul>
  <li><strong>Calls from ads.</strong> Add a call asset to your ads. Where Google forwarding numbers are available you can count only calls above a minimum length, but Pakistan and the UAE aren't on that list, so there you'll see call clicks and should log real calls in your lead sheet.</li>
  <li><strong>Calls and WhatsApp clicks on your site.</strong> Track clicks on the phone number and the WhatsApp button, usually through Google Tag Manager.</li>
  <li><strong>Forms.</strong> Track the thank you page or the form submission, once per lead.</li>
</ul>
<p>I set WhatsApp clicks as secondary at the start. A click on the WhatsApp button only means the chat window opened. Many people never send the message.</p>

<h2 id="landing-page">What should the landing page for a service ad include?</h2>
<p>The landing page should be about the one service in the ad, in the city in the ad, with the phone number and WhatsApp button easy to find on a phone. Sending every ad to your home page makes people search for the answer again.</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>A headline that matches the search,</b> like the service name and the area.</li>
    <li><b>Call and WhatsApp buttons</b> visible without scrolling on a phone.</li>
    <li><b>Timings, location and service area,</b> so people know you can help them.</li>
    <li><b>Fees or a starting price,</b> if you're comfortable showing it.</li>
    <li><b>Proof:</b> real reviews, photos of your work or team, qualifications.</li>
    <li><b>A short form</b> for people who don't want to call.</li>
  </ol>
</div>

<h2 id="qualified-leads">Why does cost per lead lie for service businesses?</h2>
<p>Cost per lead counts every call, chat and form as equal. They aren't. Some people want a job, some want a free answer, some are outside your area, and some book. Until you know which leads were real, a low cost per lead can hide a campaign that brings no customers.</p>
<aside class="note note--sun" aria-label="WhatsApp leads note">
  <span class="sticker sticker--ink note__tag" style="--rot:-3deg">WhatsApp note</span>
  
  <div class="note__body"><p>In Pakistan and many other markets where WhatsApp is the default chat app, most service leads end up there. Ask whoever answers the chats to mark each lead in a simple sheet: date, source, service, and whether it was qualified, booked or junk. Without that sheet you are guessing.</p></div>
</aside>
<p>After a few weeks, divide spend by qualified leads, not all leads. Once you have the data, send qualified leads back to Google as offline conversions, so bidding learns from real customers instead of button taps.</p>
<blockquote class="bl-quote"><p>A cheap lead that never books is not cheap. Judge the campaign on the leads your team would call good.</p></blockquote>

<h2 id="before-you-spend">Before you spend on a service campaign</h2>
<p>Check five things: city or radius targeting with Presence, one ad group per service, separate tracking for calls, WhatsApp and forms, a page for each service, and a sheet that marks lead quality. Get those right first, then work on bids and budget.</p>
<p>None of this needs a big budget. It needs a clear setup and someone honest about which leads were real.</p>
<p class="bl-sign">If you'd like me to set up and run this for your business, <a href="https://askmoiz.digital/services/managed-ads/" data-cta="blog_body_managed">see managed ads</a>. If you want a second opinion on your current account first, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>.</p>
<h2>Questions people ask me about Google Ads for service businesses</h2><h3>Should a local service business use Performance Max?</h3><p>I start service businesses on Search. You choose the keywords, you see the search terms, and the leads come from people who are looking for the service right now. Performance Max can bring cheaper leads that are harder to qualify. Test it later, with lead quality tracking already in place, and compare on qualified leads.</p><h3>Is a WhatsApp click a lead?</h3><p>Not on its own. A click only means someone opened the chat. Some never send a message. Track WhatsApp clicks as a secondary action so you can see them, and count a lead only when a real conversation starts. Then mark which of those conversations turned into a booking or a quote.</p><h3>Should I run ads in Urdu or another local language?</h3><p>Google Search ads are matched to what people search, and people often search in a different language from the one they speak. In Pakistan, many search in English or Roman Urdu even when they speak Urdu. I write ads in clear, simple English with local details like the area name, timings and fees if you show them. Test local-language or Roman Urdu headlines if your customers write that way.</p><h3>What budget does a local service campaign need?</h3><p>It depends on how many people search for your service in your city and what each click costs there. Use Keyword Planner to check search volume and rough click costs for your area. Start with a budget that can buy enough clicks each day to get a few leads a week, then judge on qualified leads.</p>]]></content:encoded>
    </item>
    <item>
      <title>Google Tag Manager for store owners: the five tags most stores need</title>
      <link>https://askmoiz.digital/blog/gtm-five-tags-pakistani-store/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/gtm-five-tags-pakistani-store/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Tracking</category>
      <description>Tag Manager looks technical, but most stores only need a handful of tags. Here is what each part means, which tags matter, and when Shopify already does the job.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> Most stores need only a few tags in Google Tag Manager: the Google tag for GA4, a GA4 purchase event, a Google Ads purchase conversion, the conversion linker, and a Meta pixel only if the Shopify app isn&#x27;t already sending it. Test everything in Preview mode before publishing. On Shopify, check what the native apps already handle first.</p><ul><li>A container holds your tags. A tag sends data. A trigger says when. A variable fills in details like order value.</li><li>The core set: Google tag for GA4, GA4 purchase, Google Ads conversion and conversion linker.</li><li>Add a Meta pixel tag only if Meta&#x27;s Shopify app isn&#x27;t already sending events.</li><li>On Shopify, the Google and Meta apps may already handle some of this, so don&#x27;t add it twice.</li><li>Always test in Preview mode, then publish with a version name that says what changed.</li></ul><p>When I open a store's Google Tag Manager, I usually find one of two things. Either it's empty because nobody understood it, or it's full of tags nobody remembers adding. Both are fixable.</p>
<p>You don't need to be a developer to understand Tag Manager. Most stores only need a handful of tags. Here is what each part means in plain words, which tags I add, and when Shopify already does the job for you.</p>

<h2 id="what-is-gtm">What is Google Tag Manager in plain words?</h2>
<p>Google Tag Manager is one piece of code on your site that lets you add, change and remove tracking without editing your theme every time. You install it once, then manage everything from the Tag Manager website.</p>
<p>There are four words to learn:</p>
<div class="bl-table" role="region" aria-labelledby="cap-gtm-words" tabindex="0">
  <table class="bl-tbl">
    <caption id="cap-gtm-words">The four Tag Manager words, in plain English</caption>
    <thead><tr><th scope="col">Word</th><th scope="col">What it means</th><th scope="col">Example</th></tr></thead>
    <tbody>
      <tr><th scope="row">Container</th><td data-label="What it means">The box that holds everything for one website.</td><td data-label="Example">One container for your store.</td></tr>
      <tr><th scope="row">Tag</th><td data-label="What it means">A small piece of code that sends data somewhere.</td><td data-label="Example">Tell GA4 a purchase happened.</td></tr>
      <tr><th scope="row">Trigger</th><td data-label="What it means">The rule for when a tag should fire.</td><td data-label="Example">When the order confirmation page loads.</td></tr>
      <tr><th scope="row">Variable</th><td data-label="What it means">A detail the tag fills in at the moment it fires.</td><td data-label="Example">The order value or order number.</td></tr>
    </tbody>
  </table>
</div>
<p>So a purchase tag reads: send a purchase to GA4 (tag), when an order is confirmed (trigger), with this order's value and number (variables).</p>

<h2 id="shopify-first">Do I need Tag Manager if my store is on Shopify?</h2>
<p>Check what your Shopify apps already send before you add anything. Shopify's Google and YouTube app can send GA4 and Google Ads events, and Meta's Facebook and Instagram app handles the pixel and the Conversions API. If you add the same tags in Tag Manager, you count every sale twice.</p>
<aside class="note note--sun" aria-label="Shopify note">
  <span class="sticker sticker--ink note__tag" style="--rot:-3deg">Shopify note</span>
  
  <div class="note__body"><p>On Shopify, theme code no longer runs on the checkout or thank-you pages, and Google doesn't support running Tag Manager inside a Shopify custom pixel. So let the Google &amp; YouTube app send your GA4 and Google Ads purchases, and use Tag Manager on Shopify only for extras on your store pages, like WhatsApp button clicks. On WooCommerce or a custom site, Tag Manager is usually the cleanest way to do all of this.</p></div>
</aside>
<p>Decide one owner for each job. For example, on Shopify: the Google &amp; YouTube app owns GA4 and the Google Ads purchase conversion, Meta's app owns the pixel, and Tag Manager handles only the extras. Write it down.</p>

<h2 id="the-five-tags">Which tags does a store actually need?</h2>
<p>Most stores need four Google tags and, sometimes, one Meta tag. Everything else is optional until you have a clear reason for it.</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Google tag for GA4.</b> Loads GA4 on every page with your measurement ID. Older guides call this the GA4 configuration tag.</li>
    <li><b>GA4 purchase event.</b> Fires once on order confirmation, with transaction ID, value, your store's currency and items.</li>
    <li><b>Google Ads purchase conversion.</b> Fires once per order with value and order ID, so Google Ads can bid on real sales.</li>
    <li><b>Conversion linker.</b> Fires on all pages and stores the ad click details, so the Google Ads conversion can be credited.</li>
    <li><b>Meta pixel,</b> only if Meta's Shopify app or another integration isn't already sending it.</li>
  </ol>
</div>
<p>I explain how to check the GA4 purchase tag properly in <a href="https://askmoiz.digital/blog/ga4-purchase-tracking-cod-audit/" data-cta="blog_body_ga4_audit">my GA4 purchase audit for COD stores</a>, and why the Google Ads tag should be your primary conversion in <a href="https://askmoiz.digital/blog/google-ads-pakistan-ecommerce-settings/#tracking" data-cta="blog_body_google_tracking">the five Google Ads settings I change</a>.</p>

<h2 id="meta-pixel-in-gtm">Should I put the Meta pixel in Tag Manager?</h2>
<p>Only if nothing else is sending it. On Shopify, Meta's own app sends the pixel and the Conversions API with matching event IDs, so Meta can remove duplicates. A second pixel in Tag Manager sends events without those matching IDs, and Meta counts them twice.</p>
<p>If you're not sure what's sending Meta events on your store, I go through how to check in <a href="https://askmoiz.digital/blog/meta-pixel-vs-conversions-api-shopify/" data-cta="blog_body_pixel_capi">Meta pixel vs Conversions API on Shopify</a>.</p>

<h2 id="preview-mode">How do I test tags in Preview mode?</h2>
<p>Click Preview in Tag Manager, enter your store's address, and browse the site in the window that opens. Tag Assistant shows every tag that fired on each page, and every tag that didn't.</p>
<p>Walk through a full purchase: home page, product, cart, checkout, confirmation. On Shopify, Preview can't see the checkout, so confirm test purchases in GA4 Realtime and in Google Ads conversion status instead. On the confirmation, check that each purchase tag fired once and that the variables show the right value and order number. Then cancel the test order in your store.</p>
<blockquote class="bl-quote"><p>If you didn't see it fire in Preview, don't assume it works. Test the whole purchase, every time you change something.</p></blockquote>

<h2 id="publish-safely">How do I publish Tag Manager changes safely?</h2>
<p>Publish only after Preview looks right, and give every version a name that says what changed. Tag Manager keeps every published version, so if something breaks you can publish the last good one again.</p>
<ul>
  <li><strong>Name tags clearly,</strong> like "GA4 purchase" or "Google Ads purchase conversion", so anyone can read the container.</li>
  <li><strong>Change one thing at a time,</strong> so you know what caused a problem.</li>
  <li><strong>Write a version name</strong> like "Added Google Ads purchase conversion".</li>
  <li><strong>Check the numbers the next day</strong> in GA4 and Google Ads against your orders.</li>
</ul>
<p>Keep it small and clean. A container with five tags that you understand is better than one with forty that nobody does.</p>
<p class="bl-sign">If you want to learn tracking step by step, <a href="https://askmoiz.digital/services/academy/" data-cta="blog_body_course">the course covers it</a>. If you'd rather check your container with me, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>.</p>
<h2>Questions people ask me about Google Tag Manager</h2><h3>Do I need Google Tag Manager on Shopify?</h3><p>Not always. Shopify&#x27;s Google and YouTube app can send GA4 and Google Ads events, and Meta&#x27;s app handles the pixel and Conversions API. If those cover what you need, Tag Manager may only add a chance of duplicates. Use it when you need tags the apps don&#x27;t offer, or more control over what fires.</p><h3>Can Tag Manager slow down my store?</h3><p>Every tag adds some work for the browser, whether it comes from Tag Manager, an app or theme code. A container with a few clean tags is fine. Problems come from old tags nobody removed, and the same tool loaded from three places. Review the container and remove what you don&#x27;t use.</p><h3>What happens if I publish a broken tag?</h3><p>Tag Manager keeps every published version. Open Versions, find the last one that worked and publish it again. That is why I name every version with what changed and test in Preview first. Rolling back takes a minute if you know which version was good.</p>]]></content:encoded>
    </item>
    <item>
      <title>Should you learn Meta ads or Google ads first? A plan for beginners</title>
      <link>https://askmoiz.digital/blog/learn-meta-or-google-ads-first/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/learn-meta-or-google-ads-first/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Careers and Freelancing</category>
      <description>For most beginners, start with Meta, then Google, and learn tracking alongside both. Here&#x27;s why, and a 30-day plan to get going.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> For most beginners, learn Meta ads first. More small local businesses already run them, you can practise on a small budget, and the first paying client is easier to find. Add Google ads after your first month, and learn tracking alongside both, because tracking is what makes you worth more on either platform.</p><ul><li>Meta work is mostly creative and offers. Google work is mostly search intent, keywords and settings.</li><li>Local clients usually want Meta ads that bring orders or WhatsApp messages.</li><li>Clients abroad expect you to understand tracking and reporting.</li><li>Spend 30 days on one platform, one small real campaign and tracking basics.</li><li>Start with Google instead if you already know websites, SEO or analytics.</li></ul><p>Every batch of students asks me the same thing in the first week. Should I learn Meta ads or Google ads first? Usually they've watched a few videos on both, opened both dashboards, and now they feel behind on two things instead of one.</p>
<p>My answer for most people starting a freelancing or agency career is simple: learn Meta first, then Google, and learn tracking alongside both. Here's why, and how I'd spend the first 30 days.</p>

<h2 id="which-first">Should I learn Meta ads or Google ads first?</h2>
<p>For most beginners, learn Meta ads first. More small local businesses already run them, you can practise with a small budget, and you'll find your first paying work faster.</p>
<p>Most small stores, clothing brands, restaurants and coaching businesses have tried boosting posts on Facebook or Instagram. Many of them are doing it badly. That's a gap a beginner can fill. Google ads are just as valuable, but the first client is usually harder to find, and a mistake on a Search campaign can spend money quickly on the wrong searches.</p>
<p>There is one exception. If you already understand websites, SEO or analytics, or you want to work with service businesses that get leads from search, starting with Google can make more sense.</p>
<figure class="bl-callout">
  <figcaption class="bl-callout__k">My default order for beginners</figcaption>
  <p class="bl-callout__num">Meta, then Google</p>
  <p>Tracking runs alongside both from day one. It's the part most beginners skip.</p>
</figure>

<h2 id="day-to-day">How are the two jobs different day to day?</h2>
<p>Meta ads work is mostly about creative and offers. Google ads work is mostly about search intent, keywords and settings. The dashboards look similar, but the thinking is different.</p>
<div class="bl-table" role="region" aria-labelledby="cap-jobs" tabindex="0">
  <table class="bl-tbl">
    <caption id="cap-jobs">A media buyer's week: Meta vs Google</caption>
    <thead><tr><th scope="col">Part of the job</th><th scope="col">Meta ads</th><th scope="col">Google ads</th></tr></thead>
    <tbody>
      <tr><th scope="row">Main question</th><td data-label="Meta ads">Will this ad stop the right person scrolling?</td><td data-label="Google ads">Is this the right search to pay for?</td></tr>
      <tr><th scope="row">Most of your time</th><td data-label="Meta ads">Briefing and testing creatives, hooks and offers</td><td data-label="Google ads">Keywords, search terms, negatives and feeds</td></tr>
      <tr><th scope="row">Biggest mistake</th><td data-label="Meta ads">Changing things too often and resetting learning</td><td data-label="Google ads">Leaving default settings and broad keywords unchecked</td></tr>
      <tr><th scope="row">Works well with</th><td data-label="Meta ads">People who like content and psychology</td><td data-label="Google ads">People who like structure and spreadsheets</td></tr>
    </tbody>
  </table>
</div>
<p>If you want to see what the Google side looks like on a real account, read <a href="https://askmoiz.digital/blog/google-ads-pakistan-ecommerce-settings/" data-cta="blog_body_google_settings">the five settings I change on every new Google Ads account</a>.</p>

<h2 id="what-clients-ask">What do local clients and clients abroad ask for?</h2>
<p>Local clients mostly ask for Meta ads that bring orders or WhatsApp messages. Clients abroad ask for both, but they expect you to understand tracking and reporting before they trust you with a budget.</p>
<p>In Pakistan, the typical brief is a Shopify or WhatsApp store selling on cash on delivery, a modest budget in PKR, and an owner who judges you on orders this week. You'll need to understand COD refusals and why Ads Manager doesn't match their sheet.</p>
<p>On Upwork and from agencies abroad, the briefs I see are more often Google Search and Shopping for stores and service businesses, Meta for e-commerce brands, and a lot of "my tracking is broken, can you fix it". That last one is a real opening for someone who knows tracking well.</p>

<h2 id="thirty-day-plan">A 30-day plan to get started</h2>
<p>Spend the first month on one platform, one small real campaign and the basics of tracking. Don't try to finish every course on both.</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Days 1 to 7: learn the structure.</b> Campaign, ad set, ad. Objectives, budgets, audiences and placements. Set up a business portfolio (formerly Business Manager) and an ad account of your own.</li>
    <li><b>Days 8 to 14: learn tracking.</b> Install a pixel on a test store, check events in Events Manager, and understand what the Conversions API does.</li>
    <li><b>Days 15 to 21: run a small real campaign.</b> Your own small budget, or a friend's business. Write down every decision and why.</li>
    <li><b>Days 22 to 26: read the results.</b> Cost per result, click-through rate, frequency, and what you'd change. Compare Ads Manager with the real orders.</li>
    <li><b>Days 27 to 30: write it up.</b> Turn it into a short case note you can show a client, then start on Google basics next month.</li>
  </ol>
</div>
<p>If you've never run anything, write that case note honestly. I explain how in <a href="https://askmoiz.digital/blog/ads-portfolio-with-no-clients/" data-cta="blog_body_portfolio">building an ads portfolio with no clients</a>.</p>

<h2 id="tracking-multiplier">Why tracking skills matter more than the platform</h2>
<p>Tracking is the skill that makes you worth more on both platforms. A media buyer who can set up and check conversion tracking gets better results and can charge more than one who only runs campaigns.</p>
<blockquote class="bl-quote"><p>Anyone can press publish. The person who can prove which sales came from the ads gets the next contract.</p></blockquote>
<p>Most accounts I audit have a tracking problem before they have a targeting problem. Learn the pixel and Conversions API on Meta, the Google tag and enhanced conversions on Google, and Google Tag Manager to run both. <a href="https://askmoiz.digital/blog/meta-ads-after-ios-updates/" data-cta="blog_body_ios">Why Meta ads stopped working after iOS updates</a> is a good place to see why this matters, and <a href="https://askmoiz.digital/blog/gtm-five-tags-pakistani-store/" data-cta="blog_body_gtm">the five GTM tags most stores need</a> shows the practical side.</p>

<h2 id="after-first-month">What should I learn after the first month?</h2>
<p>After the first month, add the second platform and go deeper on tracking. By then, Google will make more sense, because you already understand objectives, budgets and conversions.</p>
<p>Keep running something small the whole time. Reading about ads without spending even a little money is like learning to drive from videos.</p>

<p>Pick one platform, learn tracking with it, and get one real campaign behind you. That's a stronger start than six half-finished courses.</p>
<p class="bl-sign">If you want a structured path with real accounts and feedback, <a href="https://askmoiz.digital/services/academy/" data-cta="blog_body_course">the academy walks through it step by step</a>. If you want to hear how I teach first, <a href="https://askmoiz.digital/webinar/" data-cta="blog_body_webinar">join the free webinar</a>.</p>
<h2>Questions people ask me about learning ads</h2><h3>Can I learn Meta and Google ads at the same time?</h3><p>You can, but most beginners learn both slowly and neither well. I&#x27;d rather you spend one month on one platform with one real campaign, then add the second. The basics carry over: objectives, budgets, conversions and tracking.</p><h3>Do I need to spend my own money to learn ads?</h3><p>A small amount helps a lot. Reading about ads without running anything only takes you so far. Run a small campaign on your own budget or for a friend&#x27;s business, and treat what you spend as part of your training.</p><h3>Which pays more for freelancers, Meta or Google?</h3><p>It depends more on your skill and your clients than the platform. What I see raise rates on both is tracking. A media buyer who can set up and check conversion tracking is worth more than one who only launches campaigns.</p><h3>Is it too late to start a media buying career in 2026?</h3><p>No. Businesses keep spending on ads, and many of them still run accounts badly with broken tracking. The work has shifted toward creative strategy and measurement, so learn those properly instead of only the buttons.</p>]]></content:encoded>
    </item>
    <item>
      <title>Meta ads launch checklist for a new Shopify or COD store</title>
      <link>https://askmoiz.digital/blog/meta-ads-launch-checklist-new-store/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/meta-ads-launch-checklist-new-store/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Meta Ads</category>
      <category>Tracking</category>
      <description>The first campaign is cheap to get right and expensive to get wrong. This is the checklist I run before a new store spends anything on Meta.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> Before a new Shopify or COD store runs its first Meta campaign, make sure you own the business portfolio and ad account, verify your domain, run the pixel and Conversions API with a tested Purchase event in your store&#x27;s currency, and start with one sales campaign, one broad ad set and three to five creative concepts. Then leave it alone for a week.</p><ul><li>You own the business portfolio, ad account, pixel and page. Others get access, not ownership.</li><li>Set currency, time zone and a backup payment method on purpose.</li><li>Test a real order and check Purchase fires once with the value in your store&#x27;s currency.</li><li>Skip the catalog until you have visitors to retarget.</li><li>Don&#x27;t edit budgets, audiences or the optimization event in week one.</li></ul><p>Most new stores I see launch their first Meta campaign the same way. The owner boosts a post from their personal profile, the pixel was installed by a friend, nobody knows who owns the ad account, and three days later they ask why it isn't working.</p>
<p>The first campaign is cheap to get right and expensive to get wrong. Before a new Shopify or COD store spends anything on Meta, I go through the same checklist. None of it is advanced. It just has to be done before launch, not after.</p>

<h2 id="ownership">Who should own the business portfolio and ad account?</h2>
<p>You, the business owner, should own the business portfolio, the ad account, the pixel and the Facebook page. Agencies, freelancers and staff should be added as partners or people with access, never as the owner. If they leave, you keep everything.</p>
<p>Meta has renamed Business Manager a few times. In most accounts it is now called a business portfolio, managed from Meta Business Suite or Business Settings. If yours shows a different name, look for the place where you add people, ad accounts and pages.</p>
<ul>
  <li>Create the business portfolio with your own Facebook profile and a business email you control.</li>
  <li>Add a second trusted admin, so you never lose access if one profile gets locked.</li>
  <li>Set the ad account's currency and time zone carefully. In my experience these are hard or impossible to change later, so pick your currency (PKR, AED, USD or whatever you sell in) and your local time zone on purpose.</li>
  <li>Add a payment method that is enabled for international online payments, plus a backup. If a charge fails, my guide on <a href="https://askmoiz.digital/blog/facebook-ad-payment-failed-pakistan/" data-cta="blog_body_payment_failed">fixing a failed Meta ad payment</a> covers it.</li>
</ul>

<h2 id="domain-and-tracking">What tracking do I need before the first campaign?</h2>
<p>You need a verified domain, the Meta pixel and the Conversions API running together, with Purchase firing once per order with the value in your store's currency. Without this, Meta can't learn who buys, and every test you run gives the wrong answer.</p>
<ul>
  <li><strong>Verify your domain</strong> in Business Settings, under Brand Safety, then Domains. It takes minutes.</li>
  <li><strong>Install the pixel and the Conversions API.</strong> On Shopify, the Facebook and Instagram app handles both. Set customer data sharing to the highest level it offers.</li>
  <li><strong>Test a real order</strong> using Test Events in Events Manager. Check that Purchase fires once, with the right value and currency, and that browser and server events are deduplicated.</li>
</ul>
<p>I explain why this matters so much now in <a href="https://askmoiz.digital/blog/meta-ads-after-ios-updates/" data-cta="blog_body_ios">why Meta ads stopped working after iOS updates</a>, and the Shopify setup in detail in <a href="https://askmoiz.digital/blog/meta-pixel-vs-conversions-api-shopify/" data-cta="blog_body_pixel_capi">pixel vs Conversions API on Shopify</a>.</p>
<aside class="note note--sun" aria-label="Cash on delivery note">
  <span class="sticker sticker--ink note__tag" style="--rot:-3deg">COD note</span>
  
  <div class="note__body"><p>On cash on delivery, Purchase fires when the order is placed, not when it is paid for. Plan from day one how you will track confirmed and delivered orders, even if it's just a sheet, so you can judge campaigns on real sales and later send those orders back to Meta as a separate event.</p></div>
</aside>

<h2 id="catalog">Do I need a product catalog?</h2>
<p>Only if you plan to run catalog ads, like dynamic retargeting or ads that pull products straight from your store. For a first campaign with a handful of hero products, I usually start without it and add it once there are enough visitors to retarget.</p>
<p>If you do connect one, the Shopify app can sync it. Check that prices are in your store's currency, out of stock items are hidden, and product images are clean. A broken catalog shows wrong prices to real customers.</p>

<h2 id="campaign-structure">What campaign structure should a new store start with?</h2>
<p>Start with one sales campaign, optimizing for Purchase, with one broad ad set and several genuinely different creatives. That's it. Splitting a small budget across many campaigns and audiences means none of them gets enough conversions to learn.</p>
<p>Broad means the country or the cities you deliver to, an age range only if it really matters, and few or no interests. The creative does the targeting work now, and I explain how I brief it in <a href="https://askmoiz.digital/blog/creative-is-targeting-meta-ads/" data-cta="blog_body_creative">your creative is your targeting</a>.</p>

<h2 id="budget-and-creative">How much budget and how many creatives?</h2>
<p>Pick a daily budget you can leave running for at least a week without panicking, and launch with three to five different creative concepts. The budget has to be big enough that Meta can get some purchases each week, or it can't learn.</p>
<p>A simple sanity check: look at your product price and margin, think about what you could afford to pay for one confirmed order, and make sure your weekly budget covers several of those. If it can't, start with fewer products and a clearer offer rather than spreading thin.</p>
<figure class="bl-callout">
  <figcaption class="bl-callout__k">My rule for a first campaign</figcaption>
  <p class="bl-callout__num">1 campaign, 1 ad set, 3 to 5 concepts</p>
  <p>Simple enough to learn from. Add more only once something is clearly selling.</p>
</figure>

<h2 id="week-one">What should I not touch in week one?</h2>
<p>Don't touch budgets, audiences or the optimization event in the first week unless something is clearly broken, like tracking not firing or ads being rejected. Every big edit can send the ad set back into learning.</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>You own the business portfolio,</b> ad account, pixel and page.</li>
    <li><b>Currency, time zone and payment method</b> set on purpose, with a backup card.</li>
    <li><b>Domain verified,</b> pixel and Conversions API live and deduplicated.</li>
    <li><b>A real test order</b> shows Purchase once, with the right value and currency.</li>
    <li><b>One sales campaign,</b> one broad ad set, three to five concepts.</li>
    <li><b>A budget you can leave alone</b> for a full week.</li>
    <li><b>Hands off in week one,</b> except to fix something broken.</li>
  </ol>
</div>
<p>Use week one to watch, not to fiddle. Check that orders in Shopify and your COD sheet roughly line up with what Meta shows, and note which concepts get the confirmed orders.</p>
<p class="bl-sign">If you'd like me to check your setup before you launch, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>. If you want it built and run for you, that's <a href="https://askmoiz.digital/services/managed-ads/" data-cta="blog_body_managed">managed ads</a>.</p>
<h2>Questions people ask me about launching Meta ads</h2><h3>Can I just boost posts instead of setting up Ads Manager?</h3><p>You can, but boosting gives you fewer controls and usually optimizes for engagement, not sales. For a store, set up a proper sales campaign in Ads Manager that optimizes for Purchase, with tracking tested first.</p><h3>Do I need the Conversions API on day one?</h3><p>Yes, if you can. On Shopify, the Facebook and Instagram app sets up the pixel and Conversions API together, so there&#x27;s little reason to wait. Starting with clean data means Meta learns from more of your real orders from the first week.</p><h3>Should a new store start with retargeting?</h3><p>Not usually. A new store has very few visitors, so a retargeting audience is tiny. Start with one broad prospecting campaign and add retargeting or catalog ads once you have enough traffic for them to matter.</p><h3>When can I start changing things?</h3><p>After the first week, unless something is clearly broken. Then make one change at a time, such as adding new concepts or adjusting budget, and give each change a few days before judging it on confirmed orders.</p>]]></content:encoded>
    </item>
    <item>
      <title>Meta pixel vs Conversions API on Shopify: what each one sees and how to check</title>
      <link>https://askmoiz.digital/blog/meta-pixel-vs-conversions-api-shopify/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/meta-pixel-vs-conversions-api-shopify/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Tracking</category>
      <category>Meta Ads</category>
      <description>The pixel sees what happens in the browser. The Conversions API sees what your store&#x27;s server knows. On Shopify you want both, sending each event once.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> On Shopify, run the Meta pixel and the Conversions API together. The pixel reports events from the shopper&#x27;s browser, which ad blockers and privacy settings can stop. The Conversions API sends the same events from the server. Matching event IDs let Meta remove the duplicate. Use one connection, set data sharing to Maximum and check Events Manager.</p><ul><li>The pixel runs in the browser, so blockers, privacy settings and weak connections can stop it.</li><li>The Conversions API sends events from the server, with customer details like email and phone.</li><li>Both should send the same event with the same event ID, so Meta counts it once.</li><li>On Shopify, the Facebook and Instagram app handles both when customer data sharing is set to Maximum.</li><li>Two apps or a theme code plus the app sending the same events is the most common mistake I find.</li></ul><p>Store owners often ask me whether they should "switch from the pixel to the Conversions API". It's a fair question, and the answer surprises people. You don't switch. On Shopify you run both, and you make sure each sale is counted once.</p>
<p>Here is what each one sees, how they work together, and how I check a Shopify setup in Events Manager in about ten minutes.</p>

<h2 id="what-each-sees">What is the difference between the Meta pixel and the Conversions API?</h2>
<p>The Meta pixel is code that runs in the shopper's browser and reports what they do on your site. The Conversions API sends the same events from your store's server straight to Meta. The pixel sees the browser. The Conversions API sees what your store knows.</p>
<div class="bl-table" role="region" aria-labelledby="cap-pixel-capi" tabindex="0">
  <table class="bl-tbl">
    <caption id="cap-pixel-capi">Pixel only vs pixel plus Conversions API</caption>
    <thead><tr><th scope="col">Question</th><th scope="col">Pixel only</th><th scope="col">Pixel plus Conversions API</th></tr></thead>
    <tbody>
      <tr><th scope="row">Where events come from</th><td data-label="Pixel only">The shopper's browser</td><td data-label="Pixel plus Conversions API">The browser and your store's server</td></tr>
      <tr><th scope="row">Ad blockers and privacy settings</th><td data-label="Pixel only">Can stop the event</td><td data-label="Pixel plus Conversions API">The server event still arrives</td></tr>
      <tr><th scope="row">Weak mobile connection</th><td data-label="Pixel only">Event can be lost if the page doesn't load fully</td><td data-label="Pixel plus Conversions API">Server sends it after the order is created</td></tr>
      <tr><th scope="row">Customer details for matching</th><td data-label="Pixel only">Limited</td><td data-label="Pixel plus Conversions API">Email, phone and address from the order</td></tr>
      <tr class="is-pick"><th scope="row">My pick</th><td data-label="Pixel only"><span class="bl-tbl__no">No</span></td><td data-label="Pixel plus Conversions API"><span class="bl-tbl__yes">Yes</span></td></tr>
    </tbody>
  </table>
</div>
<p>This matters more since iOS privacy changes, which I explain in <a href="https://askmoiz.digital/blog/meta-ads-after-ios-updates/#capi" data-cta="blog_body_meta_ios">why Meta ads stopped working after iOS updates</a>.</p>

<h2 id="deduplication">How does Meta stop counting the same purchase twice?</h2>
<p>Meta removes duplicates by matching the event name and an event ID. When the pixel and the server both send a Purchase with the same event ID, Meta keeps one and drops the other.</p>
<p>If the IDs don't match, or one side sends no ID, Meta sees two purchases. Your reported sales go up, your cost per purchase looks better than it is, and you end up scaling ads that aren't really working. On Shopify, Meta's own app sets matching IDs for you. Problems start when something else also sends events.</p>
<blockquote class="bl-quote"><p>More events is not better tracking. The goal is every real sale, counted once.</p></blockquote>

<h2 id="data-sharing">Which customer data sharing setting should I use on Shopify?</h2>
<p>Set customer data sharing to Maximum in the Facebook and Instagram app on Shopify. That turns on the Conversions API and sends customer details like email and phone with each event, so Meta can match more sales to the people who saw your ads.</p>
<p>You'll find it in the app's settings, under data sharing. If the names have changed, look for the option that mentions the Conversions API. Make sure your privacy policy covers sharing data with Meta.</p>
<aside class="note note--sun" aria-label="Cash on delivery note">
  <span class="sticker sticker--ink note__tag" style="--rot:-3deg">COD note</span>
  
  <div class="note__body"><p>On COD stores, most customers enter a phone number but not always an email. Phone becomes your main match key. Check that numbers reach Meta with the country code and no leading zero, so a Pakistani 0301 becomes 92301. Also remember that Purchase fires when the order is placed, not when the parcel is paid for.</p></div>
</aside>

<h2 id="check-events-manager">How do I check my setup in Events Manager?</h2>
<p>Use three places in Events Manager: Test events, the event overview and Diagnostics. Together they tell you whether events arrive, whether they're deduplicated, and whether Meta has spotted a problem.</p>
<ul>
  <li><strong>Test events.</strong> Open it, enter your store URL and place a test order. You should see Purchase arrive from both the browser and the server.</li>
  <li><strong>Event overview.</strong> Open the Purchase event and check that it shows both connection methods with duplicates removed.</li>
  <li><strong>Event Match Quality.</strong> Check the score for Purchase and which customer details are being sent.</li>
  <li><strong>Diagnostics.</strong> Read every warning. Duplicate events, missing parameters and domain issues show up here.</li>
</ul>

<h2 id="common-mistakes">What are the most common pixel and Conversions API mistakes?</h2>
<p>The most common mistake I find is two things sending the same events. A pixel pasted into the theme years ago, plus the Facebook and Instagram app, plus a third party tracking app, all sending Purchase with different IDs. Meta counts the sale two or three times.</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Search your theme code</b> for an old pixel snippet and remove it if the app is already connected.</li>
    <li><b>List every app</b> that says it sends Meta events, and keep only one.</li>
    <li><b>Check Google Tag Manager</b> for a Meta pixel tag that duplicates the app.</li>
    <li><b>Confirm one pixel ID</b> across the store, not an old one and a new one.</li>
    <li><b>Place a test order</b> and count how many Purchase events arrive.</li>
  </ol>
</div>
<p>If you use Tag Manager on your store, I explain which tags you actually need in <a href="https://askmoiz.digital/blog/gtm-five-tags-pakistani-store/" data-cta="blog_body_gtm">the handful of GTM tags most stores need</a>.</p>

<h2 id="after-the-fix">What should I watch after fixing it?</h2>
<p>Watch reported purchases against Shopify orders for the next two weeks. If you removed a duplicate, Meta's numbers will drop. That's not your ads getting worse. That's Meta finally counting correctly.</p>
<p>Check Diagnostics once a week, and again after any theme change or new app. Tracking breaks quietly, usually right after someone installs something.</p>
<p class="bl-sign">If you want to learn tracking properly, <a href="https://askmoiz.digital/services/academy/" data-cta="blog_body_course">the course covers it step by step</a>. If you'd rather I check your Events Manager with you, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>.</p>
<h2>Questions people ask me about the pixel and Conversions API</h2><h3>Can I use only the Conversions API without the pixel?</h3><p>You can, but on a Shopify store I don&#x27;t recommend it. The pixel still catches browser details and on-site actions that help Meta match people, and the two together give Meta the most complete view. Run both, and let deduplication remove the overlap.</p><h3>Do I need a developer for the Conversions API on Shopify?</h3><p>Usually not. The Facebook and Instagram app from Meta sets up the pixel and the Conversions API together. In its settings, set customer data sharing to Maximum. You only need a developer if your store has custom checkout code or another tool already sending events that you need to remove.</p><h3>What is a good Event Match Quality score?</h3><p>Higher is better, and Meta shows a rating next to the score in Events Manager. I don&#x27;t chase a number. I check that email and phone are being sent with Purchase, that phone numbers include the 92 country code, and that the score doesn&#x27;t drop after a theme or app change.</p><h3>Why do I see more purchases in Meta than in Shopify?</h3><p>Two common reasons. Either the same purchase is being sent twice without matching event IDs, or Meta is counting view-through conversions inside its attribution window. Check deduplication in Events Manager first. If that is fine, the difference is attribution, not tracking.</p>]]></content:encoded>
    </item>
    <item>
      <title>ROAS vs POAS vs blended ROAS: which one a COD store should trust</title>
      <link>https://askmoiz.digital/blog/roas-poas-blended-roas/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/roas-poas-blended-roas/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>E-commerce</category>
      <category>Tracking</category>
      <description>Your Meta ROAS can look great while you lose money. Here&#x27;s how ROAS, POAS and blended ROAS differ for a COD store, and which one I use for which decision.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> ROAS is platform-reported revenue divided by that platform&#x27;s spend, so use it to compare ads. Blended ROAS is backend sales divided by total ad spend, and for a COD store I use delivered sales, so returns are already out. POAS is profit before ad spend divided by ad spend, and tells you whether scaling makes money.</p><ul><li>Platform ROAS counts placed COD orders, including ones that come back.</li><li>Blended ROAS on delivered sales is the one number I track every week.</li><li>POAS includes product, courier and return costs, so it shows real profit.</li><li>Use ROAS to compare ads, blended ROAS for budget, POAS for what to scale.</li></ul><p>A Meta ROAS of 5 and a store that loses money every month can both be true. Ads Manager counts placed COD orders at full price, including the ones that came back, and ignores the cost of the product, the courier and the returns.</p>
<p>ROAS isn't wrong. It just answers a narrow question. For a COD store with returns, you need three numbers: ROAS, POAS and blended ROAS. Each one is good for a different decision. Here is how I use them.</p>

<h2 id="what-is-roas">What is ROAS?</h2>
<p>ROAS (return on ad spend) is the revenue a platform says your ads brought in, divided by what you spent on those ads. If Meta reports PKR 400,000 in purchases from PKR 100,000 of spend, Meta's ROAS is 4.</p>
<p>The catch is in "the revenue a platform says". Meta and Google each count sales by their own attribution rules, so the same order can be claimed by both. On COD, the purchase usually fires when the order is placed, so refused and returned parcels still count. I explain why platform numbers never match your store in <a href="https://askmoiz.digital/blog/meta-ads-after-ios-updates/#attribution" data-cta="blog_body_ios_attribution">why Ads Manager doesn't match Shopify</a>.</p>

<h2 id="what-is-poas">What is POAS?</h2>
<p>POAS (profit on ad spend) is the profit your ads brought in, before ad costs, divided by ad spend. Instead of revenue, you use what is left after product cost, shipping, courier charges and the cost of returns. Above 1 means the ads paid for themselves and left some profit to cover everything else. Below 1 means you lost money on those sales once ads are counted.</p>
<p>People define POAS slightly differently, so write down which costs you include and keep it the same every week. For COD stores, the cost of returned parcels is the one most people forget, and it's often the one that matters most.</p>

<h2 id="what-is-blended-roas">What is blended ROAS?</h2>
<p>Blended ROAS is total sales from your own backend divided by total ad spend across every platform. It doesn't care which ad gets the credit. It just asks: for every rupee spent on ads, how many rupees of sales came in?</p>
<figure class="bl-callout">
  <figcaption class="bl-callout__k">The one number I track for a COD store</figcaption>
  <p class="bl-callout__num">Delivered sales / total ad spend</p>
  <p>Backend sales from delivered orders, divided by Meta, Google and every other ad platform added together.</p>
</figure>
<p>For a COD store, I use delivered orders, not placed orders, for the sales figure. That way returns are already taken out. If you can't get delivered data yet, use confirmed orders. I explain how to get those in <a href="https://askmoiz.digital/blog/fake-cod-orders-whatsapp-confirmation/" data-cta="blog_body_cod_confirm">cutting fake COD orders with WhatsApp confirmation</a>.</p>

<h2 id="worked-example">How do they compare on a real month?</h2>
<p>Here is a made-up example with round numbers, just to show the arithmetic. These are not results from any store.</p>
<p>Say you spend PKR 100,000 on ads in a month, all on Meta. Ads Manager reports PKR 400,000 in purchase value. Your backend shows PKR 450,000 in placed orders from all sources, but after refusals and returns only PKR 300,000 is actually delivered and paid for. The products you delivered cost you PKR 120,000, and courier charges on delivered and returned parcels come to PKR 40,000.</p>
<ul>
  <li><strong>Meta ROAS:</strong> 400,000 / 100,000 = 4.</li>
  <li><strong>Blended ROAS on delivered sales:</strong> 300,000 / 100,000 = 3.</li>
  <li><strong>POAS:</strong> profit before ads is 300,000 minus 120,000 minus 40,000 = 140,000. So 140,000 / 100,000 = 1.4.</li>
</ul>
<p>Same month, three very different stories. Meta says 4. Your bank account says you made PKR 40,000 after ad spend, before rent, salaries and everything else. If you had decided to scale on the 4, you might have scaled straight into a loss.</p>
<blockquote class="bl-quote"><p>ROAS tells you which ad won. POAS tells you whether you made money.</p></blockquote>

<h2 id="which-for-which">Which one should I use for which decision?</h2>
<p>Use platform ROAS to compare ads and campaigns inside one platform, blended ROAS to judge total ad spend, and POAS to decide whether a product or offer is worth scaling at all.</p>
<div class="bl-table" role="region" aria-labelledby="cap-roas" tabindex="0">
  <table class="bl-tbl">
    <caption id="cap-roas">ROAS vs POAS vs blended ROAS for a COD store</caption>
    <thead><tr><th scope="col">Metric</th><th scope="col">Formula</th><th scope="col">Use it to decide</th></tr></thead>
    <tbody>
      <tr><th scope="row">Platform ROAS</th><td data-label="Formula">Platform-reported revenue / that platform's spend</td><td data-label="Use it to decide">Which ad, ad set or campaign is doing better than the others, inside one platform.</td></tr>
      <tr class="is-pick"><th scope="row">Blended ROAS</th><td data-label="Formula">Backend delivered sales / total ad spend</td><td data-label="Use it to decide">Whether total ad spend is working, and whether to raise or cut the overall budget.</td></tr>
      <tr><th scope="row">POAS</th><td data-label="Formula">Profit before ad spend / ad spend</td><td data-label="Use it to decide">Which products and offers are worth scaling, and what you can afford per order.</td></tr>
    </tbody>
  </table>
</div>

<h2 id="set-it-up">How do I start tracking these every week?</h2>
<p>Start with a simple weekly sheet. You don't need software on day one.</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Add up total ad spend</b> from every platform for the week.</li>
    <li><b>Pull delivered sales</b> from your courier or store backend, not from Ads Manager.</li>
    <li><b>Work out blended ROAS</b> and write it down every week.</li>
    <li><b>List your costs per order:</b> product, packaging, courier, and returns.</li>
    <li><b>Work out POAS</b> by product or offer once a month.</li>
    <li><b>Keep platform ROAS</b> for comparing ads, not for counting money.</li>
  </ol>
</div>
<p>If your purchase tracking itself looks off, fix that first. My <a href="https://askmoiz.digital/blog/ga4-purchase-tracking-cod-audit/" data-cta="blog_body_ga4_audit">GA4 purchase tracking audit for COD</a> walks through the checks.</p>
<p class="bl-sign">If you want help building the sheet and reading it with you, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>. If you'd rather I run the ads against delivered sales for you, that's <a href="https://askmoiz.digital/services/managed-ads/" data-cta="blog_body_managed">managed ads</a>.</p>
<h2>Questions people ask me about ROAS and POAS</h2><h3>What is a good ROAS for a COD store?</h3><p>There isn&#x27;t one number. It depends on your margin, courier costs and return rate. A ROAS that is great for a high margin product can lose money on a low margin one. Work out POAS for your products and the blended ROAS you need to break even.</p><h3>Why is blended ROAS lower than my Meta ROAS?</h3><p>Usually because Meta counts placed orders, including returns, and can claim sales that other channels also claim. Blended ROAS uses your own delivered sales and all ad spend together, so double counting and returns are removed.</p><h3>Do I need special software to track POAS?</h3><p>Not to start. A weekly sheet with ad spend, delivered sales, product cost, courier charges and returns is enough. Software helps once you have many products, but the logic is the same.</p><h3>Should I still look at ROAS in Ads Manager?</h3><p>Yes, for comparing ads, ad sets and campaigns against each other inside Meta. Just don&#x27;t use it to decide whether the business is making money. Use blended ROAS and POAS for that.</p>]]></content:encoded>
    </item>
    <item>
      <title>WhatsApp Business app vs API: which one your store needs</title>
      <link>https://askmoiz.digital/blog/whatsapp-business-app-vs-api-stores/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/whatsapp-business-app-vs-api-stores/</guid>
      <pubDate>Thu, 15 Oct 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>E-commerce</category>
      <category>Meta Ads</category>
      <description>The free app works for most new stores. The API starts paying for itself when chats get missed. Here&#x27;s how I decide which one a store needs.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> Stay on the free WhatsApp Business app while one or two people can answer every chat by hand. Move to the WhatsApp Business Platform (API) when chats are being missed, several agents need one number, or you want automatic COD order confirmations. The API costs a provider fee plus Meta&#x27;s message charges, so check current rates first.</p><ul><li>The app is free and covers catalog, quick replies, labels and away messages.</li><li>The API needs a provider or developer, and gives a shared inbox, chatbots and store integrations.</li><li>App broadcasts only reach people who saved your number. API messages need opt-in and approved templates.</li><li>Meta sets message pricing by country and type, and has changed the model before. Check the current page.</li><li>Switch when missed chats cost you more orders than the API costs you.</li></ul><p>Most of the stores I work with sell on WhatsApp before they sell anywhere else. The ad gets the click, but the order gets confirmed in a chat. So sooner or later the owner asks me: should we stay on the free WhatsApp Business app, or move to the API everyone keeps talking about?</p>
<p>The honest answer depends on how many chats you handle, how many people answer them, and how much of it you want to automate. Here's how I think about it.</p>

<h2 id="difference">What is the difference between the WhatsApp Business app and the API?</h2>
<p>The WhatsApp Business app is a free phone app you run yourself. The WhatsApp Business Platform (people call it the API) is a service you connect to software, usually through a provider, so a team and automations can run your WhatsApp number together.</p>
<p>The app is built for one owner or a small team answering chats by hand. It gives you a business profile, a catalog, quick replies, labels, a greeting message and an away message. That covers a lot of small stores.</p>
<p>The API has no app of its own. You either connect to Meta's Cloud API directly, which needs a developer, or you sign up with a business solution provider that gives you a shared inbox, chatbots and broadcast tools on top. You pay the provider for their software, and you pay Meta for certain messages.</p>

<h2 id="who-suits">Which one suits your store?</h2>
<p>Stay on the app if one or two people answer every chat and your daily order volume is manageable by hand. Move to the API when chats are being missed, several agents need the same number, or you want order confirmations to send themselves.</p>
<div class="bl-table" role="region" aria-labelledby="cap-wa" tabindex="0">
  <table class="bl-tbl">
    <caption id="cap-wa">WhatsApp Business app vs API for an online store</caption>
    <thead><tr><th scope="col">What you need</th><th scope="col">Business app</th><th scope="col">Business Platform (API)</th></tr></thead>
    <tbody>
      <tr><th scope="row">Who answers</th><td data-label="Business app">You, plus a few linked devices</td><td data-label="Business Platform (API)">Many agents in one shared inbox</td></tr>
      <tr><th scope="row">Automation</th><td data-label="Business app">Greeting, away message, quick replies</td><td data-label="Business Platform (API)">Chatbots, store integrations, automatic order messages</td></tr>
      <tr><th scope="row">Catalog</th><td data-label="Business app">Built in, added by hand</td><td data-label="Business Platform (API)">Can sync with your store through Meta's catalog</td></tr>
      <tr><th scope="row">Broadcasts</th><td data-label="Business app">Broadcast lists, only reach people who saved your number</td><td data-label="Business Platform (API)">Approved templates to opted-in customers</td></tr>
      <tr><th scope="row">Cost</th><td data-label="Business app">Free</td><td data-label="Business Platform (API)">Provider fee plus Meta's message charges</td></tr>
      <tr class="is-pick"><th scope="row">Best for</th><td data-label="Business app">New and small stores</td><td data-label="Business Platform (API)">Stores where chats are already being missed</td></tr>
    </tbody>
  </table>
</div>

<h2 id="agents-automation">Can multiple agents use one WhatsApp number?</h2>
<p>On the app, a small team can share one number through linked devices, but everyone sees the same chats with no proper assignment. On the API, a provider's inbox lets you assign chats, see who replied, and hand over between shifts.</p>
<p>This is usually the real reason stores switch. When three people reply from linked devices, two of them answer the same customer and nobody answers the next one. The cost of that is missed orders, not software fees.</p>
<p>Automation is the second reason. With the API, your store can send an order confirmation the moment someone orders on cash on delivery, with buttons to confirm or cancel. That's the setup I explain in <a href="https://askmoiz.digital/blog/fake-cod-orders-whatsapp-confirmation/" data-cta="blog_body_cod_confirm">confirming COD orders on WhatsApp before you ship</a>.</p>
<aside class="note note--sun" aria-label="Cash on delivery note">
  <span class="sticker sticker--ink note__tag" style="--rot:-3deg">COD note</span>
  
  <div class="note__body"><p>If your refusal rate is high, automatic WhatsApp confirmation is often the strongest case for the API. A confirmed order is a better signal to send back to Meta and Google than a placed order, and it stops you paying courier charges on parcels nobody wanted.</p></div>
</aside>

<h2 id="broadcast-opt-in">What are the broadcast limits and opt-in rules?</h2>
<p>On the app, a broadcast only reaches contacts who have saved your number, so most of your list never sees it. On the API, you can message customers who opted in, but only with templates Meta approves first.</p>
<p>Opt-in means the customer agreed to hear from you on WhatsApp. A checkbox at checkout, or a clear line on your order form, is the usual way. Don't upload a bought list or old Daraz buyers who never agreed. People block and report, and that lowers your number's quality rating and the number of people you're allowed to message.</p>
<blockquote class="bl-quote"><p>WhatsApp is not an SMS blaster. Send fewer messages to people who asked for them.</p></blockquote>

<h2 id="cost">How much does the WhatsApp Business API cost?</h2>
<p>The app is free. The API has two costs: what your provider charges for its software, and what Meta charges for messages. Meta sets its own rates by country and message type, and it has changed the pricing model more than once.</p>
<p>Meta used to charge per conversation. It has since moved toward charging per template message, with different rates for marketing, utility and authentication messages, and many replies inside the customer service window cost nothing. Check Meta's current pricing page for your country before you budget, and ask your provider whether they add a markup on Meta's rates.</p>
<figure class="bl-callout">
  <figcaption class="bl-callout__k">My rule before switching</figcaption>
  <p class="bl-callout__num">Price the missed chats first</p>
  <p>Count how many chats went unanswered last week. If that's more orders than the API costs you, switch.</p>
</figure>

<h2 id="when-to-switch">When should I switch from the app to the API?</h2>
<p>Switch when the app is costing you orders. These are the signs I look for in an account:</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Chats sit unanswered</b> for hours during sale days or after a new ad goes live.</li>
    <li><b>More than two people</b> need to reply from the same number.</li>
    <li><b>You confirm COD orders by hand</b> and it takes someone half the day.</li>
    <li><b>You want to message past buyers</b> who opted in, not only people who saved your number.</li>
    <li><b>Your ads send traffic to WhatsApp</b> and you can't tell which chats became orders.</li>
  </ol>
</div>
<p>Before you move, check one thing: a number registered on the API has usually not been usable in the normal app at the same time. Meta has added ways to run both on one number, but ask your provider what they support so you don't lose your chat history.</p>

<p>Start on the app. Move when the chats outgrow the people answering them. If your WhatsApp is about to get busier because you're launching ads, read <a href="https://askmoiz.digital/blog/meta-ads-launch-checklist-new-store/" data-cta="blog_body_launch">my launch checklist for a new store</a> first.</p>
<p class="bl-sign">If you want me to look at how your ads, WhatsApp and COD confirmations fit together, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>. If you'd rather hand the ads over, that's what <a href="https://askmoiz.digital/services/managed-ads/" data-cta="blog_body_managed">managed ads</a> is for.</p>
<h2>Questions people ask me about WhatsApp for stores</h2><h3>Is the WhatsApp Business API free?</h3><p>No. The app is free, but the API has two costs: your provider&#x27;s software fee and Meta&#x27;s charges for certain messages. Meta sets rates by country and message type, and many replies inside the customer service window cost nothing. Check Meta&#x27;s current pricing page for your country before you budget.</p><h3>Can I keep my existing number when I move to the API?</h3><p>Usually yes, but check how. In the past, a number on the API couldn&#x27;t also be used in the normal app. Meta has added ways to run both on one number. Ask your provider what they support before you move, so you don&#x27;t lose chat history.</p><h3>Can I send WhatsApp broadcasts to all my old customers?</h3><p>Only to people who agreed to hear from you on WhatsApp. On the app, broadcasts only reach contacts who saved your number. On the API, you need opt-in and Meta-approved templates. Messaging people who never agreed leads to blocks and reports, which hurts your number&#x27;s quality rating.</p><h3>Do I need the API to run click to WhatsApp ads?</h3><p>No. Click to WhatsApp ads work with the normal Business app. The API helps once those ads bring more chats than your team can answer, or when you want to track which chats became orders.</p>]]></content:encoded>
    </item>
    <item>
      <title>Google Ads for e-commerce: 5 settings I change on every new account</title>
      <link>https://askmoiz.digital/blog/google-ads-pakistan-ecommerce-settings/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/google-ads-pakistan-ecommerce-settings/</guid>
      <pubDate>Tue, 29 Sep 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Google Ads</category>
      <category>E-commerce</category>
      <category>Tracking</category>
      <description>Google&#x27;s defaults are built to spend your budget, not protect it. These are the five settings I check before a new store spends anything.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> Before a new store spends anything on Google Ads, I change five settings: location options to Presence, Search partners and Display off, auto-apply recommendations off, a purchase tag that fires once with the order value, and guardrails on Performance Max. Then I add negative keywords.</p><ul><li>Set location options to Presence, so your ads only reach people who can actually receive a COD parcel.</li><li>Untick Google search partners and the Display Network on every new Search campaign.</li><li>Turn off auto-applied recommendations and review Google&#x27;s suggestions yourself once a week.</li><li>Track purchases with one Google Ads tag that fires once per order with the value in your store&#x27;s currency, and keep GA4 imports and small actions secondary.</li><li>Start on Maximize conversions, and give Performance Max brand exclusions and asset groups by product type.</li></ul><p>When I open a new Google Ads account for an online store, I don't start with keywords. I start with settings. Google's defaults are built to find more places to spend your budget. That's not the same as helping you sell.</p>
<p>Most of these settings take a few minutes to change. Left alone, they waste money every single day. Here are the five I change on every new account, and why they matter even more for stores that only deliver inside one country.</p>

<h2 id="location">1. Location options: set to Presence</h2>
<p>Set Location options to Presence, so your ads only show to people who are in, or regularly in, the places you deliver to. The default, "Presence or interest", also reaches people abroad who are only interested in your country, and they can't order a COD parcel from you.</p>
<p>You'll find it in campaign settings, under Locations, in a part most people never open: Location options. The default covers people in your locations, people who are regularly there, and people who've shown interest in them.</p>
<p>That last part is the problem. Say you sell in Pakistan. Google can also show your ads to someone in Dubai or Toronto who searched for something related to Pakistan. For a store that only delivers inside the country and takes cash on delivery, that click is wasted. The same applies to a store in the UAE, the UK or anywhere else.</p>
<div class="bl-table" role="region" aria-labelledby="cap-location" tabindex="0">
  <table class="bl-tbl">
    <caption id="cap-location">Location options in Google Ads: default vs what I pick</caption>
    <thead><tr><th scope="col">Setting</th><th scope="col">Who sees your ads</th><th scope="col">My pick</th></tr></thead>
    <tbody>
      <tr><th scope="row">Presence or interest (default)</th><td data-label="Who sees your ads">People in, regularly in, or interested in your locations. Includes people abroad searching about your country.</td><td data-label="My pick"><span class="bl-tbl__no">No</span></td></tr>
      <tr class="is-pick"><th scope="row">Presence</th><td data-label="Who sees your ads">People in or regularly in your locations. The people who can actually receive a COD parcel.</td><td data-label="My pick"><span class="bl-tbl__yes">Yes</span></td></tr>
    </tbody>
  </table>
</div>
<p>If you only deliver to certain cities, target those cities instead of the whole country, and check the locations report after a week to see where the clicks really came from.</p>
<p>There's one exception. If you sell to expats sending gifts to family back home, interest targeting can make sense. Put that in a separate campaign with its own budget, so you can see what it really brings in.</p>

<h2 id="networks">2. Search partners and Display: turn both off</h2>
<p>Untick Google search partners and the Google Display Network on every new Search campaign. Both boxes are ticked by default, and both spend your search budget on placements you can barely see or control.</p>
<p>Search partners are other sites that show Google search ads. Sometimes they work, but you can't see much about where your ads appear, and the quality varies a lot. The Display box is worse inside a Search campaign. It takes part of your search budget and spends it on banner placements across websites and apps. A lot of that inventory is mobile apps and games, where accidental clicks are common.</p>
<p>Start with pure Search. Once a campaign is profitable, you can test search partners in a copy of it and compare. If you want Display or YouTube, build them as their own campaigns with their own goals.</p>

<h2 id="auto-apply">3. Auto-applied recommendations: turn off</h2>
<p>Turn off auto-applied recommendations, so Google can't change your keywords, match types or bidding without you approving it first. Google Ads has a Recommendations page, and inside it there's an Auto-apply section. Recommendations you tick there get applied to your account automatically. Depending on what's switched on, auto-apply can:</p>
<ul>
  <li>Add new keywords you never reviewed.</li>
  <li>Switch your keywords to broad match.</li>
  <li>Remove keywords it decides are redundant.</li>
  <li>Change your bidding strategy.</li>
</ul>
<p>I turn off almost all of it. Some of the suggestions are good. I still want to read them first. Check the Recommendations page once a week, apply what makes sense and dismiss the rest.</p>
<blockquote class="bl-quote"><p>Optimization score is Google's estimate of how closely your account follows its own recommendations. It doesn't measure how much profit you made.</p></blockquote>
<p>Your score changes when you apply or dismiss recommendations. Don't chase it. Nobody pays their suppliers with an optimization score.</p>

<h2 id="tracking">4. Conversion tracking: one purchase tag you can trust</h2>
<p>Set up one Google Ads purchase tag that fires once per order with the value in your store's currency (PKR, AED, GBP or whatever you sell in), and make it the only primary conversion used for bidding. Smart bidding is only as good as the conversions you feed it. If tracking is wrong, Google optimizes for the wrong thing, and it does that very efficiently. Here's how I set it up:</p>
<ul>
  <li><strong>Use the Google Ads conversion tag for purchases.</strong> Install it through Google Tag Manager or, on Shopify, the Google and YouTube app. Make sure it fires once per order, sends the order value and currency, and includes the order ID.</li>
  <li><strong>Turn on enhanced conversions.</strong> This sends a hashed version of the customer's email and phone number with the conversion, so Google can match more sales to ad clicks when cookies are blocked. It's worth doing on every store.</li>
  <li><strong>Decide what GA4 is for.</strong> You can import GA4 conversions into Google Ads, but don't count the same purchase twice. I keep the Google Ads tag as the primary purchase action used for bidding, and set imported GA4 purchases as secondary, so they show in reports without changing bids.</li>
  <li><strong>Keep small actions secondary.</strong> Add to cart, page views and WhatsApp clicks are useful to watch. If they're set as primary, Google will happily chase the cheapest of them.</li>
</ul>
<div class="bl-table" role="region" aria-labelledby="cap-actions" tabindex="0">
  <table class="bl-tbl">
    <caption id="cap-actions">Conversion actions for a new store: primary vs secondary</caption>
    <thead><tr><th scope="col">Conversion action</th><th scope="col">Set as</th><th scope="col">Why</th></tr></thead>
    <tbody>
      <tr class="is-pick"><th scope="row">Google Ads purchase tag</th><td data-label="Set as">Primary</td><td data-label="Why">The one sale Google bids on. Fires once per order, with the order value and the order ID.</td></tr>
      <tr><th scope="row">GA4 imported purchase</th><td data-label="Set as">Secondary</td><td data-label="Why">Shows in reports without counting the same sale twice.</td></tr>
      <tr><th scope="row">Add to cart, page views</th><td data-label="Set as">Secondary</td><td data-label="Why">Useful to watch. As primary, Google chases the cheapest of them.</td></tr>
      <tr><th scope="row">WhatsApp clicks</th><td data-label="Set as">Secondary</td><td data-label="Why">Same reason. A click on the chat button isn't a sale.</td></tr>
    </tbody>
  </table>
</div>
<aside class="note note--sun" aria-label="Cash on delivery note">
  <span class="sticker sticker--ink note__tag" style="--rot:-3deg">COD note</span>
  
  <div class="note__body"><p>On cash on delivery, an order isn't a sale until the parcel is paid for. If every order counts as a purchase, Google learns from people who order and then refuse delivery. Once you have delivery data, use conversion adjustments to retract cancelled orders, or upload confirmed orders as offline conversions. Even once a week helps. Meta has the same COD problem, and I explain how I handle it in <a href="https://askmoiz.digital/blog/meta-ads-after-ios-updates/#capi" data-cta="blog_body_meta_capi">setting up the Conversions API for Meta</a>.</p></div>
</aside>

<h2 id="bidding">5. Bidding and Performance Max: start simple, add guardrails</h2>
<p>Start a brand new account on Maximize conversions, and put guardrails on Performance Max before it spends. Google needs conversion history before a Target ROAS means anything, so I only add a ROAS target once the campaign has a steady flow of conversions to learn from.</p>
<p>Performance Max needs the most guardrails, because one campaign runs across Search, Shopping, YouTube, Display, Gmail and Maps. Three settings I always check:</p>
<ul>
  <li><strong>Brand exclusions.</strong> Without them, PMax will happily show ads to people searching for your own store name. They were going to find you anyway, and it makes PMax look better than it is. Exclude your brand and run a small separate Search campaign for brand terms.</li>
  <li><strong>Asset groups by product type.</strong> Don't put the whole catalogue in one asset group. Split by category or by margin, with images, headlines and videos made for each. A lawn suit and a men's watch shouldn't share the same ads.</li>
  <li><strong>Final URL expansion.</strong> When it's on, Google can send traffic to any page on your site, including blog posts and policy pages. For most stores I turn it off, or exclude the pages that can't sell.</li>
</ul>
<p>Then read the Insights and search terms reports inside PMax every week. They don't show everything, but they show enough to catch obvious waste.</p>

<h2 id="negatives">Bonus: a negative keyword list on day one</h2>
<p>Apply a shared negative keyword list to your Search and Shopping campaigns before launch, so you stop paying for searches that were never going to buy. It isn't a setting, but I do it on every new account. My starting list usually covers:</p>
<ul>
  <li>Free, jobs, salary, course and training, unless you sell courses.</li>
  <li>OLX or your local classifieds site, used, second hand and repair, unless you sell those.</li>
  <li>Wholesale, if you only sell retail.</li>
  <li>How to and DIY searches from people looking for information, not a product, plus the same in your buyers' language (kaise in Roman Urdu, for example).</li>
</ul>
<div class="bl-copy">
  <div class="bl-copy__top"><p class="bl-copy__h" id="neg-h">Starter negative keywords</p><button class="bl-copy__btn" type="button" data-copy="free&#10;jobs&#10;salary&#10;course&#10;training&#10;olx&#10;used&#10;second hand&#10;repair&#10;wholesale&#10;how to&#10;kaise&#10;diy" data-copy-name="negative_keywords" data-cta="blog_copy_negatives"><span data-copy-label>Copy the list</span></button></div>
  <pre class="bl-copy__pre" aria-labelledby="neg-h">free
jobs
salary
course
training
olx
used
second hand
repair
wholesale
how to
kaise
diy</pre>
  <p class="bl-copy__note">Remove any word that describes what you actually sell before you paste it into Google Ads.</p>
</div>
<p>Then check the search terms report every few days in the first month. It shows exactly what people typed before they clicked, and it's the fastest way to stop paying for searches that were never going to buy.</p>

<h2 id="checklist">Before you launch</h2>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Location option set to Presence,</b> for targets and exclusions.</li>
    <li><b>Search partners and Display unticked</b> on Search campaigns.</li>
    <li><b>Auto-apply recommendations turned off.</b></li>
    <li><b>Purchase tag firing once per order,</b> with the right value and currency, enhanced conversions on and GA4 imports set as secondary.</li>
    <li><b>Brand exclusions, asset groups and final URL expansion</b> checked in Performance Max.</li>
    <li><b>A shared negative keyword list</b> applied before launch.</li>
  </ol>
</div>
<p>None of this is advanced. It's the boring part most people skip, and it's usually where the money leaks first.</p>
<p class="bl-sign">If you want to learn the whole setup, <a href="https://askmoiz.digital/services/academy/" data-cta="blog_body_course">the course covers it step by step</a>. If you'd rather I check your account with you, <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">book a strategy call</a>.</p>
<h2>Questions people ask me about new Google Ads accounts</h2><h3>Should I ever turn Search partners back on?</h3><p>Yes, but only as a test once a campaign is already profitable on pure Search. Copy the campaign, switch Search partners on in the copy, and compare the two on cost per purchase. If the copy doesn&#x27;t hold up, keep Search partners off. Display and YouTube should be their own campaigns with their own goals.</p><h3>What bidding strategy should a brand new Google Ads account use?</h3><p>Start with Maximize conversions on a sensible budget. A brand new account has no conversion history, so a Target ROAS doesn&#x27;t mean anything to Google yet. Once the campaign has a steady flow of conversions to learn from, add a ROAS target.</p><h3>How do I track COD orders that get cancelled in Google Ads?</h3><p>Use conversion adjustments to retract the orders that were cancelled or refused, or upload confirmed orders as offline conversions. On cash on delivery an order isn&#x27;t a sale until the parcel is paid for, so this stops Google learning from people who never pay. Even once a week helps.</p><h3>Is a low optimization score bad?</h3><p>No. Optimization score is Google&#x27;s estimate of how closely you follow its recommendations, not how much profit you made. Check the Recommendations page once a week, apply what makes sense and dismiss the rest.</p>]]></content:encoded>
    </item>
    <item>
      <title>Why your Meta ads stopped working after iOS updates (and what to fix first)</title>
      <link>https://askmoiz.digital/blog/meta-ads-after-ios-updates/</link>
      <guid isPermaLink="true">https://askmoiz.digital/blog/meta-ads-after-ios-updates/</guid>
      <pubDate>Tue, 22 Sep 2026 09:00:00 +0500</pubDate>
      <dc:creator>Moiz Khan</dc:creator>
      <category>Meta Ads</category>
      <category>Tracking</category>
      <category>E-commerce</category>
      <description>Your ads didn&#x27;t get worse overnight. Meta lost part of its view of what happens after the click. Here&#x27;s what changed, and the order I fix it in.</description>
      <content:encoded><![CDATA[<p><strong>The short answer:</strong> Your Meta ads didn&#x27;t get worse overnight. Since iOS 14.5, many iPhone users block tracking, so Meta sees fewer of the sales your ads cause. It learns slower and reports less. The fix is giving Meta clean data again: verify your domain, check the pixel, add the Conversions API and send email and phone with every order.</p><ul><li>Verify your domain in Business Settings first. Everything else builds on it.</li><li>Run the pixel and the Conversions API together, with matching event IDs so Meta removes duplicates.</li><li>Send phone numbers with the country code and no leading zero, so 0301 becomes 92301.</li><li>On cash on delivery, send delivered orders back to Meta as a separate event and judge campaigns on those.</li><li>Judge results on backend sales divided by total ad spend, not on Ads Manager alone.</li></ul><p>Almost every week someone sends me the same message on WhatsApp. The ads were working. Same budget, same products, same creatives. Then sales dropped, the cost per purchase went up, and Ads Manager stopped matching the orders in Shopify.</p>
<p>Usually nothing is wrong with the product or the offer. Meta can see less than it used to, and the account was never set up for that. Most of it is fixable. You just have to fix it in the right order.</p>

<h2 id="what-changed">What changed with iOS 14.5?</h2>
<p>In 2021 Apple released iOS 14.5 with App Tracking Transparency. Every app now has to ask iPhone users if it can track them across other apps and websites, and a large share of people tap "Ask App Not to Track". When someone taps that inside Facebook or Instagram, Meta loses most of its ability to connect their ad click with what they do on your website.</p>
<p>They still see your ad and might still buy, but the pixel can't always report that purchase back to the ad that caused it.</p>
<p>Later changes made it harder. Browsers block more third-party cookies, and some iPhone privacy features strip tracking parameters from links. Together, they mean the pixel alone now misses a real part of your sales.</p>

<h2 id="signal-loss">What is signal loss and how does it hurt Meta ads?</h2>
<p>Signal loss means Meta sees fewer of the sales and leads your ads actually cause. Meta's algorithm learns from conversions. Every purchase it sees teaches it what a buyer looks like. When it sees fewer purchases, three things happen:</p>
<ul>
  <li>Your reported results drop, even if your real sales didn't drop as much.</li>
  <li>Learning takes longer, because each ad set gets fewer conversions to learn from.</li>
  <li>Delivery gets worse, because the algorithm is now guessing with less information.</li>
</ul>
<p>So part of the drop was reporting, and part of it was real. Your job is to give Meta back as much clean signal as you can.</p>
<blockquote class="bl-quote"><p>Your ads didn't suddenly get worse. Meta just started seeing less of what happens after the click.</p></blockquote>

<h2 id="domain">Do I still need domain verification and event priority?</h2>
<p>Yes, verify your domain. Meta's first answer to iOS 14.5 was Aggregated Event Measurement, which still processes web events from iPhone users who opt out of tracking. Since 2025 you no longer need a verified domain to set up conversion events, but verifying still controls who can edit links to your site, and it takes a few minutes.</p>
<p>Verifying takes minutes. In Business Settings, go to Brand Safety, then Domains, and add your store's domain. You can verify with a DNS TXT record, a meta tag or an HTML file.</p>
<p>For a while, Meta also made you rank up to eight conversion events per domain, with Purchase at the top. In 2025 Meta removed the eight-event limit and the ranking step from Events Manager, but the idea still matters. Pick one event that means a real sale, usually Purchase, and optimize for it. Splitting campaigns across Add to Cart, Initiate Checkout and Purchase means none of them learns well.</p>

<h2 id="capi">What is the Conversions API and do I need it?</h2>
<p>The <strong>Conversions API</strong> (CAPI) is Meta's way of sending purchase and lead events from your website's server instead of the visitor's browser. Because it doesn't depend on the browser, iOS settings and ad blockers can't stop it. Run it next to the pixel, not instead of it.</p>
<p>This is the fix that matters most. The pixel runs in the visitor's browser, so ad blockers, iOS settings and slow mobile connections can stop it. CAPI sends the same events from your server straight to Meta.</p>
<p>Run both together. The pixel and CAPI send the same Purchase, and Meta removes the duplicate using an event ID. If the IDs don't match, Meta counts the sale twice and you end up scaling the wrong things.</p>
<p>On Shopify, the Facebook and Instagram app can set this up for you. In its settings, set customer data sharing to Maximum. On WooCommerce or a custom site, use a plugin you trust, a server-side Tag Manager container, or a developer who has done it before. Then check two things in Events Manager:</p>
<ul>
  <li><strong>Deduplication.</strong> Your Purchase event should show events from both the browser and the server, with the duplicates removed.</li>
  <li><strong>Event Match Quality.</strong> This score shows how well Meta can match your events to real people. Send email and phone number with every purchase. Include the country code and drop the leading zero, so a Pakistani number like 0301 becomes 92301.</li>
</ul>
<aside class="note note--sun" aria-label="Cash on delivery note">
  <span class="sticker sticker--ink note__tag" style="--rot:-3deg">COD note</span>
  
  <div class="note__body"><p>On cash on delivery, Purchase fires when the order is placed, not when the parcel is paid for. Meta learns from everyone who orders, including people who refuse delivery. If your return rate is high, send confirmed or delivered orders back to Meta as a separate event from your server, and judge campaigns on those. Google Ads has the same problem, and I cover the fix there in <a href="https://askmoiz.digital/blog/google-ads-pakistan-ecommerce-settings/#tracking" data-cta="blog_body_google_tracking">conversion tracking for COD stores on Google Ads</a>.</p></div>
</aside>

<h2 id="attribution">Why don't Ads Manager purchases match Shopify?</h2>
<p>Ads Manager purchases don't match Shopify because Ads Manager only credits a sale to an ad if it happened inside the attribution window, while Shopify counts every order. Your COD sheet follows its own rules too, so the three numbers will never match exactly.</p>
<p>Clients ask me which one is lying. Usually none of them. If someone clicked your ad nine days ago and bought today, Meta doesn't count it. If someone saw your ad yesterday without clicking, or only liked or shared it, and bought today, Meta does count it, even if they actually found you on Google.</p>
<figure class="bl-callout">
  <figcaption class="bl-callout__k">Meta's default attribution setting</figcaption>
  <p class="bl-callout__num">7-day click, 1-day engage-through, 1-day view</p>
  <p>What most conversion campaigns use. Your Shopify orders and your COD sheet follow none of these rules, so the numbers will never match exactly.</p>
</figure>
<p>Stop trying to make them match. Track one number you trust instead: total sales from your backend divided by total ad spend across every platform. If that number holds steady or improves while you change things in Meta, you're moving the right way. Use Ads Manager to compare campaigns against each other, not to count your money.</p>

<h2 id="broad">Should I use broad targeting now?</h2>
<p>For most accounts, yes. Broad targeting means country or city, age if it really matters, and very few interests, and most accounts I review now do better with it. With less data, narrow interest stacks stopped working the way they used to.</p>
<p>Women aged 25 to 34 who like three fashion pages is a small box for an algorithm that already has less to work with. With Advantage+ audience, Meta treats the interests you add as suggestions anyway.</p>
<p>Going broad doesn't mean you stop targeting. The targeting moves into the creative. The ad itself decides who stops scrolling. A video that opens with "Lahore mein same day delivery" speaks to a different person than one that opens with the price. Your hook, your language, the people on screen and the offer all tell Meta who to show the ad to next.</p>
<ul>
  <li>Make different creatives for different buyers, not small variations of one ad.</li>
  <li>Speak the way your customer speaks: Urdu, Roman Urdu or English, depending on who buys.</li>
  <li>Show the price, the delivery time and whether you offer COD. People want to know these before they click.</li>
</ul>

<h2 id="fix-first">What to fix first</h2>
<p>Don't change everything at once. Work through this in order, and give each step time to show up in the numbers.</p>
<div class="bl-check">
  <span class="bl-check__note script" aria-hidden="true">start here</span>
  <ol>
    <li><b>Verify your domain</b> in Business Settings. It takes minutes and protects who can edit links to your site.</li>
    <li><b>Check your pixel events.</b> Use Test Events to confirm Purchase fires once per order, with the right value and your store's currency.</li>
    <li><b>Set up the Conversions API</b> and confirm deduplication is working.</li>
    <li><b>Raise your Event Match Quality</b> by sending email and phone number with every purchase.</li>
    <li><b>Pick one optimization event</b> that means a real sale, and stop splitting budget across events.</li>
    <li><b>Agree on one number you trust,</b> like backend sales divided by total ad spend.</li>
    <li><b>Simplify and go broad.</b> Fewer campaigns, fewer ad sets, wider audiences.</li>
    <li><b>Put your effort into creative.</b> New angles, new hooks, real customer language.</li>
  </ol>
</div>
<p>Steps one to four are tracking. Don't skip them. Every creative test you run on broken tracking gives you the wrong answer.</p>
<p class="bl-sign">If you want to learn this properly, <a href="https://askmoiz.digital/services/academy/" data-cta="blog_body_course">the course walks through it step by step</a>. If you'd rather I look at your account with you, that's what <a href="https://askmoiz.digital/services/strategy-call/" data-cta="blog_body_call">the strategy call</a> is for.</p>
<h2>Questions people ask me about iOS tracking</h2><h3>Does the Conversions API fix iOS tracking completely?</h3><p>Not completely, but it&#x27;s the biggest fix you can make. The Conversions API sends your events from the server, so iOS settings and ad blockers can&#x27;t stop them reaching Meta. Meta still has to match each event to a real person, which is why sending email and phone with every order matters so much.</p><h3>Do I need a developer to set up the Conversions API on Shopify?</h3><p>Usually not. On Shopify, the Facebook and Instagram app can set up the Conversions API for you. In its settings, set customer data sharing to Maximum, then check deduplication in Events Manager. On WooCommerce or a custom site, use a plugin you trust, a server-side Tag Manager container, or a developer who has done it before.</p><h3>How do I track COD orders that get returned or refused?</h3><p>Don&#x27;t let Meta learn only from placed orders. On cash on delivery, Purchase fires when the order is placed, so Meta also learns from people who refuse the parcel. Send confirmed or delivered orders back to Meta from your server as a separate event, and judge your campaigns on that event instead.</p><h3>Should I still add interests to my Meta ad sets?</h3><p>Only a few, and only if they really matter. Most accounts I review now do better with broad targeting: country or city, age if it matters, and very few interests. The creative does the targeting now. Your hook, language, the people on screen and the offer tell Meta who to show the ad to next.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
