Надійне налаштування Facebook Ads — це не найдовший UTM-рядок. Потрібно передати три стабільні ID Meta у спеціальні поля трекера, використати sub ID для плейсменту й джерела та перевірити фінальний URL на реальному кліку.
Для DarkCore вставте цей рядок у поле URL parameters на рівні оголошення:
campaign_id={{campaign.id}}&adset_id={{adset.id}}&ad_id={{ad.id}}&sub1={{placement}}&sub2={{site_source_name}}
Якщо формуєте повний destination URL вручну, перед першим параметром потрібен ?:
https://go.example.com/?campaign_id={{campaign.id}}&adset_id={{adset.id}}&ad_id={{ad.id}}&sub1={{placement}}&sub2={{site_source_name}}
У спеціальному полі параметрів Meta початковий ? зазвичай не потрібен — платформа додає його сама. У повному URL має бути рівно один ?, а кожен наступний параметр відділяється через &.
Що насправді означає «Facebook sub ID»
У Meta немає окремого макросу sub_id. Sub ID — це поле вашого трекера або партнерської мережі, а його значення можна заповнити динамічним параметром Meta.
Наприклад:
sub1={{placement}}
sub1 тут належить DarkCore, а {{placement}} — Meta. Під час кліку платформа замінить макрос реальним значенням, і трекер отримає, наприклад:
sub1=facebook_feed
Для campaign, ad set та ad ID у DarkCore є окремі поля. Не варто витрачати на них три універсальні sub-слоти.
Рекомендований мапінг Meta → DarkCore
| Вхідний параметр | Значення Meta | Що ідентифікує | Навіщо саме це поле |
|---|---|---|---|
campaign_id | {{campaign.id}} | Кампанію | Стабільний ключ для звітів і витрат |
adset_id | {{adset.id}} | Адсет | Стабільний ключ аудиторії та бідингу |
ad_id | {{ad.id}} | Оголошення | Найдетальніший стабільний ключ |
sub1 | {{placement}} | Feed, Stories, Reels та інші плейсменти | Розріз для маршрутизації й прибутковості |
sub2 | {{site_source_name}} | Facebook, Instagram, Messenger або Audience Network | Відділяє джерело інвентарю від плейсменту |
Довідник динамічних URL-параметрів Meta також містить {{campaign.name}}, {{adset.name}} і {{ad.name}}. Використовуйте назви як читабельні підписи, але не як основні ключі: їх можна змінити, повторити чи використати знову. Для зв’язування кліків, витрат і конверсій надійніші ID.

Якщо потрібні й назви, додайте їх після стабільних полів:
campaign_id={{campaign.id}}&adset_id={{adset.id}}&ad_id={{ad.id}}&sub1={{placement}}&sub2={{site_source_name}}&sub3={{campaign.name}}&sub4={{adset.name}}&sub5={{ad.name}}
Не замінюйте ними ID.
Де тут fbclid
fbclid і sub ID вирішують різні задачі:
fbclid— ідентифікатор конкретного кліку Meta. Коли він є у вхідному URL, DarkCore зберігає його для безперервності кліку й атрибуції.campaign_id,adset_idтаad_idописують структуру рекламного кабінету.sub1–sub10— ваші гнучкі бізнес-виміри: плейсмент, джерело, кут креативу, код баєра або батч.
Не кладіть fbclid у sub1 і не створюйте його з ad ID. Реальний click ID має передати Meta; макроси потрібні для контексту кампанії.
Якщо Pixel і Conversions API можуть надіслати одну бізнес-подію, тримайте click context окремо від спільного event identity та пройдіть чекліст дедуплікації Facebook CAPI до запуску.
Як DarkCore переносить значення далі
На першому запиті DarkCore читає іменовані поля кампанії та sub1–sub10. Потім ці значення можна використати у Track Link:
https://affiliate.example/click?cid={click_id}&campaign={campaign_id}&adset={adset_id}&ad={ad_id}&placement={sub1}&source={sub2}
Тут важливо не змішати два синтаксиси:
- Meta підставляє
{{ad.id}}і{{placement}}до переходу на лендінг. - DarkCore зберігає отримані значення й підставляє
{ad_id},{sub1}та{click_id}у вихідний URL.
Якщо в DarkCore прийшов буквальний {{ad.id}}, макрос не розкрився на стороні Meta. Якщо в партнерський URL пішов {sub1}, перевіряйте вихідний Track Link.
Про другу половину ланцюга читайте у матеріалах як трекати Facebook-конверсії партнерських офферів та що таке S2S-постбек.
Якщо мережа просить {subid}, {aff_sub} чи інший незнайомий токен, перед копіюванням шаблону відкрийте гайд про click ID, sub ID та макроси постбека.
Pass/fail-перевірка перед запуском
Не приймайте налаштування «на око». Проведіть один реальний або платформний тест-клік і заповніть таблицю фактами.
| Тест | Очікуваний факт | Pass? |
|---|---|---|
| Фінальний URL | Один ?, далі коректні key=value через & | ☐ |
| Підстановка макросів | Немає буквальних {{campaign.id}}, {{ad.id}} чи інших токенів Meta | ☐ |
| Стабільні ID | campaign_id, adset_id, ad_id містять числові ID | ☐ |
| Плейсмент | У sub1 фактичний плейсмент, а не захардкоджена здогадка | ☐ |
| Джерело | sub2 розділяє Facebook, Instagram та інший інвентар | ☐ |
| Запис кліку | Ті самі значення є у кліку DarkCore | ☐ |
| Вихідний URL | {click_id} і потрібні поля підставилися рівно один раз | ☐ |
| Тестова конверсія | Один постбек прив’язаний до того самого кліку без дубля виручки | ☐ |

Типові помилки
- Немає
?перед першим параметром у повному URL. Тодіsub1стає частиною path, а не query string. - Усе зберігається лише в UTM. UTM корисні для вебаналітики, але трекеру потрібні детерміновані поля для маршрутизації та постбеків.
- Назви використовуються як ключі. Rename ділить історію, однакові назви змішують різний трафік.
- Переплутані синтаксиси.
{{ad.id}}належить Meta,{ad_id}— вихідному Track Link у DarkCore. - Перевірено лише редірект. Успішне завантаження сторінки не доводить атрибуцію. Потрібен повний ряд: вхідні ID → збережений клік → вихідний URL → одна конверсія.
FAQ
Який Facebook-макрос ставити в sub1?
У рекомендованій схемі — sub1={{placement}}. Для campaign, ad set та ad ID є окремі поля.
Чи можна замість campaign ID передавати назву?
Назву можна додати як підпис, але основним ключем залишайте {{campaign.id}}.
fbclid — це Facebook sub ID?
Ні. fbclid ідентифікує окремий клік Meta, а sub ID зберігає вибраний вами вимір.
Скільки sub ID підтримує DarkCore?
DarkCore приймає sub1–sub10 і віддає їх у Track Links як {sub1}–{sub10}.