A Malaysian furniture shop spends RM8,000 a month on Meta. Ads Manager reports eleven purchases. The showroom rings up ninety-four sales that month, and the sales team keeps hearing "I saw you on Facebook". Both numbers are true. Meta only ever saw the eleven that finished on the website.
Facebook offline conversions close that gap. This guide covers what they are, what changed in 2025, how to send them without breaking the Personal Data Protection Act, and what the numbers look like once the loop is closed. It is written for businesses that sell in person and advertise online, which is most of the SMEs we run Meta Ads for at ZenWeb.
1. What are facebook offline conversions?
Quick Answer: A facebook offline conversion is any sale, booking or deposit completed away from your website that you send back to Meta afterwards. You pass the customer's scrambled phone number or email with the sale value and date. Meta matches it to someone who saw your ad, then credits that ad with the revenue.
The mechanics are simpler than the name suggests. Your point-of-sale system or CRM already stores a phone number against every sale, and that number is also attached to a Facebook or Instagram account. Meta compares the two in scrambled form, and where they match, the in-store sale gets attached to the ad that brought the customer in.
Facebook offline conversions are not modelled estimates or survey guesswork. They are a deterministic match on data you already hold, which is why they move reported revenue so sharply for businesses that close in person.

Three things travel with each event:
- Customer identifiers. Phone, email, name, city, or your own customer ID. More of them means a higher match rate.
- Event details. What happened (Purchase, Lead, Schedule), when, and what it was worth in ringgit.
- The action source. A label telling Meta the sale happened at a counter rather than on a web page, so your Meta Ads campaigns never double-count it.
Key takeaway: Nothing new is collected. Your own sales records are simply handed back in scrambled form, where the algorithm can finally see them.
The walkthrough below shows the setup inside Events Manager. Watch the identifier mapping step, because that is where most Malaysian setups quietly lose half their matches.
How to Set Up Facebook Offline Conversion Tracking (Step-by-Step Tutorial 2026)
Source video: Watch on YouTube
2. Why Meta under-reports your in-store sales
Quick Answer: Meta only reports what it is told about. Its Pixel and Conversions API watch your website, so a customer who clicks an ad, walks into your shop and pays cash disappears from the report. The ad still worked. The measurement stopped at your front door.
Most attribution arguments in Malaysia are about the opposite problem, Meta claiming credit it does not deserve, which we cover in why Meta claims more sales than GA4. For in-person businesses the error runs the other way, and it runs much larger.
Think about who buys from a showroom or a clinic. They see the ad on Sunday, message on WhatsApp on Tuesday, visit on Saturday, and pay by DuitNow at the counter. Not one step touches a tracked page. The Department of Statistics Malaysia still reports retail trade separately from e-commerce for that reason: physical selling is the main channel here, not a rounding error.

Without facebook offline conversions, the missing data does more than understate a report. It changes what the machine learns:
- Bidding chases the wrong people. Advantage+ optimises for whoever completes a web checkout, not whoever walks in and spends RM6,000.
- Good campaigns get switched off. A campaign showing RM90 per web lead may be producing RM40 per real sale, invisibly.
- Budget drifts. Online-heavy campaigns look efficient by comparison and quietly take the money.
Key takeaway: Missing offline sales train the algorithm to find the wrong customers, so a reporting error quietly becomes a performance error.
Selling in person but measuring online only?
We wire POS and CRM sales back into Meta on every retail and clinic account we run.
See how ZenWeb manages Meta Ads →3. What changed in 2025: the offline event set is gone
Quick Answer: Meta retired the separate offline event set and its CSV upload tool in May 2025. In-store sales now go through the same Conversions API as your website events, into one dataset, tagged as physical store. Guides that tell you to create an offline event set describe a screen that no longer exists.
Most articles on facebook offline conversions have not caught up with this, and it matters because it changes who does the work. The old flow was a marketing task: export a spreadsheet, upload it, map the columns. The new flow is a data task, sent server to server, sitting on top of the same Pixel and Conversions API install your website already uses.
Meta's documentation on sending offline events using the Conversions API now treats in-store sales as one event type among several, sharing a dataset with your Pixel events. Two labels do the sorting: physical_store for a sale completed at a counter, and system_generated for something your back office produces later, such as a deposit converting to a full invoice.
- One dataset, not two. Website and in-store events sit together, so deduplication and reporting finally line up.
- A connection, not an upload habit. Manual files still work through partner tools, but a scheduled feed stops the whole thing collapsing when the one person who did the upload goes on leave.
- Old tutorials mislead. If a video shows an "Offline Event Set" tab, it predates the change.

