Telegram deep link’lari: trekking va referallar uchun start parametri
Amaliyot3 daqInnovialabs tahririyati
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.
| Yondashuv | Misol | Qachon mos |
|---|---|---|
| Qisqa o‘qiladigan kod | ig_spring | Kampaniyalar kam |
| Ajratkichli maydonlar | src-ig__cmp-spring | Bir nechta atribut, bazasiz |
| Bazadagi ID | c_8f3k2 | Kampaniyalar ko‘p, bog‘lanishlar o‘zgarishi mumkin |
| Base64url | kodlangan JSON | 64 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
- Kampaniya yozuvini yarating va har bir joylashtirish uchun alohida havola tayyorlang.
/startda birinchi teginishni faqat foydalanuvchi yangi bo‘lsa saqlang. Keyingi teginishlarni alohida jadvalga yozing.- Foydalanuvchilarni maqsadli hodisalar — ro‘yxatdan o‘tish, buyurtma, to‘lov — bilan bog‘lang va kampaniyalar bo‘yicha faqat ishga tushirishlarni emas, konversiyalarni hisoblang.
- 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,
/startuchun 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.