Social Media Lesgo Media · 2026
- 200%ROI in the worked example
- RM30-RM50healthy cost per lead
- 3-6 monthsbefore ROI turns clearly positive
The formula is the easy part. The two numbers you feed it are not, because most Malaysian SMEs cannot say exactly what social media costs them, and even less about which sales came from it.
Payment happens on WhatsApp. Someone sees a Reel on Tuesday and walks in three weeks later. What follows is a setup a two-person team can run: the metrics that tie to money, link tagging, GA4 events, logging WhatsApp and phone enquiries, and what to do about sales you cannot trace.
What goes into the ROI formula, and what most people leave out
ROI as a percentage is value generated minus total cost, divided by total cost, times 100. The arguments all start with those two inputs.
Total cost is not only ad spend. It is ad spend plus the management fee plus content production: graphics, video, copywriting, and tools like Canva Pro or a scheduler. Leave the fees out and ROI looks better than it is.
Value generated is sales times average order value, or qualified leads times close rate and average deal size. Use the same window every time, usually a calendar month.
Take the Klang Valley business above. RM1,500 of ad spend plus a RM1,500 management fee is RM3,000. If RM9,000 in sales trace back to social, ROI is 9,000 minus 3,000, divided by 3,000, times 100, or 200%.
The second example is less flattering. A Petaling Jaya bakery spends RM1,200 a month on ad spend plus RM1,500 on management, RM2,700 in total. Social drove 45 orders averaging RM90, so RM4,050 in sales, and ROI works out to 50%. Push toward 100 to 200% as targeting and creative improve.
Metrics that map to money, and metrics that do not
Every platform hands you a dashboard full of numbers, and most are context rather than results. The split that matters is whether a metric can be converted into ringgit without guessing.
| Metric | What it tells you | Maps to money |
|---|---|---|
| Reach and impressions | How many people saw the content | No, context only |
| Followers | Audience size, not audience quality | No |
| Engagement rate | Whether creative lands, aim for 2 to 5% on Instagram | No, but predicts cost |
| Click-through rate | Whether the offer makes people act, 1 to 2% works | No, but predicts cost |
| Cost per lead | What each enquiry costs you | Yes |
| Lead to customer rate | How many enquiries become sales | Yes |
| Return on ad spend | Revenue per RM1 of ad spend | Yes |
Read the top group as early warning and the bottom group as the verdict. Engagement and click-through move first, cost per lead a week later, revenue last. Watch only the verdict metrics and you react too slowly. If cost per lead is still fuzzy, start with what counts as a lead and why CPL matters more than likes.
Tagging your links and the GA4 events that make ROI computable
Google Analytics can only report a source if you give it one. A bare link in your Instagram bio arrives as a referral, or as direct traffic. Tagging fixes that, if everyone tags the same way.
- Lowercase, always. GA4 treats Instagram and instagram as two sources, and your report splits in half.
- Fix the source list. Only instagram, facebook, tiktok and whatever else you genuinely use.
- Fix the medium list to three values. Use paid_social for ads, organic_social for posts, bio_link for the profile link.
- Name campaigns by offer and month. The name raya-promo-0326 beats promo-final-v2 six months later.
- Put the creative in utm_content. Values like reel-testimonial tell you which video did the work.
https://yourshop.com.my/promo/?utm_source=instagram&utm_medium=paid_social&utm_campaign=raya-promo-0326&utm_content=reel-testimonial
Build links in a sheet with a formula, and keep it as your record of what ran.
GA4 out of the box reports only page views. Five events cover most SMEs: generate_lead on any form submit, whatsapp_click on outbound clicks to a wa.me link, phone_click on tel: links, view_pricing on your key page, and purchase with a value parameter if you sell online. Mark the first, second and last as key events.
Once a month, open Reports, Acquisition, Traffic acquisition, set the dimension to session source and medium, and read the paid_social and organic_social rows.
Tracking WhatsApp and phone enquiries that never touch a form
Most Malaysian SMEs close on WhatsApp, and WhatsApp reports nothing back to GA4. You build that bridge by hand.
- Use a separate wa.me link per placement. Pre-fill a short code, so the link ends in text=Hi,%20saw%20your%20IG%20Reel%20(IG-R). Whoever replies sees it.
- Ask one question, once. “How did you hear about us?” in the first reply. Low-tech, and still one of the more reliable signals a small team has.
- Log every enquiry the same day. Date, source code, name, request, whether it closed, and the amount. A Google Sheet is enough; anything fancier stops getting filled in.
- Give phone calls their own number if volume justifies it. A second SIM used only on social profiles makes every call an attributed lead.
- Reconcile weekly. Compare the sheet against Ads Manager message counts. A wide gap means people are messaging your main number instead of the ad.
Ten minutes of admin a day is how most local businesses get a defensible cost per lead. If the ad side is new, work through the Ads Manager dashboard guide first.
The gap between a Reel today and a walk-in two weeks later
Here is the case no tool solves. Someone watches a Reel on Tuesday and walks into your shop seventeen days later with no code, no click and no clear memory of where they saw you.
Meta’s default attribution window is a 7-day click and a 1-day view. Anything outside it is invisible to the pixel even though the Reel is why the person came. Device privacy settings remove more. Your platform numbers and your accounts will disagree, permanently.
Three things narrow the gap.
- Give social its own offer. A discount code that exists nowhere else turns an untraceable walk-in into a countable one.
- Ask at the counter, not only online. One question at the point of sale, logged in the same sheet as your WhatsApp enquiries.
- Read the trend, not the day. Compare monthly revenue against monthly social spend across a quarter. If revenue moves when spend moves and nothing else changed, that is evidence.
Then accept a residue you cannot explain and keep a report line for it. For how this affects platform-reported returns, see what counts as a good ROAS in Malaysia.
Valuing organic social without claiming credit for everything
Organic social is not free. Paying an agency RM800 to RM1,500 a month for one platform is a cost whether or not a ringgit goes to ads. Doing it yourself costs time, and time has a price you should write down.
The temptation is to claim everything. Someone searches your brand name, lands on the site, buys, and organic takes the credit because you posted that week. That is not measurement.
A fairer method has three parts. Count only what the customer names or clicks: bio-link sessions tagged organic_social, DMs referencing a specific post, and enquiries where the person says Instagram or TikTok unprompted. Watch branded search and direct traffic month over month, because social shows up there before anywhere else. Track saves and shares rather than likes, since a save is the closest organic signal to buying intent.
Judge organic on a lower bar than paid. Set the target in enquiries per month rather than an ROI percentage, and review it quarterly. Output has to be steady before it can be measured, which is what planning a content calendar a month ahead is for.
A monthly reporting template you can fill in an hour
One page, the same rows every month, filled on the first working day. The point is not presentation. It is that cost, enquiries and closed value sit together, so the ROI line cannot be argued with.
Fill it before you open any platform dashboard, because dashboards tempt you into telling a nicer story than your own sheet does. The example column below uses the Petaling Jaya bakery from earlier.
| Line | Source of the number | Example month |
|---|---|---|
| Ad spend | Ads Manager billing | RM1,200 |
| Management and content | Agency invoice or your time log | RM1,500 |
| Total cost | The two rows above | RM2,700 |
| Click-through rate | Ads Manager | Compare to 1 to 2% |
| Enquiries logged | Lead sheet: forms, WhatsApp, calls | From your log |
| Cost per lead | Total cost divided by enquiries | Under RM30 to RM50 |
| Sales closed and value | Sales record or POS | 45 orders, RM4,050 |
| ROI | Value minus cost, divided by cost, times 100 | 50% |
| Unattributed revenue | Total revenue minus everything traced | State it, do not hide it |
Add one sentence explaining what changed this month: a new creative, a price change, a public holiday, a competitor promotion. Six months later that sentence is the only thing that explains an odd row.
What healthy numbers look like in Malaysia, and what the work costs
No single benchmark fits every industry. F&B and retail running paid social should aim for at least 3x ROAS, meaning RM3 of revenue for every RM1 of ad spend, within 3 months. Service businesses such as clinics, tuition centres and agencies should watch cost per lead instead, because the sale often lands weeks after the enquiry. A CPL under RM30 to RM50 is healthy for most SME categories in the Klang Valley, higher in competitive industries. Both targets move with your margin: a thin-margin business needs better numbers to reach the same profit.
Ads management starts around RM500 to RM1,500 a month at starter scope and passes RM3,000 once you scale. Ad spend sits on top and should start at RM1,000 to RM3,000 a month before the data means much. For comparison, an SEO retainer runs RM1,000 to RM2,500 a month for basic scope and RM3,000 to RM8,000 in a competitive industry, a slower return that does not stop the day you stop paying.
Mistakes that quietly inflate your ROI
Most bad ROI numbers are not lies, just accounting shortcuts nobody noticed.
The five that show up most
- Counting reach and likes as results instead of tracing enquiries and sales.
- Leaving management fees and content costs out of total cost.
- Judging a campaign after 1 to 2 weeks. Give it 4 to 6 weeks minimum before the numbers settle.
- Mixing organic and paid into one figure, so you cannot tell which is working.
- Crediting every WhatsApp enquiry to social when some came from Google or a referral.
A sixth is harder to spot: chasing a cheap cost per lead until lead quality collapses. An RM8 lead that never answers the phone is worse than an RM45 lead that closes, and the ROI line shows it even while Ads Manager looks excellent.
Fix the accounting first, then the tracking, then the campaigns. Any other order means optimising toward a number that was wrong to begin with. If you are still deciding where the effort belongs, the platform comparison is a better place to start than more measurement.
Nak tahu angka sebenar untuk business anda?
Hantar detail ringkas. Kami semak akaun atau website anda, pastu tunjuk di mana duit bocor dan apa langkah paling berbaloi seterusnya.
Frequently asked questions about social media ROI
How often should I check my social media ROI?
Monthly suits most Malaysian SMEs. Weekly checks show noisy data and tempt you into changing campaigns too early, while quarterly checks mean you react too late. Watch cost per lead weekly, but compute full ROI once a month.
What counts as value if I do not sell directly through social media?
Use qualified leads multiplied by close rate and average deal size. A clinic getting 20 enquiries a month from Instagram and closing 30% at an average RM300 treatment value generates roughly RM1,800 in traceable value. Use your own close rate.
Is organic social worth measuring if I am not paying for ads?
Yes, because organic still costs money. A management fee of RM800 to RM1,500 a month for one platform is real spend, and your time has a price. Hold organic to a value standard, but set the bar lower than paid.
What is a realistic ROI to expect in the first 3 months?
Many Malaysian SMEs see breakeven to modest positive ROI, roughly 0 to 50%, in months 1 and 2 while pixel and audience data build. Returns above 100% usually appear from month 3 or 4 as targeting improves.
Should I use ROAS or ROI to measure my campaigns?
Use ROAS for quick decisions at ad set level, since it answers which ad is working now. Use ROI for the monthly picture, because it includes management fees and content costs. A campaign can show healthy ROAS and still lose money.
Can I measure ROI without a website?
Yes. Plenty of Malaysian businesses sell entirely through WhatsApp or Instagram DMs. Use a different wa.me link per placement, ask how the person found you, and log source, outcome and order value the same day.
Which UTM medium should I use for the link in my bio?
Use bio_link, kept separate from organic_social and paid_social. Bio traffic behaves differently from feed traffic, so mixing them hides which produces enquiries. Set the source to the platform, and keep everything lowercase.
How do I handle a sale I cannot trace to any channel?
Put it in an unattributed line and leave it there. Do not spread it across channels to make the report tidy, and do not assign it to social just because social is under review. Better source logging at the point of enquiry is the fix.
Conclusion: what to set up this month
Three jobs unlock the rest: agree the UTM rules, set up generate_lead and whatsapp_click in GA4, and start a lead log that gets filled the same day an enquiry arrives. Give it a full month, then run the report template and see where you land against 200% in the good case and 50% in the ordinary one. Expect a clearly positive figure between month 3 and month 6, and an unattributed line that never quite closes. If you want someone to check your tracking and your real cost per lead before you raise the budget, talk to the Lesgo Media team for a free consultation.
Baca lagi
- Influencer Marketing in Malaysia: What KOLs Cost and How to Brief Them
- Buat Video Marketing Bajet Kecil: Panduan untuk SME Malaysia
- How Often Should Your Business Post on Social Media in Malaysia?