Key takeaway: Offline events are ordinary Conversions API events with a physical store label, so the setup now belongs with whoever owns your data.
4. The data you need, and how to send it
Quick Answer: Phone number and email do most of the matching; name, city and your own order ID lift it further. Every identifier is hashed with SHA-256 before it leaves your system, so Meta receives a scramble it can compare but cannot read back into a phone number.
Hashing is where Malaysian owners get nervous, and the concern is fair. A phone number becomes a 64-character string. The same number always makes the same string, which is how matching works, but the process only runs one way. Meta hashes its own user data the same way and compares the scrambles, so your customer list never travels as readable text. That is also why first-party data has become the most valuable asset in a small marketing stack.
Two local habits break more matches than anything technical: phone numbers stored in mixed formats (012-345 6789, 0123456789 and +60123456789 all hash differently), and full names dumped into one column with titles like Encik or Dr still attached. Whatever your CRM already captures is usually enough; the work is cleaning it. Then run these six steps in order.
- Decide which event you are sending. Purchase for a completed sale, Lead for a walk-in enquiry, Schedule for a booked appointment. Send the one closest to money.
- Check your source holds an identifier. Open ten recent receipts. If fewer than seven carry a phone or email, fix capture at the counter first.
- Clean and normalise the fields. Country-code phone format, lowercase trimmed emails, separate first and last name, city and state in plain text, your order ID as the external identifier.
- Connect the source to your Meta dataset. A direct Conversions API integration, a partner connector, or a server-side container. It must hash before sending and stamp the action source as physical store.
- Send a test batch. Push 50 to 100 past sales, then read received events and match rate in Events Manager. Meta's dataset quality reporting names any field it could not read.
- Schedule it daily. Daily beats weekly and both beat monthly, because every event must reach Meta within 62 days of the sale to be attributed at all.

If website events are also misfiring, fix those first. Facebook offline conversions sent into a broken dataset inherit the same problems, as our guide to a Pixel that is not firing explains, and the same neglect is behind lead form data that never arrives anywhere useful.
Key takeaway: Source, clean, connect, test, schedule. A hundred old receipts tell you your real match rate before you commit to a daily feed.
5. How match rate improves with every identifier you add
Quick Answer: A phone number alone matches roughly four in ten Malaysian in-store sales. Adding email lifts it past six in ten, and adding name, city and your own order ID pushes it past eight in ten. Each extra field gives Meta another way to recognise the same person.
Match rate decides whether facebook offline conversions are worth the effort, and it is almost entirely within your control. Duplicate or malformed records drag it down, the same failure mode behind a Pixel firing twice.
| Identifiers sent | Sales matched | Match rate |
|---|---|---|
| Phone only | 41% | |
| Email only | 47% | |
| Phone + email | 63% | |
| Phone + email + name | 71% | |
| Add city and state | 78% | |
| Add your own order ID | 83% |
Source: Based on ZenWeb's client sample of 500+ Malaysian SME accounts, offline event batches, 2024–2026.

The jump from phone alone to phone plus email is the biggest single gain, and it costs nothing but one extra field at the counter.
Key takeaway: Ask for an email as well as a phone number at the till. That habit is worth roughly twenty points of match rate.
6. What reported ROAS looks like before and after
Quick Answer: Reported return on ad spend roughly doubles to triples for in-person categories once offline sales are fed back. Nothing about the campaigns changed on the day of the switch. The revenue was always there; Meta could not see it, so it never reached the report you judged the account on.
These are the same accounts a month before and a month after facebook offline conversions went live, budgets held steady. Read the last column as measurement recovered, not performance created, which is why a ROAS figure quoted without a measurement setup means little, a point we make in what Facebook ads really cost in Malaysia.

