Jak stworzyliśmy system, który pozwala zarządzać reklamami ofert pracy na wielu platformach z jednego miejsca
Pozyskiwanie kandydatów coraz częściej wykracza poza publikację ogłoszenia na portalu pracy. Firmy wykorzystują kampanie reklamowe w mediach społecznościowych, wyszukiwarkach i innych kanałach cyfrowych, aby docierać również do osób, które nie szukają aktywnie nowego zatrudnienia.
Takie podejście zwiększa zasięg rekrutacji, ale jednocześnie komplikuje cały proces. Każda platforma reklamowa ma inne wymagania, formaty kreacji, modele kampanii, sposoby definiowania grup odbiorców i mechanizmy raportowania wyników.
Właśnie dlatego dla softgarden stworzyliśmy Social Media Solution – system pozwalający przygotowywać, akceptować, uruchamiać i monitorować kampanie rekrutacyjne na wielu platformach reklamowych.
Klienci softgarden nie muszą posiadać własnych kont reklamowych ani samodzielnie korzystać z narzędzi takich jak Meta Ads Manager, TikTok Ads, Google Ads, Reddit Ads czy Snapchat Ads. Kampanie są tworzone i uruchamiane poprzez integracje API, a cały proces odbywa się w ramach ekosystemu softgarden.
Planujesz stworzenie platformy, która integruje wiele zewnętrznych systemów i automatyzuje złożony proces biznesowy? Skontaktuj się z IT Hero. Pomagamy projektować i rozwijać aplikacje webowe, systemy SaaS oraz rozwiązania oparte na integracjach API.

Reklama jako element procesu rekrutacyjnego
System ATS pomaga zarządzać kandydatami, ogłoszeniami i kolejnymi etapami rekrutacji. Nie rozwiązuje jednak automatycznie problemu dotarcia do osób, które spełniają wymagania stanowiska.
W wielu branżach samo opublikowanie oferty na stronie kariery lub portalu pracy może być niewystarczające. Szczególnie gdy firma:
- prowadzi rekrutację na stanowisko trudne do obsadzenia,
- poszukuje kandydatów w konkretnej lokalizacji,
- chce dotrzeć do osób nieposzukujących aktywnie pracy,
- musi szybko zwiększyć liczbę aplikacji,
- prowadzi wiele kampanii rekrutacyjnych jednocześnie.
Reklamy ofert pracy pozwalają docierać do kandydatów tam, gdzie spędzają czas każdego dnia. Mogą pojawiać się w mediach społecznościowych, wynikach wyszukiwania, serwisach z materiałami wideo lub innych kanałach cyfrowych.
Problem pojawia się wtedy, gdy każdą kampanię trzeba ręcznie przygotować w kilku niezależnych systemach reklamowych.
Wyzwanie biznesowe
Softgarden potrzebował narzędzia, które umożliwi pracownikom zarządzanie kampaniami reklamowymi w imieniu klientów. Proces miał być prosty dla klienta, ale jednocześnie uwzględniać wymagania techniczne poszczególnych dostawców reklam.
Klient miał otrzymać możliwość zamówienia kampanii dla konkretnej oferty pracy, sprawdzenia przygotowanych reklam, przekazania uwag oraz śledzenia wyników. Nie powinien jednak potrzebować własnego konta na każdej platformie ani wiedzy z zakresu performance marketingu.
Z perspektywy zespołu softgarden system musiał pozwalać na:
- obsługę wielu zamówień i kampanii,
- wybór odpowiednich kanałów reklamowych,
- konfigurację każdego kanału,
- przygotowywanie treści i materiałów,
- wysyłanie kampanii do akceptacji,
- uruchamianie reklam poprzez API,
- monitorowanie statusów kampanii,
- zbieranie statystyk od różnych dostawców,
- reagowanie na problemy występujące podczas publikacji.
Pojedyncza kampania może obejmować od jednego do czterech kanałów reklamowych. Każdy z nich jest konfigurowany indywidualnie, ale z punktu widzenia użytkownika pozostaje częścią jednego zamówienia powiązanego z ofertą pracy.
Najważniejszym zadaniem nie było więc przygotowanie kolejnego panelu do ustawiania reklam. Celem było stworzenie wspólnej warstwy pomiędzy systemem ATS, pracownikami softgarden, klientami oraz platformami reklamowymi.
Odkrywanie produktu i projektowanie procesu
Prace rozpoczęliśmy od rozpisania całego cyklu życia kampanii rekrutacyjnej.
Musieliśmy określić:
- skąd pochodzą dane o zamówieniu,
- kto odpowiada za przygotowanie kampanii,
- w jaki sposób wybierane są kanały,
- jakie informacje trzeba przesłać do poszczególnych dostawców,
- kiedy klient powinien otrzymać podgląd reklam,
- co dzieje się po zaakceptowaniu lub odrzuceniu projektu,
- jak obsługiwać błędy po stronie platform reklamowych,
- jakie statystyki należy pokazać klientowi.
W efekcie powstał proces obejmujący wszystkie etapy kampanii:
- Klient zamawia reklamę dla wybranego ogłoszenia.
- Zamówienie pojawia się w Social Media Solution.
- Pracownik softgarden wybiera kanały reklamowe.
- Każdy kanał zostaje skonfigurowany w kreatorze.
- System generuje draft kampanii.
- Klient otrzymuje podgląd przygotowanych reklam.
- Klient akceptuje kampanię albo przekazuje uwagi.
- Po akceptacji reklamy trafiają do kolejki uruchomienia.
- System komunikuje się z platformami reklamowymi przez API.
- Po uruchomieniu kampanii klient może śledzić jej wyniki.
- Kampania kończy się zgodnie z planem lub zostaje zatrzymana wcześniej.

