ECLIPSE
Topic: Social Media

How to Measure Social Media ROI in Saudi Riyals

· 1525 words · Updated · Eclipse Advertising Agency

Key takeaways
  • Define one business outcome per campaign (sales, qualified leads, bookings or retention) before reading any platform metric.
  • ROI = (attributable gross profit − full cost) ÷ full cost, where cost includes media, team or agency time, content and tools, recorded on a consistent VAT basis.
  • Start valuing leads at close rate × net order value × gross-margin rate, adjusted where relevant, and trace them with UTMs, promo codes, a source question and server-side events.
  • Platform, GA4 and CRM numbers will differ; use the CRM for riyals and a well-designed holdout test to estimate how much of the result the ads caused.

Social media ROI in Saudi riyals measures the profit attributable to social after its full cost, relative to that cost. Getting a defensible answer takes four things: a clear business outcome, a complete cost figure, a riyal value for each result, and an honest view of what your tracking can and cannot see. This guide walks through each one.

1. Define the business outcome first

Before opening any dashboard, write down what the social activity is supposed to produce. Pick one primary outcome per campaign:

Everything else in this guide depends on this choice. If the outcome is vague, the ROI figure will be too.

2. Count every riyal of cost

Counting only media spend can overstate ROI by excluding labour, production and tool costs. A complete cost figure (C) includes:

A note on VAT: ZATCA describes VAT as an indirect tax imposed on goods and services bought and sold by businesses, with a few exceptions. Whether you can recover the VAT on your marketing invoices depends on your own registration and circumstances, so confirm the treatment with your accountant. Then record costs and revenue on the same basis — both before VAT or both including it — or the ratio will be skewed.

3. Use a formula built on profit

The core formula is:

ROI (%) = (G − C) ÷ C × 100

G is the gross profit attributable to social in the period, and C is the total cost above. Use gross profit, not revenue: a sale of a low-margin product returns far fewer riyals to the business than its price suggests. A result above zero means social returned more profit than it cost; a result below zero means it did not.

Do not confuse this with ROAS (revenue ÷ ad spend). ROAS is a useful in-platform efficiency signal, but it ignores margin and every cost except media.

4. Put a riyal value on a lead

If you sell through leads rather than a checkout, you need a value per lead (V) to convert lead counts into riyals:

V = close rate × net order value × gross-margin rate

Take the close rate from your CRM for leads from that specific source, not your company-wide average, because lead quality usually differs by channel. As a purely illustrative example: if one in five qualified leads from a campaign closes, the average net order value is A riyals and the gross-margin rate is M, each qualified lead is worth 0.2 × A × M riyals. This is a simple first-order estimate: adjust it for returns, fulfilment costs, repeat purchases and your measurement period where relevant, and recalculate V as real closed deals accumulate.

5. Tag every link and offer

You cannot attribute what you do not tag. Google's guidance is that you should always use utm_source, utm_medium and utm_campaign, and that values are case sensitive, so Instagram and instagram become separate rows in the Traffic acquisition report. Keep a shared naming sheet and use it for every ad, bio link, story link and influencer post. If your GA4 property is not yet tracking leads properly, start with our GA4 setup guide for Saudi lead-generation websites.

Add a second layer that does not depend on clicks:

6. Send server-side conversion events

Browser pixels miss some conversions. Each major platform offers a server-side route: Meta's Conversions API connects marketing data from your server, website platform, app or CRM; TikTok's Events API covers web, app and offline events and TikTok recommends running it alongside the Pixel with event deduplication; Snap's Conversions API reports web, app and offline events. If you send the same event from both pixel and server, set up deduplication — Meta, for example, matches the pixel's eventID and event name to the server's event_id and event_name. These integrations improve what platforms can see; they do not make platform numbers equal your CRM.

7. Accept that three numbers will not match

SourceWhat it countsMain blind spotUse it for
Ad platformConversions it links to its own ads, under its own attribution settingAttributes conversions under its own rules; generally has incomplete visibility into other touchpointsOptimising within that platform
GA4Key events credited by your chosen attribution modelVisits without tagged links; offline and WhatsApp salesComparing channels on one ruler
CRM / sales recordsClosed deals and real revenueOnly as good as source captureThe riyal figure in your ROI

In GA4 you can choose data-driven or last-click attribution, and the lookback window for most key events defaults to 90 days, with 30 or 60 days as alternatives. Ad platforms apply their own attribution settings, so check the setting shown in each ads manager before comparing figures. Then there is dark social: links shared in private messages and WhatsApp, or a screenshot someone acts on later, can appear as direct or otherwise unattributed traffic, or may not create a trackable visit at all. This is why the promo codes and source question above matter.

8. Separate organic from paid

Calculate ROI for organic and paid separately. Organic cost is mostly team time and content; paid adds media spend. Tag organic links with a different utm_medium (for example social versus paid_social) so one does not absorb the other's credit.

9. Test incrementality with a holdout

Attribution tells you which touchpoint got credit, not whether the sale would have happened anyway. A holdout test estimates that. Split your market into comparable groups — for example, two sets of cities, or two audience lists — keep ads running in one group and pause them in the other for a fixed period, then compare the outcome per group. Change nothing else during the test, run it long enough to cover a normal purchase cycle, and treat small differences with caution. With a properly randomised, adequately powered holdout, the difference between the groups estimates the incremental lift from the ads, subject to statistical uncertainty.

10. Report on a fixed cadence

11. What not to call ROI

Likes, reach, impressions, followers, views, engagement rate and clicks are diagnostics. They can explain why results moved, but none of them is a return in riyals. Report them beside ROI, never instead of it.

Getting help

Eclipse offers social media management and digital marketing services.

Frequently asked questions

What is a good social media ROI in Saudi Arabia?

There is no universal figure, because margins, sales cycles and costs differ by business. Any ROI above zero means social returned more gross profit than its full cost. The useful comparison is against your own previous periods and other channels, measured the same way.

Why does Meta report more sales than my CRM?

Ad platforms count conversions they link to their own ads under their own attribution settings, and they generally have incomplete visibility into other channels that also touched the customer. Your CRM records closed deals. Use the platform figure to optimise campaigns and the CRM figure for ROI.

How do I measure sales that close on WhatsApp?

Give each campaign a distinct pre-filled message or promo code, ask new customers how they heard about you, and save the source on the lead record in your CRM. Then count the deals that close against that source.

Sources: zatca.gov.sa · support.google.com · support.google.com · developers.facebook.com · developers.facebook.com · ads.tiktok.com · developers.snap.com