| Sector | Online events only | With offline events | Uplift in attributed revenue |
|---|---|---|---|
| Dental and aesthetics clinics | 1.4x | 3.8x | +171% |
| Furniture and home retail | 2.1x | 4.6x | +119% |
| Motor workshops and tyre shops | 1.1x | 3.2x | +191% |
| Beauty and wellness chains | 1.8x | 3.9x | +117% |
| Bridal and event services | 0.9x | 3.1x | +244% |
| Building materials and trade | 1.3x | 3.4x | +162% |
Source: Aggregated from ZenWeb-managed campaigns, Malaysia, 2024–2026. Compares 30 days before with 30 days after, at steady budgets. Sector averages.
Bridal and motor sit at the top because almost nothing closes online, so almost everything was invisible. B2B accounts follow the same pattern, which we look at in whether Meta Ads work for B2B in Malaysia.
Key takeaway: The less of your sale happens online, the more offline events change the picture. Measure before you cut budget.
7. Where in-store sales land inside the 62-day window
Quick Answer: Offline events must reach Meta within 62 days of the sale, and slow-considering categories push against that limit. Impulse retail closes almost everything in the first week. Furniture and renovation still complete nearly a fifth of sales after day 62, where no upload can rescue them.
The 62-day rule is where good intentions go wrong. A quarterly upload habit sounds tidy and quietly throws away the sales that took longest to win. Festive trading makes it worse, because deposits taken during a campaign such as Hari Raya often settle weeks later.
| Category | 0–1 day | 2–7 days | 8–28 days | 29–62 days | After 62 days |
|---|---|---|---|---|---|
| F&B and impulse retail | 46% | 31% | 17% | 5% | 1% |
| Motor workshops | 22% | 33% | 29% | 12% | 4% |
| Clinics and aesthetics | 9% | 24% | 38% | 21% | 8% |
| Furniture and renovation | 5% | 16% | 34% | 27% | 18% |

Source: From ZenWeb client tracking across Malaysian retail and service accounts, 2024–2026. Shaded cells fall outside the 62-day window.
Two rules follow. Send daily, so nothing ages out through neglect. And for long-consideration categories, send the deposit as its own event, since that lands inside the window even when the final invoice does not. Repeat purchases then become a loyalty marketing exercise rather than an attribution problem.
Key takeaway: A monthly upload is fine for a kopitiam and badly wrong for a furniture showroom. Match upload frequency to how long customers take to decide.
Not sure how much revenue your account is missing?
Send us one month of POS data and we will show you what Meta never got credited for.
Talk to our Meta Ads team →8. How ready are Malaysian SMEs to do this?
Quick Answer: Most Malaysian SMEs already capture the data. Clinics record a phone number on nine sales in ten, yet barely one in five sends anything back to Meta. The bottleneck is not collection or privacy. Nobody has connected the system holding the sale to the system buying the ads.
The table compares three things: whether the sale carries an identifier, whether it exports without a developer, and whether the business sends offline events today. The gap between the first and last column is the opportunity, and on most of the Meta Ads accounts we inherit it is wide open.
| Sector | Sale carries phone or email | Exportable without a developer | Sending offline events today |
|---|---|---|---|
| Dental and medical clinics | 91% | 74% | 22% |
| Beauty and wellness chains | 78% | 61% | 14% |
| Motor workshops | 69% | 44% | 8% |
| Furniture and home retail | 63% | 52% | 11% |
| Building materials and trade | 58% | 47% | 6% |
| F&B outlets | 34% | 26% | 3% |

Source: ZenWeb operational data, Malaysian SME accounts audited at onboarding, 2024–2026.
Clinics are the clearest miss: the data is there, it exports cleanly, and almost nobody uses it. F&B sits at the other end because a walk-in lunch crowd has no identifier, which is why footfall retail leans harder on the tactics in our retail marketing guide. Where capture is weak, the destination you send enquiries to decides how much you collect, as lead form versus landing page versus WhatsApp sets out.
Key takeaway: If you run a clinic, workshop or showroom, the data is already in your system. The missing piece is a connection, not a new tool.
9. What facebook offline conversions cannot fix
Quick Answer: They fix credit, bidding signal and audience quality. They do not fix a weak offer, slow follow-up, or a landing page nobody converts on. Better measurement makes a good account visibly good; it does not turn a bad one around.
Worth being blunt about the limits, because expectations run high after the first month's report. What genuinely improves: credit lands where it belongs, so footfall campaigns stop looking like losers; bidding gets a real purchase with a ringgit value to aim at; and lookalikes built from paying customers beat lookalikes built from page viewers.
What stays broken:
- Reports still will not reconcile. Meta and your accounts count differently, the same way GA4 rarely matches a CRM. Expect direction, not decimal agreement.
- Double counting is a real risk. A sale recorded online and again at the counter inflates everything, the offline cousin of over-counted conversions. Deduplicate on your own order ID.
- Slow follow-up still loses the sale. Measurement cannot rescue a lead nobody rings back, which is the argument for replying within five minutes.
- A broken landing experience stays broken. If clicks convert nowhere, start with why Facebook ads are not converting on your website.

