Integration guide
Запуск нового traffic flow без contract drift між шарами.
Новий Citadel треба інтегрувати не як “просто tracking link”, а як зв’язку з кількох runtime surfaces: tracking entrypoint, routing policy, branded domain, landing instrumentation, stats payloads і operational checks між Django, FastAPI та edge layer.
Citadel працює як traffic operations layer, а не як окремий redirect script.
Entry layer
Ads ведуть на tracking URL або branded path, де система знаходить link, domain binding і routing policy.
Decision layer
Policy engine вирішує secure або public route, зберігає reason, revision і decision trail.
Read layer
Landing events, stats cards, share reports і admin surfaces читають той самий operational state.
Найбільший ризик тут не в окремих моделях, а в переходах між шарами: worker → FastAPI, FastAPI → Django policy API, stats UI → event payload schema. Саме тому гайд нижче будується навколо інтеграційних контрактів, а не лише навколо полів форми.
Підготуйте runtime objects, з яких складається один flow
Routing Policy
Назва policy, public fallback, secure destination, GEO/ASN/IP правила, duplicate window, automation controls, rollout percentage і path prefix.
Tracking Link
Slug, labels для source/vertical/funnel, пов’язана policy, success mode і generated landing script.
Tracking Domain
DNS verify, SSL/nginx provisioning, branded URL preview і прив’язка до links або policies.
Checkpoint: перед запуском у вас має бути не просто link, а цілісний runtime path: policy, domain binding і landing instrumentation strategy.
Поки ці базові objects не узгоджені між собою, усі наступні кроки лише маскують structural drift.
У рекламу ставиться entry URL, який Citadel реально може резолвити як flow
- Відкрийте Admin → Tracking links і знайдіть потрібний link.
- Скопіюйте canonical path
/r/<slug>/або branded path з custom domain. - Не використовуйте старі ручні redirect URLs, якщо link уже має generated URL в Admin.
- Для одного джерела трафіку тримайте один явний entrypoint, щоб не плодити паралельні схеми атрибуції.
https://citadeltracker.pro/r/pl-finance-main/?source=facebook
https://offer-domain.com/onlyaff/pl-finance-main/?source=tiktok
Tracking Link у Citadel це entry object для flow. Campaign і Funnel тут радше організаційні або аналітичні контексти, а не сам runtime-маршрут.
Підключіть branded domain як частину route design, а не як косметичний alias
- Створіть домен в Admin → Tracking domains.
- Скопіюйте Server IP і додайте DNS
Arecord. - Натисніть Verify DNS, потім Provision SSL + nginx.
- Прив’яжіть домен до потрібних tracking links.
- Якщо policy використовує
path_prefix, переконайтеся, що branded preview збігається з реальною route structure.
Він впливає не тільки на зовнішній вигляд URL, а й на узгодженість між policy routing, click resolution, preview paths і landing expectations.
Landing instrumentation має замикати attribution loop тим самим click_id
- Відкрийте потрібний Tracking Link і візьміть готовий Landing script.
- Вставте його на landing page один раз.
- Переконайтеся, що landing зчитує
click_idз URL і не перетирає його власною логікою. - Після успішної форми викликайте helper або налаштуйте success URL match.
JSБазовий submit hook
window.CitadelTracker.markSubmitted({
status: "ok",
crm: "external",
step: "lead-form"
});
У цьому гайді все крутиться навколо одного click_id: якщо він не проходить шлях цілісно, решта аналітики вже не врятує flow.
Перевірте міжшарові контракти до запуску, інакше drift проявиться вже в проді
worker → FastAPI
Перевірте, що edge/request layer передає ті самі поля, які routing resolver очікує для country, ip, ua, bot/risk signals і request identifiers.
FastAPI → Django
Policy API має повертати стабільну decision schema: destination, reason, revision, served route і fallback semantics без умовної двозначності.
stats UI → events
Назви подій, статуси submit і часові поля повинні бути ті самі, які використовують admin cards, report tables і share links.
Що звірити руками перед rollout
- Чи один і той самий
click_idвидно в URL, click row і event payload. - Чи branded path реально мапиться на потрібний tracking link та policy.
- Чи stats поверхня читає саме ті event names, які landing script зараз відправляє.
- Чи policy reason у логах відповідає фактичному маршруту, який отримав користувач.
Проженіть end-to-end launch check до першого реального бюджету
- Відкрийте рекламний entry URL.
- Перевірте, що після резолву landing відкрився з валідним
click_id. - Упевніться, що в Admin → Clicks з’явився новий click із правильною policy context.
- Відправте форму або симулюйте успішний submit.
- Перевірте
landed_at,submitted_atі відповідні події. - Звірте admin stats або share report: request, landed, submitted і CR мають вирости синхронно.
Ready for traffic: flow вважається готовим лише тоді, коли збігаються routing decision, click audit trail, landing events і stats read model.
Operational launch
Новий Citadel виглядає переконливо тоді, коли лендинг і гайд говорять про одну й ту саму систему: routing, tracking, domains і platform operations.
Ця сторінка має завершувати продаж ідеї: Citadel не просто редіректить трафік, а збирає весь launch path в одну контрольовану surface.