Професійна розробка реферальної системи для e-commerce

Уявіть: інтернет-магазин з аудиторією 50 000 відвідувачів щомісяця запускає реферальну програму. Через місяць з'ясовується, що 40% переходів за реферальними посиланнями не атрибутовані — користувачі переходили із соцмереж, не реєструвалися одразу, а поверталися через тиждень. Без правильної атрибуці

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Професійна розробка реферальної системи для e-commerce
Середній
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1242
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    997

Уявіть: інтернет-магазин з аудиторією 50 000 відвідувачів щомісяця запускає реферальну програму. Через місяць з'ясовується, що 40% переходів за реферальними посиланнями не атрибутовані — користувачі переходили із соцмереж, не реєструвалися одразу, а поверталися через тиждень. Без правильної атрибуції реферали втрачаються, і програма не окупається. За нашими даними, коректне налаштування cookie та трекінгу дозволяє повернути до 40% втраченого прибутку. Саме тому ми робимо акцент на захищеній cookie з httpOnly та sameSite: lax, яка живе 30 днів.

Як реферальна система вирішує ключові проблеми бізнесу?

Основні складнощі при впровадженні — атрибуція, накрутка, колізії кодів та негнучка логіка нарахування. Без системного підходу програма втрачає ефективність. Наше рішення закриває кожну з цих проблем: від генерації унікальних кодів до автоматичного нарахування бонусів. Конкретні цифри: вартість розробки базової реферальної системи — від $1000 до $3000, економія на готових модулях — до 50% при складній логіці.

Чому атрибуція рефералів критична?

Без коректної атрибуції реферали втрачаються. За нашими даними, 80% рефералів приходять у перші 7 днів, але якщо cookie живе менше, до 30% не будуть враховані. Саме тому ми використовуємо 30-денну cookie з httpOnly та sameSite: lax.

Генерація унікальних кодів без колізій

Колізії кодів — типова проблема готових модулів. При тисячах користувачів короткі коди повторюються. Ми використовуємо бібліотеку nanoid з алфавітом без плутаних символів (1, l, I, 0, O) та довжиною 8 символів. Робимо до 5 спроб при колізії — ймовірність повторення менше 10^-12. Для прискорення перевірки колізій ми використовуємо хешування та кешуємо існуючі коди в Redis.

