Affise Web SDK — это мощное решение для отслеживания, соответствующее требованиям конфиденциальности, которое собирает данные непосредственно из параметров трекинг ссылок и обрабатывает их с помощью пикселя. Вместо того, чтобы полагаться на сторонние файлы cookie, которые сталкиваются с растущими ограничениями браузеров, SDK беспрепятственно генерирует клики и конверсии, обеспечивая точное отслеживание без ущерба для конфиденциальности пользователей.
🔎 Подробнее о типах интеграции можно прочитать здесь.
Affise Web SDK
Affise Web SDK обеспечивает интеграцию с платформой Affise для отслеживания взаимодействий пользователей без перенаправления через сторонние системы отслеживания.
Ключевые особенности:
Генерация кликов на стороне клиента без перенаправления пользователей
Отслеживание конверсий с поддержкой продуктовых фидов
Несколько механизмов хранения с резервными вариантами для ограничений браузера
Кроссбраузерная совместимость со встроенными полифиллами
Механизм хранения
SDK использует несколько механизмов хранения с резервными вариантами:
Cookies (основное хранилище)
localStorage (вторичное хранилище)
sessionStorage (резервный механизм)
Если один механизм выходит из строя, SDK автоматически переходит к следующему.
Совместимость с браузерами
SDK включает в себя полифилы для современных функций JavaScript, обеспечивая совместимость с:
Chrome 45+
Firefox 38+
Safari 9+
Edge 12+
Internet Explorer 11
Безопасность
SDK сохраняет данные в файлах cookie и хранилище браузера, но браузеры имеют правила, которые контролируют, как это работает.
Большинство браузеров блокируют файлы cookie третьих сторон, поэтому отслеживание пользователей на разных веб-сайтах может работать не идеально.
SDK пробует различные методы для сохранения данных, даже когда браузеры блокируют определенные функции.
Если браузер имеет строгие настройки конфиденциальности, для получения лучших результатов может потребоваться использовать отслеживание на стороне сервера.
🔎 Теперь вы можете запускать рекламные кампании в Google Ads, используя наш WebSDK с доменом https://trk.affattr.com, который успешно прошел модерацию рекламы.
Для этого просто включите в свой код следующую конфигурацию:
<script src="https://trk.affattr.com/websdk.js"></script> - Standard integration, but with a dedicated domain
<script>
// Configure the SDK TO WORK WITH GOOGLE TRANSPARENCY DOMAIN
ASDK.configure({
use_google_transparency: true, <--- Required when using https://trk.affattr.com
client_id: 2, <--- Required when using https://trk.affattr.com
tracking_domain: "https://trk.affattr.com" <--- Must be manually specified; otherwise, it won't work
});
</script>
У каждого клиента есть свой client_id. Чтобы его получить, обратитесь в службу поддержки или к менеджеру.
Базовая настройка
Перед использованием SDK настройте его с помощью трекинг домена из оффера (может быть стандартным или настраиваемым):
<!-- Load the SDK --> <script src="https://{your-tracking-domain}/websdk.js"></script>Отслеживание кликов
Метод click() генерирует клик без перенаправления пользователя, что идеально подходит для лендингов:
// Basic click tracking
ASDK.click({
offer_id: 'OFFER123', // Required
affiliate_id: 'AFF456' // Required
})
.then(clickId => {
console.log('Click tracked successfully:', clickId);
})
.catch(error => {
console.error('Error tracking click:', error);
});
Отслеживание конверсий
Метод conversion() отслеживает, когда пользователь выполняет желаемое действие (покупка, регистрация и т. д.):
// Basic conversion tracking using click ID
ASDK.conversion({
click_id: ASDK.clickId('OFFER123'), // Get the stored click ID for this offer
offer_id: 'OFFER123',
status: '1', // 1 = confirmed
sum: '99.99'
})
.then(() => {
console.log('Conversion tracked successfully');
})
.catch(error => {
console.error('Error tracking conversion:', error);
});
// Alternative: conversion tracking using promo code
ASDK.conversion({
promo_code: 'SUMMER20',
offer_id: 'OFFER123',
status: '1',
sum: '99.99'
})
.then(() => {
console.log('Conversion tracked successfully');
})
.catch(error => {
console.error('Error tracking conversion:', error);
});
Примеры интеграции
Лендинг электронной коммерции:
document.addEventListener('DOMContentLoaded', function() {
// 1. Get tracking parameters from URL
const offerId = ASDK.urlParameter('offer_id') || 'DEFAULT_OFFER';
const affiliateId = ASDK.urlParameter('aff_id') || 'DEFAULT_AFFILIATE';
// 2. Generate a click
ASDK.click({
offer_id: offerId,
affiliate_id: affiliateId,
user_agent: navigator.userAgent
})
.then(clickId => {
console.log('Tracking initialized:', clickId);
})
.catch(error => {
console.error('Tracking error:', error.message);
});
});
Страница оформления заказа/страница благодарности в электронной коммерции:
document.addEventListener('DOMContentLoaded', function() {
// 1. Get order information
const orderDetails = {
id: 'ORD-12345',
total: 149.99,
currency: 'USD',
products: [
{ id: 'SKU001', name: 'Product 1', price: 99.99, quantity: 1 },
{ id: 'SKU002', name: 'Product 2', price: 24.99, quantity: 2 }
]
};
// 2. Get the offer ID and click ID
const offerId = ASDK.urlParameter('offer_id') || 'DEFAULT_OFFER';
const clickId = ASDK.clickId(offerId);
// 3. Track the conversion with product feed
ASDK.conversion({
click_id: clickId,
offer_id: offerId,
status: '1', // 1 = confirmed
sum: orderDetails.total.toString(),
order_currency: orderDetails.currency,
comment: `Order ${orderDetails.id}`,
items: orderDetails.products.map(product => ({
order_id: orderDetails.id,
sku: product.id,
quantity: product.quantity.toString(),
price: product.price.toString()
}))
})
.then(() => {
console.log('Conversion tracked successfully');
})
.catch(error => {
console.error('Error tracking conversion:', error);
});
});Обработка ошибок
ASDK.click({
offer_id: 'OFFER123',
affiliate_id: 'AFF456'
})
.then(clickId => {
console.log('Click tracked successfully:', clickId);
})
.catch(error => {
// Handle specific error types
switch(error.code) {
case 'NETWORK_ERROR':
console.error('Network unavailable:', error.message);
// Retry logic or offline handling
break;
case 'SERVER_ERROR':
console.error('Server error:', error.details.status);
// Log to your monitoring system
break;
case 'MISSING_REQUIRED_PARAMS':
console.error('Missing parameters:', error.details.provided);
// Show feedback about missing data
break;
default:
console.error('Error tracking click:', error.message);
}
});
Справочник API
Параметры конфигурации
Параметр | Тип | Описание |
tracking_domain | string/строка | Домен, используемый для отслеживания кликов и конверсий |
Параметры метода клика
Метод click() принимает объект опций со следующими параметрами:
Обязательные параметры
Параметр | Тип | Описание | Параметр API |
offer_id | string/строка | Обязательный. Идентификатор оффера | offer_id |
affiliate_id | string/строка | Обязательно. Идентификатор аффилиата | pid |
Необязательные параметры
Параметр | Тип | Описание | Параметр API |
tracking_domain | string/строка | Переопределить трекинг домен по умолчанию | - |
ip | string/строка | IP-адрес пользователя | ip |
user_agent | string/строка | Строка пользовательского агента браузера пользователя | ua |
ref_id | string/строка | Идентификатор ссылки | ref_id |
ref_android_id | string/строка | Идентификатор Android | ref_android_id |
ref_device_id | string/строка | Идентификатор устройства | ref_device_id |
mac_address | string/строка | MAC-адрес | mac_address |
os_id | string/строка | Идентификатор операционной системы | os_id |
user_id | string/строка | Идентификатор пользователя | user_id |
ext1 | string/строка | Дополнительный параметр 1 | ext1 |
ext2 | string/строка | Дополнительный параметр 2 | ext2 |
ext3 | string/строка | Дополнительный параметр 3 | ext3 |
imp_id | string/строка | Идентификатор импрешена | imp_id |
unid | string/строка | Уникальный идентификатор | unid |
fbclid | string/строка | Идентификатор клика Facebook | fbclid |
landing_id | string/строка | Идентификатор лендинга | l |
sub1 | string/строка | Пользовательский подпараметр 1 | sub1 |
sub2 | string/строка | Пользовательский подпараметр 2 | sub2 |
sub3 | string/строка | Пользовательский подпараметр 3 | sub3 |
sub4 | string/строка | Пользовательский подпараметр 4 | sub4 |
sub5 | string/строка | Пользовательский подпараметр 5 | sub5
|
Примечание: sub6 через sub30 также поддерживаются с тем же шаблоном.
Параметры метода преобразования
Метод conversion() принимает объект опций со следующими параметрами:
Обязательные параметры
Параметр | Тип | Описание | Параметр API |
click_id | string/строка | Идентификатор клика (полученный через SDK) | afclick |
promo_code | string/строка | Промокод (альтернатива click_id) | promo_code |
Примечание: один из этих параметров должен быть указан.
Необязательные параметры
Параметр | Тип | Описание | Параметр API |
tracking_domain | string/строка | Переопределить трекинг домен по умолчанию | - |
offer_id | string/строка | Идентификатор оффера | offer_id |
status | string/строка | Статус конверсии (см. коды статусов ниже) | afstatus |
secure | string/строка | Токен безопасности для проверки постбэка | afsecure |
comment | string/строка | Дополнительный комментарий о преобразовании | afcomment |
action_id | string/строка | Внешний идентификатор конверсии | afid |
sum | string/строка | Сумма конверсии | afprice |
goal | string/строка | Идентификатор цели конверсии | afgoal |
order_sum | string/строка | Общая сумма заказа (для обновлений) | order_sum |
order_currency | string/строка | Валюта заказа | order_currency |
user_id | string/строка | Идентификатор пользователя | user_id |
custom_field1 | string/строка | Пользовательское поле 1 | custom_field1 |
custom_field2 | string/строка | Пользовательское поле 2 | custom_field2 |
custom_field3 | string/строка | Пользовательское поле 3 | custom_field3 |
custom_field4 | string/строка | Пользовательское поле 4 | custom_field4 |
custom_field5 | string/строка | Пользовательское поле 5 | custom_field5 |
Примечание: custom_field6 через custom_field15 также поддерживаются с тем же шаблоном.
Коды статуса
Значение | Описание |
1 | Подтверждено |
2 | В ожидании |
3 | Отклонено |
5 | На удержании |
Формат элемента продуктового фида
Каждый элемент в items должен быть объектом со следующими свойствами:
{ order_id: string, // Order identifier sku: string, // Product SKU quantity: string, // Product quantity price: string // Product price }
Вспомогательные методы
Метод | Описание |
ASDK.urlParameter(name) | Получить значение параметра URL по имени |
ASDK.clickId(offerId) | Получить сохраненный идентификатор клика для определенного идентификатора оффера |
Распространенные проблемы и решения
Клик не сгенерирован
Идентификатор клика не возвращен, промис отклонен.
Решение:
Проверьте, что необходимые параметры
offer_idиaffiliate_idпредоставлены.Убедитесь, что трекинг домен настроен правильно.
Убедитесь, что есть сетевое подключение к трекинг домену.
Проверьте консоль браузера на наличие конкретных сообщений об ошибках.
Идентификатор клика не сохранен
Клик сгенерирован, но недоступен при использовании» ASDK.clickId().
Решение:
Проверьте, не блокируются ли файлы cookie браузером.
Убедитесь, что ваш домен не находится в режиме инкогнито/приватного просмотра.
Убедитесь, что ID оффера совпадает между кликом и извлечением.
Конверсия не отслеживается
Метод конверсии завершен, но конверсия не отображается на панели инструментов.
Решение
Убедитесь, что вы предоставляете либо действительный
click_idилиpromo_code.Проверьте, соответствует ли идентификатор клика идентификатору из исходного клика.
Убедитесь, что
offer_idсоответствует идентификатору, использованному для клика.Убедитесь, что код статуса правильный (используйте «1» для подтвержденного).
По всем возникшим вопросам обращайтесь в службу поддержки Affise по электронной почте: [email protected].