Key takeaway: Deduplicate on your own order ID from day one, or you trade one wrong number for another.
10. PDPA: handling customer data the right way
Quick Answer: Under the Personal Data Protection Act 2010 your business is the data user and stays responsible even after data is hashed. Tell customers in your privacy notice that purchase data may be shared with advertising platforms in scrambled form, give them a way to opt out, and keep the notice bilingual.
Hashing reduces exposure but does not remove your duty of care. The Personal Data Protection Act 2010 puts the obligation on the business collecting the data, and the 2024 amendment tightened duties around breach notification and data protection officers. Treat facebook offline conversions as a disclosure question, not only a technical one.
- A privacy notice that mentions this. Plain wording that purchase records may be shared with advertising platforms in encrypted form, in Bahasa Malaysia and English.
- Notice at the point of capture. A line on the receipt or booking form, not buried three clicks deep on your website.
- A working opt-out. One flag in your POS or CRM that excludes a customer from every future batch.
- Send only what you need. Identifiers, event, value, currency and time. Never diagnoses, treatment notes or anything else sensitive.

If you already run a compliant cookie notice, this is the same discipline applied to a different data flow, as our guide to the PDPA cookie banner explains.
Key takeaway: Hashing protects the customer; disclosure protects you. Update the notice and add an opt-out flag before the first batch.
11. Conclusion: close the loop before you cut the budget
If your customers pay in person and your reporting stops at the website, you are judging your advertising on a fraction of the result. Facebook offline conversions close that loop with data you already hold, and the setup is now an ordinary Conversions API connection rather than a monthly spreadsheet ritual.
Start small this month. Export a hundred past sales, clean the phone numbers, send one test batch, and read the match rate. That afternoon usually tells a Malaysian SME more about its Meta Ads than a quarter of dashboard reviews, and it makes every number in our guide to Facebook Ads metrics mean something closer to the truth.
Find out what your in-store sales are really worth
Send us one month of POS or CRM data. We will run a free offline match test, show you the revenue Meta never got credited for, and give you the setup steps whether or not you work with us.
Request my free offline match test →
12. Frequently Asked Questions
1. Do I still create an offline event set in Business Manager?
No. Meta retired offline event sets and the standalone upload tool in May 2025. In-store sales now go through the Conversions API into the same dataset as your website events, tagged as physical store. Any tutorial showing an Offline Event Set tab is out of date.
2. What match rate should a Malaysian business expect?
Around 40% if you send phone numbers alone, and above 80% if you send phone, email, name, city and your own order ID. The biggest single gain comes from adding email. Most shortfalls trace back to phone numbers stored in mixed formats.
3. Is sending customer data to Meta legal under the PDPA?
Yes, with conditions. Your business stays the data user under the Personal Data Protection Act 2010, so facebook offline conversions need a privacy notice disclosing the sharing, notice at the point of capture, and a working opt-out. Identifiers are hashed, so Meta never receives readable phone numbers.
4. How far back can I upload old sales?
Sixty-two days. Anything older will not be attributed to any ad, so a backlog of last quarter's receipts is mostly lost. Send daily going forward, and for slow purchases send the deposit as its own event so the first commitment lands inside the window.
5. Will offline conversions double count sales I already track online?
Only if you let them. Send your own order or invoice number as the event identifier and Meta treats the online and in-store record of one sale as a single event. Skip that step and reported revenue jumps in a way that flatters the account and misleads the budget.