Centralny kreator kampanii
Jednym z najważniejszych elementów aplikacji jest kreator umożliwiający przygotowanie całej kampanii w jednym miejscu.
Pracownik softgarden rozpoczyna pracę od listy zamówień powiązanych z konkretnymi ogłoszeniami. Następnie wybiera kanały, które mają zostać wykorzystane w danej kampanii.
W zależności od planu i celu kampanii mogą to być między innymi:
- Facebook,
- Instagram,
- TikTok,
- Google,
- Snapchat,
- Reddit,
- Spotify.
Dla każdego kanału dostępny jest osobny proces konfiguracji. Użytkownik może określić między innymi grupę odbiorców, lokalizację, materiały reklamowe, teksty, formaty i sposób prezentacji ogłoszenia.
Część informacji jest generowana automatycznie lub wybierana na podstawie przygotowanych opcji. Dzięki temu stworzenie kampanii nie wymaga każdorazowego wypełniania rozbudowanych formularzy charakterystycznych dla zewnętrznych paneli reklamowych.
Kreator prowadzi użytkownika przez kolejne kroki, pokazuje postęp konfiguracji i wskazuje kanały, które są już gotowe. Na końcu pracownik otrzymuje podsumowanie całej kampanii przed wysłaniem jej do klienta.

Zarządzanie odpowiedzialnością za kampanię
Każda kampania posiada przypisanego campaign managera, czyli osobę odpowiedzialną za jej przygotowanie i obsługę.
Pracownik, który rozpoczyna konfigurację kanału, może zostać automatycznie przypisany do kampanii. Ostatecznym campaign managerem zostaje osoba wysyłająca projekt do akceptacji klienta. Administrator może później zmienić to przypisanie, jeżeli odpowiedzialność za kampanię zostanie przekazana innemu pracownikowi.
Takie rozwiązanie ma znaczenie szczególnie wtedy, gdy z systemu korzysta większy zespół. W każdej chwili wiadomo:
- kto przygotował kampanię,
- kto odpowiada za kontakt z klientem,
- kto powinien zareagować na uwagi,
- kto ma rozwiązać problem po stronie dostawcy reklam.
Akceptacja kampanii przez klienta
Przed uruchomieniem reklam kampania musi zostać zaakceptowana przez klienta.
Po zakończeniu konfiguracji campaign manager wysyła przygotowany draft do weryfikacji. Klient może sprawdzić informacje o kampanii oraz zobaczyć podgląd reklam przygotowanych dla poszczególnych kanałów.
Następnie może:
- zaakceptować kampanię,
- odrzucić projekt,
- podać powód odrzucenia,
- opcjonalnie dołączyć plik z dodatkowymi uwagami.
Jeżeli klient zaakceptuje draft, kampania zostaje automatycznie przekazana do kolejki uruchomienia.
Jeżeli ją odrzuci, zmienia status na wymagający korekty. Campaign manager widzi uwagi klienta bezpośrednio w Social Media Solution, wprowadza zmiany i może ponownie wysłać kampanię do akceptacji.
Dzięki temu feedback nie jest rozproszony pomiędzy wiadomościami e-mail, komunikatorami i dokumentami. Cała komunikacja dotycząca projektu reklamy pozostaje powiązana z konkretną kampanią.
Dokumentacja systemu definiuje osobne operacje API dla akceptacji i odrzucenia draftu. Po akceptacji kampania przechodzi do automatycznego uruchamiania, natomiast po odrzuceniu wraca do poprawy wraz z uzasadnieniem klienta.