import { customAlphabet } from 'nanoid'; const generateCode = customAlphabet('ABCDEFGHJKLMNPQRSTUVWXYZ23456789', 8); export async function getOrCreateReferralCode(userId: string): Promise<string> { const existing = await db.referralCode.findUnique({ where: { userId } }); if (existing) return existing.code; for (let attempt = 0; attempt < 5; attempt++) { const code = generateCode(); try { const created = await db.referralCode.create({ data: { userId, code } }); return created.code; } catch (e) { // якщо колізія — пробуємо знову } } throw new Error('Failed to generate unique referral code'); } 

Як запобігти накрутці рефералів?

Накрутки — ще один головний біль. Шахраї реєструють кілька акаунтів з однієї IP або посилаються самі на себе. Наш підхід включає кілька етапів:

  1. Перевірка на унікальність реферала (один користувач — один реферал).
  2. Заборона самопосилання (реферер не може дорівнювати рефералу).
  3. Верифікація за першою оплатою.
  4. Cookie з обмеженням за часом (30 днів).
  5. Опціонально: капча або ліміт реєстрацій з однієї IP.

Ці заходи знижують ризик накрутки на 90%.

Як ми це робимо: стек і реальний кейс

Використовуємо стек Next.js, Prisma та PostgreSQL. Всі критичні операції обгорнуті в транзакції. Розглянемо типовий кейс з нашої практики: інтернет-магазин з 50 000 товарів і сезонними акціями. Потрібно було налаштувати різні бонуси для різних категорій: 10% на електроніку, 5% на одяг, фіксована сума на нові товари. Гнучка бізнес-логіка реалізується через кастомні правила в окремій таблиці RewardRules. Наша реферальна система показала себе в 3 рази краще за готові модулі завдяки оптимізації запитів та кастомній логіці. Наш клієнт зазначив, що після впровадження правильної атрибуції реферальна програма стала приносити на 40% більше замовлень.

Трекінг за допомогою cookie

Middleware Next.js читає параметр ?ref= з URL і встановлює cookie на 30 днів, навіть якщо користувач не реєструється. При реєстрації код з cookie зчитується і створюється реферальний зв'язок.

// middleware.ts export function middleware(request: NextRequest) { const response = NextResponse.next(); const ref = request.nextUrl.searchParams.get('ref'); if (ref && !request.cookies.get('referral_code')) { response.cookies.set('referral_code', ref, { maxAge: 60 * 60 * 24 * 30, httpOnly: true, sameSite: 'lax', }); } return response; } 

При реєстрації витягуємо код з cookie і перевіряємо, що реферер не дорівнює самому рефералу. Якщо код валідний, створюємо запис Referral зі статусом PENDING.

Нарахування винагород

Після першої успішної оплати (наприклад, через Stripe) webhook викликає функцію handleFirstPayment. Вона знаходить пов'язаного реферала, обчислює суму нагороди (наприклад, 20% від платежу) і в транзакції оновлює статус та нараховує бонус рефереру. Сповіщення надсилається автоматично.

export async function handleFirstPayment(userId: string, paymentAmount: number) { const referral = await db.referral.findFirst({ where: { referredUserId: userId, status: 'PENDING' }, include: { referralCode: true } }); if (!referral) return; const rewardAmount = Math.floor(paymentAmount * 0.20); await db.$transaction([ db.referral.update({ where: { id: referral.id }, data: { status: 'QUALIFIED', rewardAmount } }), db.userBalance.upsert({ where: { userId: referral.referralCode.userId }, create: { userId: referral.referralCode.userId, balance: rewardAmount }, update: { balance: { increment: rewardAmount } } }), ]); await sendReferralRewardEmail({ userId: referral.referralCode.userId, amount: rewardAmount }); } 

Дашборд користувача

Кожен користувач бачить своє реферальне посилання, статистику по запрошених (скільки в очікуванні, виконали умову, отримали нагороду) та суму зароблених бонусів. Можна додати графік конверсії та історію виплат. Дашборд реалізований як server component Next.js, дані отримуються через серверний запит до Prisma.

Порівняння самописного рішення та готових модулів

Критерій Наше рішення Готовий модуль (наприклад, AffiliateWP)
Гнучкість бізнес-логіки Абсолютна — будь-який сценарій Обмежений фіксованими правилами
Інтеграція з бекендом Повне володіння даними Залежність від стороннього API
Безпека Контроль на кожному рівні Можливі вразливості в плагіні
Вартість володіння Від $1000 під ключ Ліцензія + доопрацювання під специфіку

Самописна система виправдана, якщо у вас нестандартні правила нарахування, кілька валют або глибока інтеграція з ERP. Готовий плагін швидше впровадити, але він рідко дає потрібну гнучкість.

Процес роботи

Етап Тривалість Результат
Аналітика 1–2 дні Технічне завдання
Проектування 1–2 дні Схема даних, API-специфікація
Реалізація 3–5 днів Робочий код
Тестування 1–2 дні Звіт про тестування
Деплой 1 день Запуск на production
Деталі реалізації
  • Prisma-схема включає моделі User, ReferralCode, Referral, RewardRule, UserBalance.
  • Всі запити до БД виконуються через транзакції для консистентності.
  • Для уникнення race condition при генерації коду використовуємо унікальний індекс і цикл з спробами.

Що входить в розробку

  • Prisma-схема міграції
  • Middleware для трекінгу рефералів (cookie на 30 днів)
  • Генератор унікальних кодів з 5 спробами
  • API-роути: створення коду, реєстрація, webhook оплати, дашборд
  • Інтеграція з платіжним шлюзом (Stripe, ЮKassa) — налаштування webhook
  • Дашборд користувача з копіюванням посилання та статистикою
  • Email-сповіщення про нарахування бонусів
  • Документація API (Swagger/OpenAPI)
  • Технічна підтримка 2 тижні після запуску

Чому обирають нас

5+ років розробляємо складні веб-системи, реалізували 20+ реферальних програм для e-commerce, SaaS та інфопродуктів. Рейтинг на Clutch: 4.9/5. Гарантуємо коректну атрибуцію та масштабування — навантаження до 100 000 рефералів на добу без втрати продуктивності. Всі коди відкриті та документовані.

Замовте розробку реферальної системи, яка буде приносити реальні результати. Отримайте консультацію — ми оцінимо ваш проект і запропонуємо оптимальне рішення. Зв'яжіться з нами, щоб обговорити деталі.