CRM · Zoho · Optimisation

Closing the loop: CRM feedback that actually moves CPL

12 May 2026 · 8 min read

Every agency we audit has the same pattern: their Zoho or Google Sheets data does sync to Meta — but only one-way, and only as a Custom Audience. They upload last quarter's customers as a seed for lookalikes and consider the integration "done." Meanwhile, the disposition data the sales team is generating every day — which leads picked up the phone, which booked a visit, which converted — is sitting unused.

The accounts that beat their category on CPL aren't the ones with more sophisticated targeting. They're the ones whose CRM disposition data is feeding back to Meta as a Conversion event, so the auction optimises for "leads that close" rather than "leads that submit a form."

The two-way wiring

Three pieces:

  1. Outbound: customer list + recent buyers → Meta as a Custom Audience (you already have this).
  2. Inbound — lead capture: every Meta lead → CRM with the Meta lead ID and ad ID attached.
  3. Inbound — disposition feedback: every CRM disposition update → Meta as a Conversion API event, tagged to the original lead ID.

Piece 3 is where the lift comes from. Without it, Meta's auction has no idea which of the leads it delivered were actually any good.

What "disposition feedback" looks like in practice

Pick 2–3 disposition states that genuinely indicate quality. For real-estate accounts we usually pick:

Each is a separate custom-conversion event in Meta. Fire each one with the original fbclid / lead-form ID attached so Meta can map the conversion back to the ad that delivered the lead.

The Conversion API payload

POST /v19.0/<pixel_id>/events
{
  "data": [{
    "event_name": "QualifiedLead",
    "event_time": 1715520000,
    "action_source": "system_generated",
    "user_data": {
      "ph":  ["sha256-hashed-phone"],
      "em":  ["sha256-hashed-email"],
      "fbc": "fb.1.1715520000.AbZ..."  // captured at form submission
    },
    "custom_data": {
      "lead_event_source": "Zoho CRM",
      "event_source": "crm",
      "currency": "EGP",
      "value":    150
    }
  }],
  "access_token": "<system_user_token>"
}

Notes from doing this in production:

What changes once you ship this

Switch the optimisation goal on your top-of-funnel campaigns from OUTCOME_LEADS with Lead as the event, to OUTCOME_LEADS_CONVERSION with QualifiedLead as the event. Meta will:

  1. Narrow targeting toward people demographically similar to your qualified-lead cohort.
  2. Suppress delivery to lead-form-fillers who don't tend to answer phones.
  3. Report CPL based on the qualified event, not raw submissions.

Your reported CPL will go UP — sometimes dramatically — because the count you're optimising on is smaller. But your cost per actually-useful lead drops, your sales team stops chasing junk, and your monthly close rate climbs.

Common mistakes

1. Wiring without enough volume

Meta needs ~50 events in the first 7 days to exit Learning Phase on the new conversion. If your QualifiedLead event fires fewer than 50 times a week, stay on the raw Lead event and use a downstream filter on the campaign report instead.

2. Inconsistent disposition labels

If your sales team disposition leads as "qualified", "Qualified", "Qual." across different reps, you'll see 1/3 of the volume actually firing. Pick one canonical label, enforce it.

3. Delaying disposition feedback

Meta's training window for new conversion events is ~24 hours. If your sales team logs dispositions weekly in a batch, you're feeding Meta stale signal. Fire the event the same day the disposition happens.

One last thing

"You can't out-targeting bad data. Clean the disposition pipeline first; wire it back to Meta second."

The wiring is the easy part. The hard part is getting your sales team to consistently disposition leads — and that's an internal-ops problem, not a marketing-tech problem. Most agencies that fail to make the CRM feedback loop work, fail at the disposition-discipline step, not at the API integration step.

If you can solve the discipline problem, the rest is one weekend of plumbing.

← All posts See Project THE X →