Dynamiczny podgląd reklamy
Jednym z ważniejszych elementów projektu był mechanizm podglądu kreacji reklamowych.
Klient powinien przed akceptacją zobaczyć nie tylko tekst i grafikę, ale również przybliżony wygląd reklamy na konkretnej platformie. Jest to szczególnie istotne, ponieważ ta sama kampania może być prezentowana inaczej na Facebooku, TikToku, Instagramie czy w innych kanałach.
W tym celu powstał komponent Creative Preview, który dynamicznie renderuje reklamę na podstawie danych kampanii.
Podgląd może uwzględniać:
- platformę reklamową,
- format reklamy,
- wersję mobilną lub desktopową,
- grafikę albo materiał wideo,
- treść reklamy,
- nagłówek,
- opis,
- przycisk CTA.
Komponent został przygotowany w React, ale skompilowany jako niezależny Web Component. Oznacza to, że można go osadzić także w aplikacjach wykorzystujących inne technologie frontendowe, na przykład Angular, bez dodawania Reacta jako bezpośredniej zależności projektu.
Takie rozwiązanie pozwoliło wykorzystać jeden mechanizm podglądu w kilku częściach ekosystemu softgarden. Zmiany w sposobie prezentowania reklam mogą być rozwijane centralnie, bez implementowania osobnej wersji komponentu dla każdej aplikacji.

