Facebook CRM events involve sending stage updates from your CRM—such as qualified lead, appointment, quote acceptance, and sale—back to Meta as events via the Conversions API. With this signal, the advertising algorithm learns to target profiles similar to people who show up for appointments and pay, rather than just anyone who fills out a form. Events must match using hashed email, phone, or lead_id and be transmitted within 7 days of occurring.
What are Facebook CRM events?
If the last event Meta sees in a campaign is a form submission, the algorithm counts everyone who fills out the form as a success. For a clinic, however, success means the patient answers the phone, attends a consultation, and pays a deposit. CRM events close this gap. When your sales team moves a lead to the next stage in your pipeline, that update is sent to your Meta dataset as a server-side event.
Definition: A Facebook CRM event is a server-side conversion record of the sales stage a lead reaches in your CRM (qualified, appointment, won, paid) that is sent to Meta via the Conversions API and matched with an ad click or form registration.
Migrating from Offline Conversions API to Conversions API
According to DataCops’s 2026 guide, Meta retired the separate Offline Conversions API in May 2025. Offline sales are now sent to a dataset via the standard Conversions API. Agencies accustomed to the old offline event set upload workflow must migrate their setup to datasets. In practice, you create a dataset in Events Manager and connect both your web pixel and CRM to that same dataset.
What fields does a CRM event carry?
- event_name: The name of the event. Example: Schedule, Purchase, or a custom name like “QualifiedLead”.
- event_time: The actual timestamp of the stage change. Write when the event happened, not when the record was uploaded.
- user_data: Hashed email and phone number using SHA-256.
- lead_id or fbclid: The record ID from a Lead Ads form or the click ID from a web click.
- event_id: A unique ID that prevents counting the same event twice.
- value and currency: The amount and currency for sales events.
Which pipeline stages should be sent as events?
You do not need to send every stage, as each event tells the algorithm to “find people like this.” DataCops recommends sending appointment, attendance, won, and paid stages as separate events. Adding the qualified lead stage provides earlier and more frequent signals to the algorithm for clinics with lower monthly lead volume.
- Qualified lead: The sales rep has verified needs, budget, and treatment suitability. This is the funnel's most frequently repeated meaningful signal.
- Appointment scheduled: The consultation is added to the calendar. It demonstrates patient intent.
- Appointment attended: Separates no-shows. Prevents spending budget on profiles that book but fail to show up.
- Won: The quote is accepted.
- Paid: A deposit or full payment is collected. Sent with a monetary value for value-based optimization.
Which stages should not be sent?
- Operational intermediate statuses like “First message sent” or “Unreachable.” These carry no buying intent and pollute the signal.
- Re-entries into the same stage. If a record leaves the “Quote” stage and re-enters it, do not resend the event.
- Lost leads. Mark them in your pipeline. Never reaching qualified stages is already a signal for the algorithm.
How lead quality signals impact ad performance
According to Proje CRM's 2026 content, if the platform does not know the sales outcome, it spends more budget on profiles that fill out forms but never answer the phone. Meta's solution is the Conversions API. When fed only form signals, the algorithm rewards cheap, quick form-fillers. These profiles are often curious users, bargain hunters, or accidental clickers.
Meta's Conversion Leads optimization targets this exact problem. The campaign sets a lower-funnel stage from your CRM—such as a qualified lead or appointment—as its objective rather than initial form submission. The algorithm learns which form-fillers reach qualified or appointment stages and shifts delivery to people similar to them. Cost per lead may rise during the initial weeks. The key metric to monitor is cost per qualified lead or cost per appointment.
- Form signal only: Leads are cheap, but your sales team spends time chasing unreachable contacts.
- Form and CRM stages combined: Lead volume may drop, but the percentage of people who answer the phone and show up for appointments tends to increase.
- Payment event and value: The algorithm can distinguish profiles seeking higher-value treatment packages (such as combined implants and veneers).
According to Proje CRM, leads gathered through Meta Lead Ads forms are stored on Meta for 90 days. Therefore, you should instantly pull form data along with the lead_id into your CRM and retain it permanently. To learn how forms are transferred to your CRM, explore ways to lower ad costs with Meta Lead Ads integration.
How to build an event mapping table
A mapping table fixes in one place which name, trigger, and key will be used for each pipeline stage sent to Meta. It also resolves disputes between agencies and clinics over what an event represents. Below is a sample template for an aesthetic or dental clinic:
| Pipeline stage | Meta event name | Trigger action | Match key | Timing note |
|---|---|---|---|---|
| Prospect | Lead (do not resend) | Form submission | lead_id | Meta already records the form |
| Interested / Qualified | QualifiedLead (custom) | Sales rep verified needs and budget | lead_id + hashed phone | As soon as stage changes |
| Appointment scheduled | Schedule | Consultation added to calendar | lead_id + hashed email and phone | At calendar booking |
| Appointment attended | AppointmentAttended (custom) | Receptionist marked attendance | lead_id + hashed phone | On day of visit |
| Quote / Won | ClosedWon (custom) | Patient approved treatment package | lead_id + hashed phone | Within 7 days of approval day |
| Paid | Purchase (value + currency) | Deposit or payment recorded | lead_id + event_id | On payment day |
Steps to implement the table
- Fix event names. Assign a single event name to each stage and do not change it later. Changing names splits historical data into two separate events in reports.
- Normalize your data. According to DataCops, emails must be lowercased and stripped of spaces before hashing, while phone numbers must include the country code with digits only. For example, "+90 (532) 000 00 00" becomes "905320000000" before applying SHA-256.
- Set up deduplication. Meta counts a sale sent from both pixel and CRM as a single event only if the event name and event_id match. For clinics accepting payments on the web, both sources must generate the same event_id.
- Define the value field. Decide upfront whether to send deposit amounts or full package values for Purchase events, and apply the same rule across all campaigns.
How to improve Event Match Quality
DataCops defines Event Match Quality in Events Manager as a score from 0 to 10 and an indicator of CRM data hygiene. Matching requires sending hashed email or phone data along with the click ID (fbclid) if available. Improving the score is operational rather than technical: record phone numbers with country codes, require emails on forms, and capture the fbclid from URLs via hidden form fields to store in CRM records.
Clinic example: event flow from consultation to sale
Suppose a hair transplant clinic in Istanbul runs a Lead Ads campaign targeting Germany. Here is how a patient journey unfolds, along with the event sent to Meta at each step:
- Monday 9:40 PM: The patient fills out the form. The record enters the CRM with a lead_id and is assigned to a German-speaking sales rep via automated WhatsApp greeting and lead distribution. No extra event is sent to Meta.
- Tuesday: The rep receives patient photos and verifies budget and date flexibility. The record moves to the "Qualified" stage, and QualifiedLead is sent.
- Thursday: A video consultation with the doctor is scheduled, and Schedule is sent.
- Next Monday: The patient attends the consultation, and AppointmentAttended is sent.
- Wednesday: The patient approves the treatment package—including graft count, accommodation, and transfer—and pays a deposit. A ClosedWon and a Purchase event with value are sent on the same day.
The critical factor is that every event must reach Meta within 7 days of its event_time. According to DataCops, Meta rejects events that arrive more than 7 days after occurring. In an example scenario from the same source, out of 200 sales uploaded in bulk at the start of the month, around 70 were dropped because they were older than a week, yielding only 130 matches from 200 rows. The most common mistake in clinics is uploading sales via Excel at the end of the month.
ÖzgürKod CRM simplifies this workflow. Patients from Meta Lead Ads automatically open as records complete with form IDs, allowing your team member to update the stage on the sales pipeline with a single click. This creates the data needed to trigger event transmission without waiting for weekend or month-end backlogs. Details on connecting your ads to your CRM can be found on our Facebook CRM page.
What to watch for after setup
The first two weeks after setup serve as a verification period to confirm that events flow properly and match accurately. Complete the following checks before altering campaign objectives:
- Ten-minute test: Using the method recommended by DataCops, count how many of your last 20 won sales appear as events in Events Manager. For missing ones, inspect phone formatting and lead_id fields in your CRM records.
- Monitor match scores weekly: If scores drop, a new team member may be entering phone numbers without country codes.
- Check for double counting: If the Purchase event count exceeds the payment count in your CRM, your event_id rule may be broken.
- Maintain stage update discipline: If a sales rep updates a stage three days late, half of your 7-day window is lost. Check your "un-updated appointments" list at daily wrap-up.
- Do not rush objective changes: Switch to Conversion Leads optimization only after qualified events flow consistently for a few weeks. Switching too early prolongs the learning phase.
- Update your privacy notice: Clearly state in your privacy notice under KVKK (Turkey's personal data protection law) that hashed contact data is shared for ad measurement purposes.
For agencies, these events also form the backbone of reporting. Clinic managers see answers to “how many patients paid and from which ad set did they come?” rather than “how many leads arrived?” How to build this report is explained in our ad-to-sale transparency guide. If you want to try this flow in your clinic, start a 7-day free trial of ÖzgürKod CRM and test every module with no credit card required.

