MetoCRM
Meta Conversions API
An ad algorithm cannot learn who to target while it never sees what happened after the click. MetoCRM sends the sale you closed in the CRM back to Meta's Conversions API — without a patient's phone number or email ever leaving in readable form.
The three weeks Meta cannot see
In medical tourism the ad's job ends with a message and the sale's job starts there. Someone clicks, writes on WhatsApp, spends two weeks on price and dates, and books a flight in the third. Meta sees only the first link in that chain: a conversation started.
The result is campaigns that look healthy in the ads manager and sell nothing. The algorithm is good at finding people who will write a message; not knowing who actually had surgery, it cannot go looking for that profile. Budget drifts towards audiences with high message counts and no revenue.
The Conversions API (CAPI) closes that gap: when the sale closes in the CRM, the event is reported server-to-server. Meta ties the person back to the ad they came from and starts looking for more like them.
Which action becomes which event
In MetoCRM the source of the signal is the patient status. Each status maps to a Meta event, and moving a patient into that status produces the event. The events used are Contact, Lead and Purchase.
Mapping is optional per status: a status can be set to send nothing. That keeps negative outcomes inside the CRM where they belong — "unreachable" or "changed their mind" should not travel to the ad platform as a signal.
Status changes are not the only trigger. The system also recognises these sources, each with its own mapping:
- Facebook lead form — on submission, tied to the form's own identifier
- Messenger message — a chat started from the ad that was clicked
- Instagram message — a conversation opened through DM
- CRM status change — the later steps of your sales funnel
Purchase value: flat average or the real quote?
A Purchase event needs a value; Meta's ROAS maths depends on it. There are two options, chosen at setup:
- A flat average. Every sale is reported with the same value. Fine when your treatment prices cluster, and it depends on nothing else.
- The real quote total. The patient's quote in the CRM is found and its actual total is sent in the quote's own currency. You choose which quote status counts as sold.
The second produces a truer signal: a €2,000 hair transplant and a €12,000 bariatric case should not reach the algorithm with equal weight. If no quote is found, or the total falls below the threshold, the system quietly falls back to the average and records that it did — so "where did this number come from" has an answer later.
Nothing personal leaves in readable form
Meta needs an identifier to match a person. MetoCRM hashes those fields with SHA-256 before sending: email, phone, name, country and record identifier. What reaches Meta is an irreversible digest, not readable patient information.
How strong the match is depends on the source, and the system handles this in three tiers:
- Ad-linked. Click-to-WhatsApp chats (ad click identifier plus WhatsApp Business account) and Messenger chats started from an ad. The strongest signal: Meta ties the person to the ad they clicked and can optimise the campaign on it.
- Phone or email match. Instagram, WhatsApp chats started from a QR code, and records created by hand. Matched on a hashed phone or email — a real signal, but not attributable to a specific ad.
- No identifier. A record with neither a phone number nor an ad link. In that case nothing is sent — and the panel says so plainly, so nobody marks a patient for nothing.
Instagram messaging ads are not conversion-optimisable on Meta's side, so Instagram patients do not enter the first tier; they are sent from the second, matched on phone or email.
A 15-minute window to undo
Mis-taps are inevitable, especially for a team working from a phone. So the event does not leave immediately: 15 minutes after the status change the system re-reads the record and sends only if the status still stands.
Undo within that window and nothing reaches Meta. Since a wrongly sent conversion cannot be deleted, this window turns an irreversible mistake into a reversible one.
Every event sent is on the record
The most maddening state in ad measurement is not knowing whether something was sent. MetoCRM records every dispatch: which event, which patient, which pixel, when, the payload sent and Meta's own response.
Duplicates are prevented too: each dispatch carries a unique key, and the same key never sends twice. During setup you can use a test event code and verify in Meta's Events Manager without polluting live data.
Multiple pixels and source routing
One pixel is not enough if you run several clinic brands or several ad accounts. MetoCRM supports multiple pixels, a default among them, and routing by source: you decide which Facebook page or Instagram account writes to which pixel.
Event mappings are per pixel as well, so two brands sharing one CRM can map the same statuses to different events.
Setup
Two routes. Connect with your Meta account and the system lists your businesses and ad accounts, finds a suitable pixel or creates a new one for MetoCRM if needed. Entering your own pixel ID and access token by hand works too.
Access is validated on connection — a pixel you have no permission for is not silently saved. After that the only remaining task is mapping statuses to events.
Frequently asked questions
What is the Meta Conversions API (CAPI)?
Is patient data sent to Meta?
Can a conversion be undone if I mark the wrong patient?
How is the sale value reported?
How do I verify events are arriving?
Related pages
Let's close the measurement loop
In the demo we map your statuses to events against your own funnel, not a generic one.