Asosiy kontentga o‘tish
Innovialabs

Telegram deep link’lari: trekking va referallar uchun start parametri

Amaliyot3 daq

Qisqacha

Bot havolasiga ?start=KOD (Mini App uchun ?startapp=KOD) qo‘shing — foydalanuvchi botni ishga tushirganda bot shu kodni oladi va siz uni qaysi reklama, bloger yoki do‘st olib kelganini bilasiz.

start parametri qanday ishlaydi

Deep link — bitta qo‘shimcha parametrga ega oddiy t.me havolasi. Foydalanuvchi https://t.me/your_bot?start=c_8f3k2 havolasini ochib, Start tugmasini bossa, bot /start c_8f3k2 xabarini oladi.

Mini App uchun parametr startapp deb ataladi: https://t.me/your_bot/app?startapp=c_8f3k2 ilovani ochadi va qiymatni ishga tushirish ma’lumotlarida start_param sifatida uzatadi. Bu holda bot hech qanday xabar olmaydi — qiymat faqat Mini App ichida mavjud.

Har bir joylashtirish uchun bitta havola foydalanuvchi qayerdan kelganini bilishga yetadi: reklama kampaniyasi, bloger, qadoqdagi QR-kod yoki do‘stning taklifi.

Parametr qoidalari

  • 64 belgigacha.
  • Ruxsat etilgan belgilar: A-Z, a-z, 0-9, _ va -.
  • Bo‘sh joy, =, & va kirill harflari mumkin emas, shuning uchun to‘liq UTM satri sig‘maydi.
YondashuvMisolQachon mos
Qisqa o‘qiladigan kodig_springKampaniyalar kam
Ajratkichli maydonlarsrc-ig__cmp-springBir nechta atribut, bazasiz
Bazadagi IDc_8f3k2Kampaniyalar ko‘p, bog‘lanishlar o‘zgarishi mumkin
Base64urlkodlangan JSON64 belgiga sig‘adigan ixtiyoriy ma’lumot

Eng amaliy variant — bazadagi ID: kampaniyani (manba, maydon, kreativ, sana) jadvalda saqlang, havolaga esa faqat qisqa ID qo‘ying. Havolalar qisqa bo‘lib qoladi, ichki nomlarni oshkor qilmaydi, xatoni esa havolalarni qayta chiqarmasdan tuzatish mumkin.

aiogram va grammY’da qayta ishlash

aiogram 3’da deep link handler oddiy /startdan oldin ro‘yxatdan o‘tkaziladi:

from aiogram import Router
from aiogram.filters import CommandStart, CommandObject
from aiogram.types import Message

router = Router()

@router.message(CommandStart(deep_link=True))
async def start_with_code(message: Message, command: CommandObject):
    await save_touch(message.from_user.id, command.args)
    await message.answer("Xush kelibsiz!")

@router.message(CommandStart())
async def start_plain(message: Message):
    await message.answer("Xush kelibsiz!")

grammY’da qiymat ctx.match orqali olinadi:

bot.command("start", async (ctx) => {
  const code = ctx.match; // parametr bo‘lmasa, bo‘sh satr
  if (code) await saveTouch(ctx.from!.id, code);
  await ctx.reply("Xush kelibsiz!");
});

Mini App’da Telegram.WebApp.initDataUnsafe.start_param interfeys qarorlari uchun yaraydi, ammo atributsiya uchun faqat serverda tekshirilgan initData ichidagi qiymatga ishoning.

Reklama trafigini atributsiya qilish

  1. Kampaniya yozuvini yarating va har bir joylashtirish uchun alohida havola tayyorlang.
  2. /startda birinchi teginishni faqat foydalanuvchi yangi bo‘lsa saqlang. Keyingi teginishlarni alohida jadvalga yozing.
  3. Foydalanuvchilarni maqsadli hodisalar — ro‘yxatdan o‘tish, buyurtma, to‘lov — bilan bog‘lang va kampaniyalar bo‘yicha faqat ishga tushirishlarni emas, konversiyalarni hisoblang.
  4. Parametrsiz foydalanuvchilarni organik yoki «noma’lum» deb belgilang: Telegram referer uzatmaydi, botni qidiruv orqali topgan odam kodsiz keladi.

Hisobotlar qaysi model — birinchi yoki oxirgi teginish — bo‘yicha tuzilishini oldindan hal qiling. Foydalanuvchi turli vaqtda turli havolalarni ochishi mumkin, modellarni aralashtirish esa raqamlarni solishtirib bo‘lmaydigan qiladi.

Firibgarlikdan himoyalangan referal dastur

Referal havola ?start=ref_x7k2p ko‘rinishida bo‘ladi. Har bir foydalanuvchi uchun Telegram ID emas, tasodifiy kod ishlating: ID’ni saralab topish oson va u akkaunt ma’lumotlarini oshkor qiladi.

Asosiy himoya:

  • Faqat yangi foydalanuvchilar. Taklif qilingan odam bazada avval bo‘lgan bo‘lsa — bonus yo‘q.
  • O‘zini o‘zi taklif qilish taqiqlanadi. Foydalanuvchining o‘ziga tegishli kodni e’tiborsiz qoldiring.
  • Maqsadli harakat uchun mukofot, /start uchun emas. Start bosish hech narsaga tushmaydi va soxta akkaunt fermalari «ishga tushirish uchun bonus» dasturini tezda bo‘shatib qo‘yadi.
  • Bonuslarni to‘lashdan oldin ushlab turish davri, toki qaytarishlar va firibgarlik yuzaga chiqsin.
  • Unikal cheklov: har bir taklif qilingan odamga bitta referal yozuv, toki takroriy so‘rovlar va ikki marta bosish dublikat yaratmasin.
  • Limitlar va ogohlantirishlar: bir taklif qiluvchiga kunlik mukofotlar sonini cheklang, keskin sakrashlarni va ishga tushirgandan keyin hech narsa qilmaydigan foydalanuvchilarni belgilang.

Ko‘p uchraydigan xatolar

  • Havolaga to‘liq UTM satrini qo‘yish: u belgilar qoidasini buzadi va parametr yo‘qoladi.
  • Har bir /startda manbani qayta yozish — dastlabki kampaniya yo‘qoladi.
  • Serverda tekshirmasdan mijozdan kelgan start_paramga ishonish.
  • Bo‘sh parametr holatini hisobga olmaslik, natijada handler ishdan chiqadi.

Ko‘p beriladigan savollar

Ha. Foydalanuvchi havolani ochib, botni qayta ishga tushirsa, bot yangi kod bilan /start oladi. Shuning uchun aniq qoida kerak: birinchi teginish yoki oxirgi teginish.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.