Automatyczne uruchamianie reklam przez API
Po zaakceptowaniu kampanii przez klienta system rozpoczyna proces jej uruchamiania.
Konfiguracja jest przekazywana do odpowiednich dostawców reklam poprzez ich API. Ponieważ każda platforma działa inaczej, system musi przekształcić wspólny model kampanii na format wymagany przez konkretnego providera.
Proces obejmuje między innymi:
- utworzenie kampanii w systemie reklamowym,
- przesłanie ustawień grupy odbiorców,
- dodanie materiałów reklamowych,
- przekazanie budżetu i harmonogramu,
- utworzenie reklam we właściwych formatach,
- sprawdzenie odpowiedzi dostawcy,
- monitorowanie statusu publikacji.
Uruchomienie kampanii nie zawsze następuje natychmiast. Niektóre platformy analizują treść reklamy, sprawdzają materiały lub wykonują dodatkowe operacje po swojej stronie.
Dlatego Social Media Solution rozróżnia między innymi etap przetwarzania kampanii przez zewnętrzne systemy oraz stan, w którym wszystkie kanały są już aktywne.
Dopiero po poprawnym uruchomieniu reklam we wszystkich wybranych kanałach cała kampania otrzymuje status LIVE.
Obsługa błędów i częściowo uruchomionych kampanii
Integracje z zewnętrznymi platformami wymagają przygotowania na sytuacje, nad którymi aplikacja nie ma pełnej kontroli.
Dostawca reklam może odrzucić materiał, zakwestionować ustawienia kampanii, zgłosić problem z kontem albo zwrócić błąd techniczny. Problem może też wystąpić tylko w jednym kanale, podczas gdy pozostałe reklamy zostaną utworzone prawidłowo.
System musi więc rozpoznawać różnicę pomiędzy:
- kampanią oczekującą na klienta,
- kampanią wymagającą poprawek,
- kampanią przetwarzaną przez system reklamowy,
- kampanią aktywną,
- kampanią wymagającą interwencji,
- kampanią zakończoną zgodnie z planem,
- kampanią zatrzymaną wcześniej.
Jeżeli podczas uruchamiania jednego z kanałów pojawi się problem, campaign manager otrzymuje informację o konieczności wykonania dodatkowych działań. W niektórych sytuacjach poprawka musi zostać wprowadzona bezpośrednio w narzędziu konkretnego dostawcy, na przykład w panelu Meta Ads.
Social Media Solution nadal monitoruje wtedy status kampanii. Po rozwiązaniu problemu i uruchomieniu wszystkich kanałów jej stan może zostać automatycznie zaktualizowany.
Taki model ogranicza ryzyko, że błąd pojedynczego providera pozostanie niezauważony lub że klient otrzyma nieprawidłową informację o rozpoczęciu całej kampanii.
Wyniki z wielu kanałów w jednym dashboardzie
Uruchomienie reklamy to dopiero początek procesu. Klient powinien również wiedzieć, jakie efekty przynosi kampania.
Dane pochodzące z różnych platform są pobierane, ujednolicane i prezentowane w jednym widoku. Klient nie musi logować się do kilku systemów ani samodzielnie porównywać raportów.
Dashboard może prezentować między innymi:
- całkowitą liczbę wyświetleń,
- zasięg kampanii,
- liczbę kliknięć,
- współczynnik CTR,
- wykorzystany budżet,
- całkowity budżet kampanii,
- wyniki z podziałem na kanały reklamowe.
Użytkownik może sprawdzić zarówno zagregowany rezultat całej kampanii, jak i efektywność poszczególnych platform. Dane per kanał obejmują wyświetlenia, zasięg, kliknięcia, CTR oraz wydany budżet.
Pozwala to szybko zauważyć, które źródła generują największe zainteresowanie ofertą pracy i jak rozkłada się wykorzystanie budżetu.

Kontrola nad aktywną kampanią
Klient może nie tylko obserwować wyniki, ale także zatrzymać aktywną kampanię.
Zatrzymanie obejmuje wszystkie przypisane do niej kanały. Kampania otrzymuje wtedy status zakończonej przed planowanym terminem.
W pierwszej wersji aplikacji operacja ta jest nieodwracalna. Z tego powodu interfejs wymaga jednoznacznego potwierdzenia i ostrzega użytkownika, że po zatrzymaniu kampanii nie będzie można jej wznowić.
To jeden z przykładów sytuacji, w których projektowanie interfejsu musiało uwzględniać nie tylko wygodę użytkownika, ale również konsekwencje operacji wykonywanych w zewnętrznych systemach.
Architektura przygotowana pod integracje
Social Media Solution został zaprojektowany jako część większego ekosystemu, a nie samodzielna aplikacja działająca w oderwaniu od innych produktów softgarden.
Frontend narzędzia powstał z wykorzystaniem:
- React,
- Vite,
- TypeScript,
- Material UI.
Komunikacja pomiędzy systemami odbywa się za pośrednictwem API. Warstwa integracyjna udostępnia operacje pozwalające między innymi:
- pobierać informacje o kampanii,
- odczytywać jej status,
- pobierać dane poszczególnych kanałów,
- wyświetlać drafty i podglądy reklam,
- akceptować lub odrzucać kampanię,
- pobierać statystyki,
- zatrzymywać aktywną kampanię.
Dostęp do API zabezpieczono mechanizmem opartym na tokenach. System wykorzystuje access tokeny do autoryzacji bieżących zapytań oraz refresh tokeny pozwalające odnowić dostęp bez ponownego przechodzenia przez cały proces uwierzytelniania.
Dokumentację integracyjną przygotowano w Swaggerze, a zestawy zapytań można testować za pomocą kolekcji Postman. Ułatwia to współpracę pomiędzy zespołami odpowiedzialnymi za różne części systemu.

