ARP Ideas logo

Facebook Lead Ads wprost do Dynamics 365 Sales

ARP Ideas wdrożyło w pełni asynchroniczną integrację, dzięki której lead z formularza na Facebooku trafia do Dynamics 365 Sales w mniej niż 60 sekund, bez udziału człowieka.
Executive Summary

Mniej niż 60 sekund od formularza do leada w CRM

Klient pozyskuje leady przez formularze Facebook Lead Ads. Dotychczas dane trafiały do arkusza Excel — ręcznie, z opóźnieniem, bez powiązania z kampanią. Handlowcy reagowali z kilkugodzinną zwłoką, a szansa sprzedażowa traciła na wartości z każdą minutą.

ARP Ideas zaprojektowało i wdrożyło w pełni asynchroniczną integrację: od wypełnienia formularza na Facebooku do pojawienia się gotowego rekordu Lead w Dynamics 365 Sales mija mniej niż 60 sekund — bez ingerencji człowieka.

Architektura opiera się na webhookach Meta Graph API, dwóch funkcjach Azure i pluginie Dataverse. Rozwiązanie jest odporne na chwilową niedostępność CRM, nie traci danych i obsługuje wiele kampanii jednocześnie.

<60 s

od wypełnienia formularza do leada w CRM

0

ręcznych kroków w procesie

100%

leadów zapisanych bez utraty danych

N+1

kampanie obsługiwane przez jeden system
Wyzwanie

Lead z Facebooka, który czekał za długo

Formularze Lead Ads działały dobrze — liczba wypełnień była satysfakcjonująca. Problem zaczynał się po kliknięciu „Wyślij": dane trafiały do Menedżera Reklam, skąd ktoś musiał je ręcznie przenieść do CRM. Analiza przedwdrożeniowa ujawniła trzy warstwy problemów.
Opóźnienie reakcji
Lead czekał na kontakt od kilku godzin do następnego dnia roboczego. Badania rynkowe wskazują: szansa sprzedażowa spada o ponad 80% po pierwszej godzinie.
Praca manualna
Ktoś z zespołu codziennie wchodził do Menedżera Reklam, pobierał listę leadów i przepisywał dane. Błędy, pominięcia i duplikaty były nieuniknione przy skali.
Brak kontekstu kampanii
Do CRM trafiały dane kontaktowe bez informacji o źródłowej kampanii. Handlowiec dzwonił, nie wiedząc, co klient widział — personalizacja pierwszego kontaktu była niemożliwa.
Ryzyko utraty danych
Proces oparty na człowieku to single point of failure. Nieobecność osoby, awaria dostępu, błąd eksportu — każdy z tych scenariuszy skutkował utratą leadów.
Rozwiązanie

Architektura, która nie śpi i nie popełnia błędów

Integracja oparta na czterech zasadach: asynchroniczność, odporność na błędy, separacja warstw i brak zależności od użytkowników końcowych. Każda z nich ma bezpośrednie przełożenie na niezawodność operacyjną.
Azure Function — HTTP Trigger
Warstwa odbioru
Funkcja nasłuchuje na webhooki z Meta. Obsługuje weryfikację (GET) i zdarzenia leadgen (POST). Bez logiki biznesowej — tylko odbiera i przekazuje dalej.
Azure Service Bus — kolejka
Bufor odporności
Każdy webhook trafia do kolejki przed przetwarzaniem. Jeśli CRM jest chwilowo niedostępny, dane czekają w kolejce. Zero ryzyka utraty leada przy awarii downstream.
Azure Function — Queue Trigger
Warstwa przetwarzania
Druga funkcja czyta z kolejki i zapisuje dane do encji w Dataverse. Rozdzielenie odpowiedzialności sprawia, że awaria jednej funkcji nie blokuje całego przepływu.
Plugin Dataverse — parser i enrichment
Logika biznesowa
Plugin pobiera pełne dane leada z Meta Graph API, mapuje kampanię przez dedykowaną encję i tworzy gotowy rekord Lead w Dynamics 365 Sales.
Architektura techniczna

Pięć kroków. Zero ręcznej pracy

Przepływ danych od wypełnienia formularza do pojawienia się leada w Dynamics 365 Sales. Każdy etap jest niezależny — awaria jednego komponentu nie zatrzymuje poprzednich kroków.
1
2
3
4
5
01. Facebook
Wypełnienie formularza
Użytkownik wypełnia formularz Lead Ads na Facebooku.
02. Graph API
Webhook leadgen
Meta wysyła zdarzenie POST do endpointu Azure.
03. Service Bus
Zapis do kolejki
Fn-1 odbiera webook i zapisuje payload do Service Bus.
04. Dataverse
Enrichment danych
Fn-2 czyta kolejkę i zapisuje do Dataverse; plugin pobiera dane z Graph API.
05. D365 Sales
Lead w CRM
Gotowy rekord Lead z danymi kampanii pojawia się w Dynamics 365 Sales.

Kluczowe decyzje projektowe

