[{"data":1,"prerenderedAt":980},["ShallowReactive",2],{"post-\u002Fen\u002Fblog\u002Fwhere-did-this-order-come-from":3,"post-siblings-en":250},{"id":4,"title":5,"authors":6,"badge":12,"body":14,"date":223,"description":224,"extension":225,"image":226,"meta":228,"navigation":244,"path":245,"readTime":246,"seo":247,"stem":248,"__hash__":249},"posts_en\u002Fen\u002Fblog\u002F15.where-did-this-order-come-from.md","How to know the source of every order in your store",[7],{"name":8,"to":9,"avatar":10},"The Flowfy team","https:\u002F\u002Ftryflowfy.com",{"src":11},"\u002Fbrand\u002Fsymbol\u002Fflowfy-symbol-512.png",{"label":13},"Attribution",{"type":15,"value":16,"toc":214},"minimark",[17,21,24,29,32,55,58,61,65,68,136,142,145,148,151,155,158,161,164,167,171,174,195,198,201,207,211],[18,19,20],"p",{},"The simplest question in e-commerce is where an order came from. It's also the one most stores can't answer for any specific order.",[18,22,23],{},"You know the totals: orders today, revenue this month. What's missing is one level down. You open order 4,812 and see the channel, the campaign, the ad set and the ad that produced it.",[25,26,28],"h2",{"id":27},"what-stores-use-instead-of-that-field","What stores use instead of that field",[18,30,31],{},"With the field missing, three habits fill the gap, and all three measure something other than what you wanted:",[33,34,35,43,49],"ul",{},[36,37,38,42],"li",{},[39,40,41],"strong",{},"Asking the customer."," \"How did you hear about us?\" gets answered from memory, and memory credits the last thing someone saw.",[36,44,45,48],{},[39,46,47],{},"A question on the thank-you page."," Answered by the minority who bother, and that minority isn't random.",[36,50,51,54],{},[39,52,53],{},"Discount codes."," They count who remembered to type the code, not who was influenced.",[18,56,57],{},"Each one produces a number. None of them produces a number you can put next to ad spend and compare.",[18,59,60],{},"A fourth habit is to take the answer from each platform's own dashboard. That gives you a number built on that platform's methodology and window, and adding two or three dashboards together yields more conversions than your store had orders. You can't build a comparison on it, because every row was counted under a different rule.",[25,62,64],{"id":63},"comparing-three-influencers-on-the-same-fee","Comparing three influencers on the same fee",[18,66,67],{},"Three influencers, each paid 5,000 SAR:",[69,70,71,90],"table",{},[72,73,74],"thead",{},[75,76,77,81,84,87],"tr",{},[78,79,80],"th",{},"Influencer",[78,82,83],{},"Visits",[78,85,86],{},"Orders",[78,88,89],{},"Cost per order",[91,92,93,108,122],"tbody",{},[75,94,95,99,102,105],{},[96,97,98],"td",{},"Influencer A",[96,100,101],{},"900",[96,103,104],{},"45",[96,106,107],{},"111 SAR",[75,109,110,113,116,119],{},[96,111,112],{},"Influencer B",[96,114,115],{},"4,200",[96,117,118],{},"28",[96,120,121],{},"179 SAR",[75,123,124,127,130,133],{},[96,125,126],{},"Influencer C",[96,128,129],{},"600",[96,131,132],{},"6",[96,134,135],{},"833 SAR",[18,137,138],{},[139,140,141],"em",{},"Illustrative figures.",[18,143,144],{},"Without a source on the order, all you have is the visits column. The visits column names Influencer B the winner, and B costs 68 SAR more per order than A. With the orders column, renewing Influencer C takes about a second to decide.",[18,146,147],{},"The same arithmetic works on paid ads. Every order carries its channel, campaign and ad, so you compare source against source instead of comparing visits against orders and hoping the two move together.",[18,149,150],{},"Free channels join the same table. Brand search, referral, a WhatsApp message and an email campaign are all measured on the same ruler as paid. That's the first time you can compare a channel that costs you nothing against one you fund daily, because both numbers came from the same place.",[25,152,154],{"id":153},"a-written-source-against-an-inferred-one","A written source against an inferred one",[18,156,157],{},"A source you reconstruct later, by matching UTM strings or reading the last referrer at checkout, inherits every gap in whatever it was rebuilt from. A UTM written under a different name, a link somebody forgot to tag, a payment redirect that broke the session. Each one produces an order with no source, and those orders pile up in \"direct\".",[18,159,160],{},"Writing the source onto the order at the moment it's created, from the server, means the field is there whether or not the browser cooperated. It's written once and it doesn't erode.",[18,162,163],{},"That's also what keeps historical reads honest. A source stored on the order is still there when you change attribution model six months later. A source inferred from a session isn't, because the session is gone.",[18,165,166],{},"The source on every order is live in Flowfy today: channel, campaign, ad set and ad, written from the server at checkout and stored with the order, and it comes out in exports like any other field. Attribution reaches back inside a 90-day window, so an order that lands weeks after the first click still returns to it.",[25,168,170],{"id":169},"what-becomes-possible-the-same-day","What becomes possible the same day",[18,172,173],{},"Three things:",[175,176,177,183,189],"ol",{},[36,178,179,182],{},[39,180,181],{},"Ranking channels by real contribution"," instead of by which platform claims loudest.",[36,184,185,188],{},[39,186,187],{},"Finding sources you never tagged",", like a QR code in the parcel, a WhatsApp message or a partner page, because each becomes its own row instead of collapsing into \"direct\".",[36,190,191,194],{},[39,192,193],{},"Settling the argument."," When someone insists an order came from Instagram, you open the order and look.",[18,196,197],{},"\"Direct\" stays, and that's honest. Real direct orders exist: someone typed your URL, or opened a bookmark. The goal is for \"direct\" to stop swallowing orders that had a source you failed to capture.",[18,199,200],{},"The number to watch after the change is the share of total orders sitting in \"direct\". If it drops from a third to under a tenth, what you were losing was sources rather than customers.",[202,203,204],"post-rule",{},[18,205,206],{},"Before you compare two channels, make sure every order in your store carries a source written at the time of the order. Without that field, any channel comparison pulls numbers from different places and treats them as if they came off one ruler.",[25,208,210],{"id":209},"next-step","Next step",[18,212,213],{},"Open the last twenty orders in your store and see how many you can name a source for. If more than a third sit in \"direct\" while you advertise daily, the problem is in collection rather than in the channels.",{"title":215,"searchDepth":216,"depth":216,"links":217},"",2,[218,219,220,221,222],{"id":27,"depth":216,"text":28},{"id":63,"depth":216,"text":64},{"id":153,"depth":216,"text":154},{"id":169,"depth":216,"text":170},{"id":209,"depth":216,"text":210},"2026-11-14","Most stores know the total. Few can open a single order and name the channel, campaign and ad behind it. That one field changes how every number after it reads.","md",{"src":227},"\u002Fblog\u002Fwhere-did-this-order-come-from-en.png",{"cover":229},{"kind":230,"unit":231,"highlight":232,"caption":233,"series":234},"bars","SAR",0,"Illustrative figures · same 5,000 SAR fee, bars are cost per order",[235,238,241],{"label":236,"value":237},"A · 900 visits",111,{"label":239,"value":240},"B · 4,200 visits",179,{"label":242,"value":243},"C · 600 visits",833,true,"\u002Fen\u002Fblog\u002Fwhere-did-this-order-come-from",3,{"title":5,"description":224},"en\u002Fblog\u002F15.where-did-this-order-come-from","1sGeHCAh8c8hu4QhbEc6v8k5m3zKEr_65WZOKBwKGnI",[251,260,268,277,285,293,301,309,317,325,333,342,350,359,367,375,383,391,400,408,416,424,432,440,448,456,464,472,480,488,496,504,512,520,528,536,544,552,560,568,576,584,592,600,608,616,624,632,640,648,656,664,672,680,688,696,704,712,720,728,736,744,752,760,768,776,784,792,800,808,816,824,832,840,848,856,864,872,880,883,891,899,907,915,923,931,939,947,955,963,971],{"path":252,"title":253,"description":254,"image":255,"badge":257,"date":259,"readTime":246},"\u002Fen\u002Fblog\u002Fexclusion-audiences-first","Why you pay to reach people who already bought","12% of a retargeting audience has already bought, and their share of the budget is 2,400 SAR a month. The waste never shows up as a loss anywhere, which is why it runs for years. Here's the arithmetic and the exclusions to run.",{"src":256},"\u002Fblog\u002Fexclusion-audiences-first-en.png",{"label":258},"Growth","2028-07-22",{"path":261,"title":262,"description":263,"image":264,"badge":266,"date":267,"readTime":246},"\u002Fen\u002Fblog\u002Fcohorts-and-the-time-dimension","Why your repeat rate falls every time you grow","A blended repeat rate mixes a customer of three weeks with a customer of two years. Grouping people by when they arrived turns a static number into a curve you can act on. Here's the idea and three objections to it.",{"src":265},"\u002Fblog\u002Fcohorts-and-the-time-dimension-en.png",{"label":258},"2028-07-15",{"path":269,"title":270,"description":271,"image":272,"badge":274,"date":276,"readTime":246},"\u002Fen\u002Fblog\u002Fpayment-methods-are-a-margin-decision","How to work out which payment method earns you more","Deferred payment carries higher fees and a bigger basket. Which of those wins is an arithmetic question, and most stores answer it with an opinion. Here's the maths on a hundred orders, and six steps to run it on your data.",{"src":273},"\u002Fblog\u002Fpayment-methods-are-a-margin-decision-en.png",{"label":275},"Profit","2028-07-08",{"path":278,"title":279,"description":280,"image":281,"badge":283,"date":284,"readTime":246},"\u002Fen\u002Fblog\u002Fbudget-fit-and-payment-methods","When to reallocate budget instead of launching a campaign","A new campaign costs creative, setup, a learning phase and budget. Moving money you already spend costs an afternoon. Here's the check that tells you how many riyals are sitting in the wrong place.",{"src":282},"\u002Fblog\u002Fbudget-fit-and-payment-methods-en.png",{"label":275},"2028-07-01",{"path":286,"title":287,"description":288,"image":289,"badge":291,"date":292,"readTime":246},"\u002Fen\u002Fblog\u002Fthe-four-costs-missing-from-your-ad-report","Four costs missing from every ad report","Your ad platform knows what you spent on ads, and that's all. Cost of goods, shipping, gateway fees and returns come out of the same revenue and can flip your campaign ranking.",{"src":290},"\u002Fblog\u002Fthe-four-costs-missing-from-your-ad-report-en.png",{"label":275},"2028-06-24",{"path":294,"title":295,"description":296,"image":297,"badge":299,"date":300,"readTime":216},"\u002Fen\u002Fblog\u002Fthe-denominator-problem","Four denominators that make your metrics read wrong","Every efficiency metric is a division, and the argument about one is usually an argument about the bottom half. Here are four denominators that are wrong in most stores, and how to check them.",{"src":298},"\u002Fblog\u002Fthe-denominator-problem-en.png",{"label":275},"2028-06-17",{"path":302,"title":303,"description":304,"image":305,"badge":307,"date":308,"readTime":246},"\u002Fen\u002Fblog\u002Frepeat-purchase-journeys","What the second purchase journey looks like","The second order has its own journey and its own channels, and it's the cheapest revenue you have. Here's the arithmetic, and the time gap that decides when to act.",{"src":306},"\u002Fblog\u002Frepeat-purchase-journeys-en.png",{"label":258},"2028-06-10",{"path":310,"title":311,"description":312,"image":313,"badge":315,"date":316,"readTime":216},"\u002Fen\u002Fblog\u002Fassist-campaigns-and-repeat-journeys","How to spot the campaign that assists but never closes","A campaign that appears in many journeys and closes few looks weak in the default report. Here's a two-number test, and the three objections you'll hear when you defend it.",{"src":314},"\u002Fblog\u002Fassist-campaigns-and-repeat-journeys-en.png",{"label":258},"2028-06-03",{"path":318,"title":319,"description":320,"image":321,"badge":323,"date":324,"readTime":216},"\u002Fen\u002Fblog\u002Foptimising-elements-not-ads","When element-level analysis works and when it breaks","Grouping ads by a shared element grows the sample and shrinks the variance. But the method breaks in three situations. Here's the mechanism, the situations, and how to avoid them.",{"src":322},"\u002Fblog\u002Foptimising-elements-not-ads-en.png",{"label":258},"2028-05-27",{"path":326,"title":327,"description":328,"image":329,"badge":331,"date":332,"readTime":216},"\u002Fen\u002Fblog\u002Freading-arabic-ad-creative","How to tell which element of your ad actually worked","Ranking creatives by ROAS tells you which ones to keep running. It doesn't tell you what to make next. Here's the arithmetic that gets that answer out of the same twelve ads.",{"src":330},"\u002Fblog\u002Freading-arabic-ad-creative-en.png",{"label":258},"2028-05-20",{"path":334,"title":335,"description":336,"image":337,"badge":339,"date":341,"readTime":216},"\u002Fen\u002Fblog\u002Fcustom-ranges-that-answer-a-question","Pick the report period from the question, not the default","Last 7 days, last 30 days, this month. All three were chosen for convenience, not for a question. Here's how to pick the range from the question you actually have.",{"src":338},"\u002Fblog\u002Fcustom-ranges-that-answer-a-question-en.png",{"label":340},"Seasons","2028-05-13",{"path":343,"title":344,"description":345,"image":346,"badge":348,"date":349,"readTime":216},"\u002Fen\u002Fblog\u002Fperiod-comparison-and-season-shading","Which period comparison to use when your seasons move","Every tool defaults to previous period. That default answers a different question than the one in your head. Here are the three comparisons, and which one judges performance.",{"src":347},"\u002Fblog\u002Fperiod-comparison-and-season-shading-en.png",{"label":340},"2028-05-06",{"path":351,"title":352,"description":353,"image":354,"badge":356,"date":358,"readTime":216},"\u002Fen\u002Fblog\u002Fbudget-distribution-checks","How to move budget between channels without losing the gain","The distribution check tells you there's an opportunity. Moving it all at once eats most of it. Here are three execution rules, and what to watch afterwards.",{"src":355},"\u002Fblog\u002Fbudget-distribution-checks-en.png",{"label":357},"Analytics","2028-04-29",{"path":360,"title":361,"description":362,"image":363,"badge":365,"date":366,"readTime":216},"\u002Fen\u002Fblog\u002Fpaying-creators-on-measured-orders","Why discount codes pick the wrong creator","A code counts who remembered to type it at checkout. A tracked link counts who actually bought because of the post. Here's the gap in numbers, and what to settle on instead.",{"src":364},"\u002Fblog\u002Fpaying-creators-on-measured-orders-en.png",{"label":258},"2028-04-22",{"path":368,"title":369,"description":370,"image":371,"badge":373,"date":374,"readTime":216},"\u002Fen\u002Fblog\u002Facquisition-products-versus-retention-products","Products that bring customers and products that keep them","Two products with the same revenue can need opposite budgets. One buys you new customers, the other is why they come back. Revenue alone doesn't tell them apart.",{"src":372},"\u002Fblog\u002Facquisition-products-versus-retention-products-en.png",{"label":357},"2028-04-15",{"path":376,"title":377,"description":378,"image":379,"badge":381,"date":382,"readTime":216},"\u002Fen\u002Fblog\u002Fcommercial-alert-detectors","The budget split check, and three other commercial checks","Tracking is fine and the money is going to the wrong place. That's the more common case, and it doesn't surface as an error anywhere. Here's the check, with the arithmetic.",{"src":380},"\u002Fblog\u002Fcommercial-alert-detectors-en.png",{"label":357},"2028-04-08",{"path":384,"title":385,"description":386,"image":387,"badge":389,"date":390,"readTime":246},"\u002Fen\u002Fblog\u002Falert-fatigue","How to stop your team from muting the alert channel","The danger isn't the late alert. It's alerts arriving often enough that someone mutes the channel, at which point every detector behind it stops. Here are three rules and three alerts to start with.",{"src":388},"\u002Fblog\u002Falert-fatigue-en.png",{"label":357},"2028-04-01",{"path":392,"title":393,"description":394,"image":395,"badge":397,"date":399,"readTime":246},"\u002Fen\u002Fblog\u002Ftracking-health-detectors","Six ways tracking breaks, and how to check each one","Tracking doesn't fail in unlimited ways. It fails in about six, and each one has a fingerprint. Here are the six, and the check to run if you only have time for one.",{"src":396},"\u002Fblog\u002Ftracking-health-detectors-en.png",{"label":398},"Tracking","2028-03-25",{"path":401,"title":402,"description":403,"image":404,"badge":406,"date":407,"readTime":216},"\u002Fen\u002Fblog\u002Fsharing-an-analysis-without-a-screenshot","What you lose when you share an analysis as a screenshot","A screenshot carries the number without its date range or its filters. A month later nobody can check it. Here's what to share instead.",{"src":405},"\u002Fblog\u002Fsharing-an-analysis-without-a-screenshot-en.png",{"label":357},"2028-02-26",{"path":409,"title":410,"description":411,"image":412,"badge":414,"date":415,"readTime":246},"\u002Fen\u002Fblog\u002Fsaved-views-and-custom-dashboards","Four minutes a day spent setting filters","Four minutes sounds cheap. Multiply it by three people and a full year and it comes to more than a working week. The hours are the cheap part of the cost.",{"src":413},"\u002Fblog\u002Fsaved-views-and-custom-dashboards-en.png",{"label":357},"2028-02-19",{"path":417,"title":418,"description":419,"image":420,"badge":422,"date":423,"readTime":246},"\u002Fen\u002Fblog\u002Freports-built-to-be-printed","Why nobody opens your weekly report","The problem isn't a shortage of reports. The report was written to prove coverage rather than produce a decision. Here's the difference between the two shapes, and the four things a useful report contains.",{"src":421},"\u002Fblog\u002Freports-built-to-be-printed-en.png",{"label":357},"2028-02-12",{"path":425,"title":426,"description":427,"image":428,"badge":430,"date":431,"readTime":246},"\u002Fen\u002Fblog\u002Fspend-and-revenue-on-one-ruler","How to measure spend and revenue with the same ruler","Return is a ratio between two numbers. If the two are calculated in different ways, the result isn't a rate. Here are four ways the sum breaks, and the rule that fixes it.",{"src":429},"\u002Fblog\u002Fspend-and-revenue-on-one-ruler-en.png",{"label":357},"2028-02-05",{"path":433,"title":434,"description":435,"image":436,"badge":438,"date":439,"readTime":216},"\u002Fen\u002Fblog\u002Fcampaign-performance-dashboard","What belongs on the screen you open every morning","The daily screen has one job: tell you where the next riyal goes. Here are the three things it needs, and three objections you'll hear when you remove the rest.",{"src":437},"\u002Fblog\u002Fcampaign-performance-dashboard-en.png",{"label":357},"2028-01-29",{"path":441,"title":442,"description":443,"image":444,"badge":446,"date":447,"readTime":246},"\u002Fen\u002Fblog\u002Fsegments-you-can-act-on-today","Three customer segments to build this week","A segmentation earns its time only if it ends in a list you'd act on. Three lists pass that test at most stores, and the first one saves money the day you upload it.",{"src":445},"\u002Fblog\u002Fsegments-you-can-act-on-today-en.png",{"label":357},"2028-01-22",{"path":449,"title":450,"description":451,"image":452,"badge":454,"date":455,"readTime":216},"\u002Fen\u002Fblog\u002Fcustomer-segments","Read the distribution, not the average customer","An average blends someone who bought once with someone who came back four times. Here's the distribution behind it, and the one sort that changes how you set acquisition budget.",{"src":453},"\u002Fblog\u002Fcustomer-segments-en.png",{"label":357},"2028-01-15",{"path":457,"title":458,"description":459,"image":460,"badge":462,"date":463,"readTime":216},"\u002Fen\u002Fblog\u002Fsettling-attribution-arguments","How to settle an attribution argument by opening one order","Most arguments about channel performance aren't arguments about data. Identify the type first, because only one of the three is settled by opening a record.",{"src":461},"\u002Fblog\u002Fsettling-attribution-arguments-en.png",{"label":13},"2028-01-08",{"path":465,"title":466,"description":467,"image":468,"badge":470,"date":471,"readTime":246},"\u002Fen\u002Fblog\u002Fexplaining-every-attribution","A number nobody can explain is a number nobody uses","An 890 SAR order credited to a channel you didn't spend on this month. If you can't explain why, that number dies and takes every other figure from the same source with it.",{"src":469},"\u002Fblog\u002Fexplaining-every-attribution-en.png",{"label":13},"2028-01-01",{"path":473,"title":474,"description":475,"image":476,"badge":478,"date":479,"readTime":246},"\u002Fen\u002Fblog\u002Fwhat-a-channel-absence-costs","How to find out how many orders you lose if a channel stops","No attribution model answers this question. The only method is a holdout, and it costs real money. Here's how to design one and which channel deserves it.",{"src":477},"\u002Fblog\u002Fwhat-a-channel-absence-costs-en.png",{"label":13},"2027-12-25",{"path":481,"title":482,"description":483,"image":484,"badge":486,"date":487,"readTime":246},"\u002Fen\u002Fblog\u002Fhighest-impact-touchpoints","Why how often a channel appears doesn't measure its contribution","A channel appearing in 620 of 1,000 paths looks indispensable. The number that matters is how many paths it closed on its own, and that's a different calculation.",{"src":485},"\u002Fblog\u002Fhighest-impact-touchpoints-en.png",{"label":13},"2027-12-18",{"path":489,"title":490,"description":491,"image":492,"badge":494,"date":495,"readTime":216},"\u002Fen\u002Fblog\u002Ffunnel-by-source","Read your funnel by source before you redesign checkout","The blended number says your problem is checkout. Split by source and it says the problem sits in one kind of traffic, and the fix is a completely different one.",{"src":493},"\u002Fblog\u002Ffunnel-by-source-en.png",{"label":357},"2027-12-11",{"path":497,"title":498,"description":499,"image":500,"badge":502,"date":503,"readTime":246},"\u002Fen\u002Fblog\u002Fdirection-beats-the-number","Four checks before you act on a trend","A channel dropped this week. Before you move its budget, there are four things to confirm, because ordinary variance and broken tracking draw the same line on a chart.",{"src":501},"\u002Fblog\u002Fdirection-beats-the-number-en.png",{"label":357},"2027-12-04",{"path":505,"title":506,"description":507,"image":508,"badge":510,"date":511,"readTime":246},"\u002Fen\u002Fblog\u002Fattribution-flow-and-trends","When to read the attribution flow and when to read the trend","The flow tells you where your volume sits this month. The trend tells you whether a channel is climbing or falling. A table on its own sends budget the wrong way.",{"src":509},"\u002Fblog\u002Fattribution-flow-and-trends-en.png",{"label":357},"2027-11-27",{"path":513,"title":514,"description":515,"image":516,"badge":518,"date":519,"readTime":246},"\u002Fen\u002Fblog\u002Fqr-inserts-and-offline-sources","How to give packaging and print a cost per order","Offline touchpoints cost you money and have no revenue line facing them. One code on something you already print turns them into a channel you can compare against paid.",{"src":517},"\u002Fblog\u002Fqr-inserts-and-offline-sources-en.png",{"label":258},"2027-11-20",{"path":521,"title":522,"description":523,"image":524,"badge":526,"date":527,"readTime":216},"\u002Fen\u002Fblog\u002Ftag-every-link-you-own","Tag every link you own, not just creator links","Forty per cent of one store's monthly orders sat in direct. Tagging three links it already owned put a name on 92 of them, and nothing about the marketing changed.",{"src":525},"\u002Fblog\u002Ftag-every-link-you-own-en.png",{"label":258},"2027-11-13",{"path":529,"title":530,"description":531,"image":532,"badge":534,"date":535,"readTime":246},"\u002Fen\u002Fblog\u002Fwhat-to-keep-from-a-season","What to claim from a season in the week after it ends","A season leaves four things behind besides revenue. All four decay within about two weeks if nobody claims them, and claiming all four is an hour of work.",{"src":533},"\u002Fblog\u002Fwhat-to-keep-from-a-season-en.png",{"label":340},"2027-11-06",{"path":537,"title":538,"description":539,"image":540,"badge":542,"date":543,"readTime":216},"\u002Fen\u002Fblog\u002Feid-al-fitr-season-readout","Judge a season on new customers, not on cost per order","Cost per order improves during a season for a reason that has nothing to do with your ads. Divide the same spend by new customers and the decision changes.",{"src":541},"\u002Fblog\u002Feid-al-fitr-season-readout-en.png",{"label":340},"2027-10-30",{"path":545,"title":546,"description":547,"image":548,"badge":550,"date":551,"readTime":246},"\u002Fen\u002Fblog\u002Fspend-pacing-in-a-short-window","Pacing spend when the window is ten days long","In a ten-day window most of your spend runs while the platform is still learning, and the daily cap binds at the wrong hours. Here are the conditions and rules that survive a short window.",{"src":549},"\u002Fblog\u002Fspend-pacing-in-a-short-window-en.png",{"label":340},"2027-10-23",{"path":553,"title":554,"description":555,"image":556,"badge":558,"date":559,"readTime":216},"\u002Fen\u002Fblog\u002Framadan-final-ten","The final ten nights, what to do and what to postpone","Spend is at its peak, the window is ten days, and there's no time left to recover from a mistake. Two short lists: what's worth doing inside those ten days, and what waits until after Eid.",{"src":557},"\u002Fblog\u002Framadan-final-ten-en.png",{"label":340},"2027-10-16",{"path":561,"title":562,"description":563,"image":564,"badge":566,"date":567,"readTime":216},"\u002Fen\u002Fblog\u002Fa-weekly-digest-on-whatsapp","Four lines instead of a weekly report","A number on its own tells you nothing. Four lines with a comparison, the top source, the biggest change and one suggested action take fifteen seconds and end with a decision.",{"src":565},"\u002Fblog\u002Fa-weekly-digest-on-whatsapp-en.png",{"label":357},"2027-10-09",{"path":569,"title":570,"description":571,"image":572,"badge":574,"date":575,"readTime":246},"\u002Fen\u002Fblog\u002Ffunnel-drop-off-analysis","Finding the widest gap in your funnel","Most stores fix the step they have a ready number for, not the step losing them people. The rule is one line: compute the transition rate between each pair of steps and start at the lowest.",{"src":573},"\u002Fblog\u002Ffunnel-drop-off-analysis-en.png",{"label":357},"2027-10-02",{"path":577,"title":578,"description":579,"image":580,"badge":582,"date":583,"readTime":246},"\u002Fen\u002Fblog\u002Fbehaviour-detectors-and-goals","Turn your monthly target into a daily rate","On day 18 you're 264 orders into a target of 500. That figure does nothing for you until it becomes a required daily rate, and the gap between your rate and the required one is your plan for the next fortnight.",{"src":581},"\u002Fblog\u002Fbehaviour-detectors-and-goals-en.png",{"label":357},"2027-09-25",{"path":585,"title":586,"description":587,"image":588,"badge":590,"date":591,"readTime":246},"\u002Fen\u002Fblog\u002Fjoining-ad-spend-to-orders","Join ad spend to orders on the click ID","A 5.0 ROAS on the dashboard is worth checking before you celebrate. If 40% of your spend never matched a campaign, the denominator is short and the number is wrong in the direction you like.",{"src":589},"\u002Fblog\u002Fjoining-ad-spend-to-orders-en.png",{"label":275},"2027-09-18",{"path":593,"title":594,"description":595,"image":596,"badge":598,"date":599,"readTime":246},"\u002Fen\u002Fblog\u002Fwhy-fixed-alert-thresholds-fail","Why a fixed alert threshold produces false alarms","Alert me if events drop below 100 a day is a rule that works for one store, for about a month. A threshold that doesn't know your normal fires when you're fine and stays quiet when you're not.",{"src":597},"\u002Fblog\u002Fwhy-fixed-alert-thresholds-fail-en.png",{"label":398},"2027-09-11",{"path":601,"title":602,"description":603,"image":604,"badge":606,"date":607,"readTime":246},"\u002Fen\u002Fblog\u002Fchannel-order-inside-a-path","Which channel opens the journey and which one closes it","Ranking channels best to worst assumes they all do the same job. The alternative is assigning roles. Here's how to read each channel's role from your own data, and what changes in the budget afterwards.",{"src":605},"\u002Fblog\u002Fchannel-order-inside-a-path-en.png",{"label":13},"2027-09-04",{"path":609,"title":610,"description":611,"image":612,"badge":614,"date":615,"readTime":246},"\u002Fen\u002Fblog\u002Fseason-alerts-that-matter","Which alerts are worth having on during a season","A three-day tracking break at peak spend exposes you to 18,000 SAR. An hourly check brings the same exposure down to about 250. The difference isn't the fix, it's how long you ran without seeing.",{"src":613},"\u002Fblog\u002Fseason-alerts-that-matter-en.png",{"label":340},"2027-08-28",{"path":617,"title":618,"description":619,"image":620,"badge":622,"date":623,"readTime":216},"\u002Fen\u002Fblog\u002Framadan-week-two","Why week two is the decision point in Ramadan","Week one is a transition and the final ten are too expensive to experiment in. That leaves week two, with stable data and enough season left for a decision to pay off.",{"src":621},"\u002Fblog\u002Framadan-week-two-en.png",{"label":340},"2027-08-21",{"path":625,"title":626,"description":627,"image":628,"badge":630,"date":631,"readTime":216},"\u002Fen\u002Fblog\u002Framadan-daily-rhythm","What Ramadan's night rhythm does to your reports","Buying moves to late evening. Sessions cross midnight and the daytime lull reads like a decline. These are the settings to adjust before the month starts.",{"src":629},"\u002Fblog\u002Framadan-daily-rhythm-en.png",{"label":340},"2027-08-14",{"path":633,"title":634,"description":635,"image":636,"badge":638,"date":639,"readTime":216},"\u002Fen\u002Fblog\u002Framadan-week-one","Reading the first week of Ramadan","Two channels with near-identical totals after three weeks. One is down a third, the other has more than doubled. The total says split evenly, the trend says move the whole budget.",{"src":637},"\u002Fblog\u002Framadan-week-one-en.png",{"label":340},"2027-08-07",{"path":641,"title":642,"description":643,"image":644,"badge":646,"date":647,"readTime":216},"\u002Fen\u002Fblog\u002Framadan-moves-eleven-days","Ramadan moves 11 days a year and your comparison doesn't","Your report says revenue fell 22% year over year. Aligned properly, it rose 26%. Same data, from a comparison that matched dates instead of matching seasons.",{"src":645},"\u002Fblog\u002Framadan-moves-eleven-days-en.png",{"label":340},"2027-07-31",{"path":649,"title":650,"description":651,"image":652,"badge":654,"date":655,"readTime":246},"\u002Fen\u002Fblog\u002Framadan-preparation","Getting measurement ready for Ramadan","Thirty days of high spend, a late-night rhythm, and a date that moves every year. The checks to run before, and the two minutes to run each night during.",{"src":653},"\u002Fblog\u002Framadan-preparation-en.png",{"label":340},"2027-07-24",{"path":657,"title":658,"description":659,"image":660,"badge":662,"date":663,"readTime":216},"\u002Fen\u002Fblog\u002Fhow-long-your-buying-cycle-really-is","How long your buying cycle is, and how to measure it","The gap between first touch and purchase is a fact about your product that no benchmark supplies. It sets your attribution window, when you start spending before a season, and how long you wait before judging a campaign.",{"src":661},"\u002Fblog\u002Fhow-long-your-buying-cycle-really-is-en.png",{"label":357},"2027-07-17",{"path":665,"title":666,"description":667,"image":668,"badge":670,"date":671,"readTime":216},"\u002Fen\u002Fblog\u002Fthe-step-by-step-customer-journey","What a stored customer journey contains, and what it answers","A funnel diagram describes buying in general. A stored journey describes what one of your customers actually did, in order, with dates. That's what you need when a source is disputed.",{"src":669},"\u002Fblog\u002Fthe-step-by-step-customer-journey-en.png",{"label":357},"2027-07-10",{"path":673,"title":674,"description":675,"image":676,"badge":678,"date":679,"readTime":216},"\u002Fen\u002Fblog\u002Fcomparing-models-on-the-same-orders","How to compare two attribution models on the same orders","Most attribution tools calculate credit at collection time. That means switching models needs new data and a month of waiting, and you need the comparison now.",{"src":677},"\u002Fblog\u002Fcomparing-models-on-the-same-orders-en.png",{"label":13},"2027-07-03",{"path":681,"title":682,"description":683,"image":684,"badge":686,"date":687,"readTime":216},"\u002Fen\u002Fblog\u002Fthe-ninety-day-window","How to work out the right attribution window for your store","A model can only divide the touches it can see. Before arguing about first versus last, check how far back your window reaches, because a short one erases the whole subject of the argument.",{"src":685},"\u002Fblog\u002Fthe-ninety-day-window-en.png",{"label":13},"2027-06-26",{"path":689,"title":690,"description":691,"image":692,"badge":694,"date":695,"readTime":246},"\u002Fen\u002Fblog\u002Fcrediting-paid-media-fairly","Four steps to credit paid media fairly without erasing organic","Two opposite errors, both common. One hands paid an order that organic closed. The other lets brand search absorb credit for demand advertising created.",{"src":693},"\u002Fblog\u002Fcrediting-paid-media-fairly-en.png",{"label":13},"2027-06-19",{"path":697,"title":698,"description":699,"image":700,"badge":702,"date":703,"readTime":216},"\u002Fen\u002Fblog\u002Fj-shaped-and-last-paid-touch","J-shaped and last paid touch, the two models that show up in budget meetings","One weights the close while still crediting discovery. The other ignores organic and asks a narrower question about the money you spent. When to use each.",{"src":701},"\u002Fblog\u002Fj-shaped-and-last-paid-touch-en.png",{"label":13},"2027-06-12",{"path":705,"title":706,"description":707,"image":708,"badge":710,"date":711,"readTime":216},"\u002Fen\u002Fblog\u002Fwhen-multi-touch-is-worth-it","Measure your multi-touch share before you pick a model","For single-touch orders, every model returns the same answer. So the share of orders with more than one touch is the size of the decision you're debating.",{"src":709},"\u002Fblog\u002Fwhen-multi-touch-is-worth-it-en.png",{"label":13},"2027-06-05",{"path":713,"title":714,"description":715,"image":716,"badge":718,"date":719,"readTime":216},"\u002Fen\u002Fblog\u002Fmulti-touch-attribution-models","Linear, time decay and position-based on one order","Three ways to divide credit across a journey instead of handing it to one touch. Take a single order, watch it split under each, and see which assumption fits your store.",{"src":717},"\u002Fblog\u002Fmulti-touch-attribution-models-en.png",{"label":13},"2027-05-29",{"path":721,"title":722,"description":723,"image":724,"badge":726,"date":727,"readTime":246},"\u002Fen\u002Fblog\u002Ffirst-touch-versus-last-touch","First touch and last touch, what each one answers","The two aren't measuring the same thing. What each one says, where each one is wrong, and how to read the difference between them per channel.",{"src":725},"\u002Fblog\u002Ffirst-touch-versus-last-touch-en.png",{"label":13},"2027-05-22",{"path":729,"title":730,"description":731,"image":732,"badge":734,"date":735,"readTime":246},"\u002Fen\u002Fblog\u002Fwhat-a-season-teaches-about-next-year","Three findings to take from one season into planning the next","A season compresses a year of buying behaviour into days. That makes it the cheapest place to learn which channels open journeys, how long your buying cycle really is, and where your measurement is thin.",{"src":733},"\u002Fblog\u002Fwhat-a-season-teaches-about-next-year-en.png",{"label":340},"2027-04-17",{"path":737,"title":738,"description":739,"image":740,"badge":742,"date":743,"readTime":246},"\u002Fen\u002Fblog\u002Fpost-season-readout","Which comparison tells you whether you grew","4,832 orders in a season week is a big number until you put it next to two others. One tells you a season happened. The other tells you whether you grew through it.",{"src":741},"\u002Fblog\u002Fpost-season-readout-en.png",{"label":340},"2027-04-10",{"path":745,"title":746,"description":747,"image":748,"badge":750,"date":751,"readTime":246},"\u002Fen\u002Fblog\u002Freading-a-season-while-it-runs","Reading a season while it runs, not after it","On peak night you split 30,000 SAR using numbers the platforms reported about themselves. Here's the arithmetic of that gap, and what to watch each day instead.",{"src":749},"\u002Fblog\u002Freading-a-season-while-it-runs-en.png",{"label":340},"2027-04-03",{"path":753,"title":754,"description":755,"image":756,"badge":758,"date":759,"readTime":246},"\u002Fen\u002Fblog\u002Fthe-pre-season-checklist","What to freeze before a season, and what to keep changing","Most season damage comes from a change made during the season itself. Here are the parts you stop touching two weeks out, and the parts you keep adjusting every day.",{"src":757},"\u002Fblog\u002Fthe-pre-season-checklist-en.png",{"label":340},"2027-03-27",{"path":761,"title":762,"description":763,"image":764,"badge":766,"date":767,"readTime":246},"\u002Fen\u002Fblog\u002Fwhite-friday-preparation","Preparing measurement for White Friday","White Friday doesn't create tracking failures. It exposes the ones you already have, while you spend four times normal. Here's the pre-season check schedule and the two minutes to run daily during it.",{"src":765},"\u002Fblog\u002Fwhite-friday-preparation-en.png",{"label":340},"2027-03-20",{"path":769,"title":770,"description":771,"image":772,"badge":774,"date":775,"readTime":246},"\u002Fen\u002Fblog\u002Fevery-redirect-that-breaks-a-session","Six redirects off your site that can lose the order source","Instalment providers take the blame, but the mechanism is broader. Any journey that leaves your domain and comes back can end the session carrying the customer's source. Here's the list, and one fix that covers most of it.",{"src":773},"\u002Fblog\u002Fevery-redirect-that-breaks-a-session-en.png",{"label":13},"2027-02-20",{"path":777,"title":778,"description":779,"image":780,"badge":782,"date":783,"readTime":246},"\u002Fen\u002Fblog\u002Fevent-match-quality-explained","Event match quality scores your identifiers, not your setup","The score a platform gives you counts how many identifiers arrived with the event. Here's what it actually counts, three common objections to it, and what genuinely raises it.",{"src":781},"\u002Fblog\u002Fevent-match-quality-explained-en.png",{"label":398},"2027-02-13",{"path":785,"title":786,"description":787,"image":788,"badge":790,"date":791,"readTime":246},"\u002Fen\u002Fblog\u002Frecovering-attribution-you-already-lost","What you can recover after attribution data is lost, and what you can't","After you fix a tracking gap, part of the past can be rebuilt from records you already own. Part of it is gone. Here's the difference, so you don't spend weeks on the part that doesn't come back.",{"src":789},"\u002Fblog\u002Frecovering-attribution-you-already-lost-en.png",{"label":398},"2027-02-06",{"path":793,"title":794,"description":795,"image":796,"badge":798,"date":799,"readTime":246},"\u002Fen\u002Fblog\u002Fseason-revenue-split-beats-season-total","Why a season total isn't enough to plan the next season","Total revenue tells you whether the season worked. It doesn't tell you which channel carried it, or whether the season created demand or pulled it forward. Here are the splits that answer that.",{"src":797},"\u002Fblog\u002Fseason-revenue-split-beats-season-total-en.png",{"label":340},"2027-01-30",{"path":801,"title":802,"description":803,"image":804,"badge":806,"date":807,"readTime":246},"\u002Fen\u002Fblog\u002Fmeasuring-saudi-national-day","How to read National Day week before it ends","National Day is a four-day season. The call you make on the 21st isn't the call you'd make on the 24th. Here's what to check each evening, and what to leave for the readout.",{"src":805},"\u002Fblog\u002Fmeasuring-saudi-national-day-en.png",{"label":340},"2027-01-23",{"path":809,"title":810,"description":811,"image":812,"badge":814,"date":815,"readTime":246},"\u002Fen\u002Fblog\u002Freading-a-single-customer-profile","What a unified customer profile shows you","The same six hundred orders, read by last click and by first touch, give you two different budgets. Here's the arithmetic, and what to look at in one profile before you pause a channel.",{"src":813},"\u002Fblog\u002Freading-a-single-customer-profile-en.png",{"label":357},"2027-01-16",{"path":817,"title":818,"description":819,"image":820,"badge":822,"date":823,"readTime":246},"\u002Fen\u002Fblog\u002Fwhy-deterministic-matching-only","A higher match rate doesn't mean a more accurate one","Any vendor that guesses at identity shows you higher coverage. The extra is exactly the part that might be wrong. Here's the difference between the two error types, and how to raise coverage without guessing.",{"src":821},"\u002Fblog\u002Fwhy-deterministic-matching-only-en.png",{"label":13},"2027-01-09",{"path":825,"title":826,"description":827,"image":828,"badge":830,"date":831,"readTime":246},"\u002Fen\u002Fblog\u002Fwhy-a-pixel-alone-cannot-be-fixed","Why no pixel configuration closes a tracking gap","The browser decides whether the event leaves, not your configuration. Here are three fixes most stores try first, and why none of them changes the outcome.",{"src":829},"\u002Fblog\u002Fwhy-a-pixel-alone-cannot-be-fixed-en.png",{"label":398},"2027-01-02",{"path":833,"title":834,"description":835,"image":836,"badge":838,"date":839,"readTime":246},"\u002Fen\u002Fblog\u002Fwhat-hybrid-tracking-actually-is","Hybrid tracking, what the browser sees and what the server knows","Two paths carry the same order for different reasons. The browser holds the session and the click identifier; the server holds the confirmed sale. Here's what you lose when one of them is missing.",{"src":837},"\u002Fblog\u002Fwhat-hybrid-tracking-actually-is-en.png",{"label":398},"2026-12-26",{"path":841,"title":842,"description":843,"image":844,"badge":846,"date":847,"readTime":246},"\u002Fen\u002Fblog\u002Fwhat-direct-traffic-really-is","What sits inside your direct bucket, and how to shrink it","Direct isn't a channel. It's where orders go when nobody recorded their source. Here are the five causes behind it, and two checks that tell you which one you have.",{"src":845},"\u002Fblog\u002Fwhat-direct-traffic-really-is-en.png",{"label":13},"2026-12-19",{"path":849,"title":850,"description":851,"image":852,"badge":854,"date":855,"readTime":246},"\u002Fen\u002Fblog\u002Fidentity-resolution-explained","How fourteen identifiers become one customer","A phone visit and a laptop purchase are two separate records. Here's what merges them, why backfilled history changes your attribution, and what moves in your numbers afterwards.",{"src":853},"\u002Fblog\u002Fidentity-resolution-explained-en.png",{"label":13},"2026-12-12",{"path":857,"title":858,"description":859,"image":860,"badge":862,"date":863,"readTime":246},"\u002Fen\u002Fblog\u002Fcatching-broken-tracking-early","How to catch broken tracking before a month goes by","Tracking rarely fails in a way you can see. A theme update or a lapsed permission, and the numbers drift down and read as a slow week. Here's what to compare, how often, and how to tell when a gap is worth acting on.",{"src":861},"\u002Fblog\u002Fcatching-broken-tracking-early-en.png",{"label":398},"2026-12-05",{"path":865,"title":866,"description":867,"image":868,"badge":870,"date":871,"readTime":246},"\u002Fen\u002Fblog\u002Fproduct-level-decisions","Product decisions don't come out of a channel dashboard","Budget is decided by channel. Stock, bundles and offers are decided by product. Two products with the same revenue can need opposite decisions, and revenue alone doesn't tell them apart.",{"src":869},"\u002Fblog\u002Fproduct-level-decisions-en.png",{"label":357},"2026-11-28",{"path":873,"title":874,"description":875,"image":876,"badge":878,"date":879,"readTime":246},"\u002Fen\u002Fblog\u002Fconversion-paths-and-explaining-attribution","Why this order was credited to Snapchat","A channel table says how much each channel brought. It doesn't say what the channels did together, or why one specific order was credited where it was. The answer sits in the path, not in a more precise number.",{"src":877},"\u002Fblog\u002Fconversion-paths-and-explaining-attribution-en.png",{"label":13},"2026-11-21",{"path":245,"title":5,"description":224,"image":881,"badge":882,"date":223,"readTime":246},{"src":227},{"label":13},{"path":884,"title":885,"description":886,"image":887,"badge":889,"date":890,"readTime":246},"\u002Fen\u002Fblog\u002Fcounting-every-order-once","Why one order gets counted twice, and how to stop it","The browser pixel and server-side tracking complete each other. Without a shared event ID between them, the same order is counted twice and ROAS reads better than reality. Here's what each path sees, and where deduplication breaks.",{"src":888},"\u002Fblog\u002Fcounting-every-order-once-en.png",{"label":398},"2026-11-07",{"path":892,"title":893,"description":894,"image":895,"badge":897,"date":898,"readTime":246},"\u002Fen\u002Fblog\u002Faudiences-from-your-own-customer-data","How to build ad audiences from your own order data","A platform pixel only knows browsing inside that platform. Your store knows who bought, what they spent and which channel brought them. Here are three lists worth building, and how to keep them from going stale.",{"src":896},"\u002Fblog\u002Faudiences-from-your-own-customer-data-en.png",{"label":258},"2026-10-31",{"path":900,"title":901,"description":902,"image":903,"badge":905,"date":906,"readTime":246},"\u002Fen\u002Fblog\u002Freading-channel-funnel-and-segment-reports","Three reports to read before you move budget","A dashboard showing orders without spend gives you half the equation. How to read channel performance, find the widest gap in your funnel, and split customers into groups you can act on.",{"src":904},"\u002Fblog\u002Freading-channel-funnel-and-segment-reports-en.png",{"label":357},"2026-10-24",{"path":908,"title":909,"description":910,"image":911,"badge":913,"date":914,"readTime":246},"\u002Fen\u002Fblog\u002Fmeasuring-a-saudi-season","Why March against March misreads your Ramadan","Ramadan moves about eleven days earlier each Gregorian year. The same data reads as a 22% drop by calendar and 26% growth by season day. Here's how to align it, and what to check during the month.",{"src":912},"\u002Fblog\u002Fmeasuring-a-saudi-season-en.png",{"label":340},"2026-10-10",{"path":916,"title":917,"description":918,"image":919,"badge":921,"date":922,"readTime":246},"\u002Fen\u002Fblog\u002Fncac-cohorts-and-ltv","Your cost per customer is wrong if it counts returning buyers","Spend divided by all orders flatters every campaign that resells to your own customers. Here's the arithmetic, and the order to work through to LTV by channel.",{"src":920},"\u002Fblog\u002Fncac-cohorts-and-ltv-en.png",{"label":258},"2026-10-03",{"path":924,"title":925,"description":926,"image":927,"badge":929,"date":930,"readTime":246},"\u002Fen\u002Fblog\u002Froas-vs-true-profit","Why a campaign at 4× ROAS can lose money","ROAS counts sales, not profit. Once cost of goods, shipping and gateway fees are in, your campaign ranking changes. Here's the arithmetic and what to do about it.",{"src":928},"\u002Fblog\u002Froas-vs-true-profit-en.png",{"label":275},"2026-09-26",{"path":932,"title":933,"description":934,"image":935,"badge":937,"date":938,"readTime":246},"\u002Fen\u002Fblog\u002Finfluencer-tracking-without-discount-codes","Measuring influencers without discount codes","A promo code counts who remembered to type it, not who was influenced. Here's what codes miss and what a tracked link measures instead.",{"src":936},"\u002Fblog\u002Finfluencer-tracking-without-discount-codes-en.png",{"label":258},"2026-09-19",{"path":940,"title":941,"description":942,"image":943,"badge":945,"date":946,"readTime":246},"\u002Fen\u002Fblog\u002Fcustomer-journey-and-assist-campaigns","Why your store counts one buyer as four customers","A cookie identifies a browser, not a person. Once identity is resolved across devices, your customer count drops while your order count doesn't, and repeat rate and acquisition cost correct themselves.",{"src":944},"\u002Fblog\u002Fcustomer-journey-and-assist-campaigns-en.png",{"label":357},"2026-09-12",{"path":948,"title":949,"description":950,"image":951,"badge":953,"date":954,"readTime":246},"\u002Fen\u002Fblog\u002Fattribution-models-explained","Attribution models, what each one assumes and which suits your store","Every attribution model is an assumption about how your customers buy. Here's what each one assumes, when to use it, and why the attribution window matters to you more than the model does.",{"src":952},"\u002Fblog\u002Fattribution-models-explained-en.png",{"label":13},"2026-09-05",{"path":956,"title":957,"description":958,"image":959,"badge":961,"date":962,"readTime":246},"\u002Fen\u002Fblog\u002Ftabby-tamara-attribution-direct-traffic","Why Tabby and Tamara make your paid channels look weak","Instalment checkout sends the shopper off your store and back. Most tools read the return as a new direct visit, so the ad that produced the sale gets no credit.",{"src":960},"\u002Fblog\u002Ftabby-tamara-attribution-direct-traffic-en.png",{"label":13},"2026-08-29",{"path":964,"title":965,"description":966,"image":967,"badge":969,"date":970,"readTime":246},"\u002Fen\u002Fblog\u002Fhow-conversion-data-goes-missing","Four holes conversion data leaks through, and the fix for each","ITP, ad blockers, bots and relay emails each break tracking in a different place. That's why no single fix closes all of them.",{"src":968},"\u002Fblog\u002Fhow-conversion-data-goes-missing-en.png",{"label":398},"2026-08-22",{"path":972,"title":973,"description":974,"image":975,"badge":977,"date":978,"readTime":979},"\u002Fen\u002Fblog\u002Fmeta-reports-more-conversions-than-salla","Why Meta reports more conversions than your Salla store","340 against 240, and both numbers are right. Four reasons the gap exists, how to measure it in your store, and which number to budget on.",{"src":976},"\u002Fblog\u002Fmeta-reports-more-conversions-than-salla-en.png",{"label":13},"2026-08-15",4,1787611839900]