Najważniejsze wyzwania techniczne
Ujednolicenie różnych platform reklamowych
Każdy dostawca posiada własny model danych, nazewnictwo i sposób tworzenia kampanii. Konieczne było przygotowanie wspólnego modelu wewnętrznego, który może zostać przetłumaczony na format konkretnej platformy.
Dzięki temu interfejs Social Media Solution pozostaje spójny, nawet jeżeli w tle poszczególne integracje działają w zupełnie inny sposób.
Synchronizacja statusów
Utworzenie reklamy poprzez API nie oznacza jeszcze, że została ona opublikowana. System musi monitorować kolejne etapy procesu i reagować na zmiany następujące po stronie providera.
Dotyczy to również sytuacji, w których problem zostanie naprawiony ręcznie w zewnętrznym panelu.
Obsługa częściowych błędów
W jednej kampanii może działać kilka kanałów. Jeżeli trzy z nich zostaną uruchomione, a jeden zwróci błąd, system musi wskazać konkretny problem bez utraty informacji o pozostałych platformach.
Dynamiczne podglądy kreacji
Każdy kanał prezentuje reklamę w innym formacie. Podgląd nie mógł być jedną statyczną grafiką. Musiał reagować na rodzaj platformy, urządzenie, treść oraz format materiału.
Integracja różnych technologii frontendowych
Komponent podglądu został przygotowany w React, ale miał działać również w aplikacjach wykorzystujących inne frameworki. Zastosowanie Web Componentu pozwoliło udostępnić go jako niezależny moduł.
Bezpieczna komunikacja pomiędzy systemami
System przetwarza konfiguracje kampanii, dane klientów i informacje o budżetach. Integracja musiała więc uwzględniać bezpieczne uwierzytelnianie, kontrolę dostępu oraz odpowiednią obsługę wygasających tokenów.
Efekt projektu
Social Media Solution połączył proces zarządzania rekrutacją z ekosystemem reklamy cyfrowej.
Pracownicy softgarden mogą przygotowywać wielokanałowe kampanie z jednego miejsca. Klienci otrzymują czytelny podgląd reklam i mogą je zaakceptować bez znajomości zewnętrznych narzędzi reklamowych. Po uruchomieniu kampanii najważniejsze wyniki są dostępne bezpośrednio w platformie.
Najważniejsze korzyści rozwiązania to:
- brak konieczności posiadania kont reklamowych przez klientów,
- jeden proces konfiguracji dla wielu platform,
- uporządkowany obieg akceptacji i poprawek,
- automatyczne uruchamianie reklam przez API,
- centralne zarządzanie odpowiedzialnością za kampanię,
- automatyczna synchronizacja statusów,
- jeden dashboard ze statystykami,
- możliwość dalszego rozwijania systemu o kolejnych providerów,
- ograniczenie ręcznych działań wykonywanych przez pracowników.
Największym wyzwaniem projektu było stworzenie wspólnej warstwy dla platform, które różnią się sposobem działania, strukturą kampanii, formatami reklam i mechanizmami raportowania.
Odpowiednio zaprojektowana architektura pozwoliła ukryć tę złożoność przed użytkownikiem. Pracownik softgarden korzysta ze spójnego kreatora, a klient widzi prosty proces akceptacji i raportowania.
To właśnie takie projekty pokazują, jak integracje API i automatyzacja mogą zmienić rozproszony, wieloetapowy proces w jedno narzędzie wspierające codzienną pracę całej organizacji.
Tworzysz system SaaS, panel administracyjny lub platformę wymagającą integracji z wieloma zewnętrznymi usługami? IT Hero pomoże przeanalizować proces, zaprojektować architekturę, przygotować interfejs, wdrożyć aplikację i rozwijać ją wraz z Twoim biznesem. Skontaktuj się z nami i opowiedz o swoim projekcie.
Proces realizacji projektów w IT Hero obejmuje odkrywanie produktu, projektowanie interfejsu, development oraz późniejsze utrzymanie i rozwój aplikacji.