Komponent
Technologia
Rola i uzasadnienie
Odbiór webhooków
Azure Function HTTP
Bezstanowy endpoint — odbiera i przekazuje, bez logiki biznesowej. Skaluje się automatycznie przy wzroście wolumenu.
Buforowanie danych
Azure Service Bus
Kolejka gwarantuje at-least-once delivery. Lead nie zniknie nawet przy chwilowej niedostępności CRM.
Zapis do Dataverse
Azure Function Queue
Separacja od Fn-1. Retry policy na poziomie Service Bus — bez własnej logiki ponowień.
Enrichment i lead
Dataverse Plugin
Logika biznesowa odizolowana od infrastruktury Azure. Plugin mapuje kampanię i tworzy rekord Lead.
Autoryzacja API
System User Token
Brak zależności od kont użytkowników końcowych. Token powiązany z aplikacją i stroną klienta.
Mapowanie kampanii
Encja Dataverse
Pozwala powiązać każdy lead z konkretną kampanią marketingową bez zmian w kodzie.
Odbiór webhooków
Technologia
Azure Function HTTP
Rola i uzasadnienie
Bezstanowy endpoint — odbiera i przekazuje, bez logiki biznesowej. Skaluje się automatycznie przy wzroście wolumenu.
Buforowanie danych
Technologia
Azure Service Bus
Rola i uzasadnienie
Kolejka gwarantuje at-least-once delivery. Lead nie zniknie nawet przy chwilowej niedostępności CRM.
Zapis do Dataverse
Technologia
Azure Function Queue
Rola i uzasadnienie
Separacja od Fn-1. Retry policy na poziomie Service Bus — bez własnej logiki ponowień.
Enrichment i lead
Technologia
Dataverse Plugin
Rola i uzasadnienie
Logika biznesowa odizolowana od infrastruktury Azure. Plugin mapuje kampanię i tworzy rekord Lead.
Autoryzacja API
Technologia
System User Token
Rola i uzasadnienie
Brak zależności od kont użytkowników końcowych. Token powiązany z aplikacją i stroną klienta.
Mapowanie kampanii
Technologia
Encja Dataverse
Rola i uzasadnienie
Pozwala powiązać każdy lead z konkretną kampanią marketingową bez zmian w kodzie.
Separacja warstwy integracyjnej od warstwy biznesowej to klucz do utrzymywalności. Zmiana logiki tworzenia leadów (nowe pole, inne mapowanie) nie wymaga modyfikacji infrastruktury Azure — wystarczy aktualizacja pluginu Dataverse.
Bezpieczeństwo i autoryzacja

System, który nie zależy od jednego człowieka

Wymaganiem projektu było wyeliminowanie ryzyka operacyjnego związanego z rotacją pracowników. Integracja działa w oparciu o System User Token — autoryzację niezwiązaną z żadnym kontem osobistym, z minimalnymi uprawnieniami i bez wygasania typowego dla tokenów użytkownika.
Warstwa odbioru
Uprawnienia System User Token
leads_retrieval, pages_show_list, pages_read_engagement, pages_manage_metadata, business_management — tylko to, co niezbędne do działania integracji.
Warstwa odbioru
Obsługa błędów i retry
Błędy zapisywane w polu Errors encji formularzy, status aktualizowany po każdym etapie. Możliwy ręczny retry pojedynczego wpisu lub masowo przez bulk edit.
Wyniki

Lead trafia do handlowca, zanim klient zamknie kartę

<60 s
czas od formularza do leada w CRM
0 h
czasu ręcznej pracy na lead
100%
leadów z mapowaniem kampanii
szybsza reakcja pierwszego kontaktu
Operacyjne
  • Wyeliminowanie ręcznego pobierania leadów — koniec wchodzenia do Menedżera Reklam przez zespół sprzedaży.
  • Pełna odporność na niedostępność CRM — kolejka Service Bus przechowuje dane do przywrócenia systemu.
  • Monitoring statusu przetwarzania każdego leada i ręczny retry bez ingerencji w kod.
  • Eliminacja duplikatów i błędów przepisywania — dane z Graph API zamiast ręcznego przenoszenia.
Strategiczne i rynkowe
  • Handlowiec widzi kontekst kampanii przy każdym leadzie — wie, z jakiej oferty pochodzi.
  • Personalizacja pierwszego kontaktu — rozmowa o konkretnej ofercie zamiast generycznego „dzwonię w sprawie formularza".
  • Pełna analityka kampanii w Dynamics 365 Sales — domknięcie pętli między wydatkami a sprzedażą.
  • Skalowanie bez dodatkowych kosztów operacyjnych — kolejna kampania to konfiguracja mapowania, nie nowe zasoby ludzkie.
Opinia

ROI widać w pierwszym tygodniu

Sławomir Wnuk

Head of Sales & Marketing

Integracja Facebook Lead Ads z CRM to projekt, gdzie ROI widać w ciągu pierwszego tygodnia. Handlowiec dzwoni do leada, gdy ten jest jeszcze ciepły. To nie kwestia wygody — to kwestia konwersji.
Lead management
Automatyzacja
Dynamics 365 Sales
Co dalej

Integracja jako fundament, nie projekt zamknięty

Wdrożona architektura to warstwa bazowa. Modularność systemu pozwala rozbudowywać integrację bez przepisywania istniejącego kodu — każda faza niezależnie

Faza 1 – Wdrożenie
Automatyczny przepływ lead → CRM
Webhook Meta → Azure Service Bus → Dataverse Plugin → rekord Lead w Dynamics 365 Sales z mapowaniem kampanii.
Faza 2 – Opcjonalne
Powiadomienia i przypisanie
Automatyczne powiadomienie handlowca (Teams / e-mail) i przypisanie leada wg reguł (region, kampania, produkt) — przez Power Automate lub rozszerzony plugin.
Faza 3 – Planowane
Deduplikacja i scoring
Wykrywanie duplikatów i scoring leadów na bazie danych kampanii i historii kontaktu — podstawa pod AI-driven lead qualification w Dynamics 365 Sales.