Facebook CRM events: sending sales data to Meta

Facebook CRM events workflow: sending clinic CRM pipeline stages to Meta Conversions API as events
Facebook CRM events workflow: sending clinic CRM pipeline stages to Meta Conversions API as events
2025
Offline Conversions API retired in May 2025
DataCops, 2026
7
Events older than 7 days are rejected
DataCops, 2026
200
Around 70 out of 200 sales are lost in the example
DataCops, 2026
0 to 10
Event Match Quality is scored from 0 to 10
DataCops, 2026

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.

  1. Qualified lead: The sales rep has verified needs, budget, and treatment suitability. This is the funnel's most frequently repeated meaningful signal.
  2. Appointment scheduled: The consultation is added to the calendar. It demonstrates patient intent.
  3. Appointment attended: Separates no-shows. Prevents spending budget on profiles that book but fail to show up.
  4. Won: The quote is accepted.
  5. 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 stageMeta event nameTrigger actionMatch keyTiming note
ProspectLead (do not resend)Form submissionlead_idMeta already records the form
Interested / QualifiedQualifiedLead (custom)Sales rep verified needs and budgetlead_id + hashed phoneAs soon as stage changes
Appointment scheduledScheduleConsultation added to calendarlead_id + hashed email and phoneAt calendar booking
Appointment attendedAppointmentAttended (custom)Receptionist marked attendancelead_id + hashed phoneOn day of visit
Quote / WonClosedWon (custom)Patient approved treatment packagelead_id + hashed phoneWithin 7 days of approval day
PaidPurchase (value + currency)Deposit or payment recordedlead_id + event_idOn payment day

Steps to implement the table

  1. 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.
  2. 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.
  3. 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.
  4. 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:

  1. 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.
  2. Tuesday: The rep receives patient photos and verifies budget and date flexibility. The record moves to the "Qualified" stage, and QualifiedLead is sent.
  3. Thursday: A video consultation with the doctor is scheduled, and Schedule is sent.
  4. Next Monday: The patient attends the consultation, and AppointmentAttended is sent.
  5. 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.

Frequently asked questions

How is CRM sales and appointment data sent back to Meta ads?

Stage changes in your CRM are sent as events to a dataset in Events Manager via the Conversions API. Each event carries the timestamp of when the stage occurred, hashed email or phone, and a matching key such as lead_id or fbclid. Appointment, attendance, won, and paid stages should be sent as separate events.

How do you integrate CRM events with the Meta Conversions API?

First, create a dataset in Events Manager, then configure your CRM to send a server-side request to this dataset on every stage change. The request includes the event name, event time, SHA-256 hashed user data, and event_id. If the pixel also sends the same sale, both sources must use the exact same event name and event_id.

How do you set up Facebook offline events and datasets?

Offline conversions are now sent to a dataset via the standard Conversions API because Meta retired the separate Offline Conversions API in May 2025. In setup, connect both your pixel and CRM to the same dataset, and transmit in-store or in-clinic sales as events. Anyone using the old offline event set structure must migrate their setup to datasets.

How do you improve your Meta Event Match Quality score?

You can improve your score by sending properly normalized emails, phone numbers, and click IDs with every event. Lowercase and strip whitespace from emails, and format phone numbers with a country code containing digits only. Capturing the fbclid value in web forms and saving it to the CRM record also strengthens matching.

How are patients who convert to appointments and treatments in clinics passed to the Meta algorithm?

As a patient moves to appointment, attendance, and payment stages in your CRM, each stage is sent to Meta as a separate event. Use lead_id as the match key for patients coming from Lead Ads, and include value and currency in payment events. Send data on the day the stage changes; do not perform monthly bulk uploads.

What is Meta Conversion Leads optimization and how does it train the algorithm?

Conversion Leads optimizes campaigns for lower-funnel stages from your CRM—such as qualified leads or appointments—rather than initial form submissions. The algorithm learns which form-fillers reach these stages and shifts delivery to similar individuals. Make this transition only after qualified events have flowed consistently for a few weeks.

Why are lead_id, fbclid, and the 7-day time limit important in Facebook CRM events?

lead_id and fbclid are keys that tie CRM sales to the correct ad interaction, while the 7-day limit determines whether an event is accepted. Meta rejects events that arrive more than 7 days after they occur. Consequently, uploading sales in bulk at the end of the month causes a significant portion of events to be lost.

Sources

  1. How do you send CRM sales to Meta now the upload is gone? (DataCops), 2026
  2. Meta Lead Ads CRM integration: guide to automatically transferring ad leads to CRM (Proje CRM), 2026