Ссылки, плейсхолдеры и шаги воронки
Проект создаётся в панели или ИИ-ассистентом через MGRAM MCP. Ссылки раздаёте по источникам, шаги шлёт ваш код — каждый переход и шаг виден в панели.
Как это работает
- Проект — куда вести трафик (сайт, бот, Mini App) и шаги после перехода: «Запуск → Регистрация → Оплата».
- Ссылки —
https://utm.mgram.biz/abc1234с UTM-метками на каждый источник: рассылка, Показы, канал, блогер. - Переход — MGRAM запоминает клик, подставляет плейсхолдеры в адрес и ведёт человека дальше.
- Шаги — бот, сайт или сервер отправляет шаги с
click_id; панель считает воронку и выручку по каждой ссылке и метке.
Плейсхолдеры в адресе
Пишутся в фигурных скобках прямо в адресе: https://t.me/your_bot?start={click_id} или https://site.ru/?cid={click_id}&src={utm_source}.
{click_id}- номер перехода — передавайте дальше по воронке: в /start бота, в адрес сайта
{utm_source}…{utm_term}- UTM-метки ссылки
{sub1}…{sub5}- значения из адреса перехода: …/abc1234?sub1=vk
{project},{link}- номер проекта и код ссылки
{country}- страна посетителя
{ts}- время перехода, Unix
UTM-метки ссылки добавляются к адресу сайта сами, если их там нет. Переходы ботов предпросмотра (Telegram, VK, Facebook…) считаются отдельно.
Шаги воронки — API
POST https://utm.mgram.biz/api/v1/events, заголовок Authorization: Bearer utm_sk_… — ключ записи проекта (выдаётся в панели один раз).
stepобязательно- ключ шага: латиница, цифры, _ (до 32); новый шаг сам добавится в воронку (до 20)
click_id- номер перехода из плейсхолдера — связывает шаг со ссылкой и источником. Можно передать и код ссылки: бот запущен по
t.me/bot?start=код(например, из заказа запусков MGRAM) — шаг засчитается этой ссылке link- код ссылки, если перехода не было (например, бот открыт по своей ссылке)
user_id- ваш идентификатор пользователя (до 128 символов)
value,currency- сумма шага и валюта
event_id- ваш номер события — повтор не задвоится
uniquetrue— один раз на переход или пользователяmeta- ваши данные, до 20 полей
Пачкой: {"events": […]} до 100 событий. Ответ: {"ok": true, "id": 123, "attributed": true}.
import os, requests
MGRAM_UTM_KEY = os.environ.get("MGRAM_UTM_KEY", "utm_sk_…")
def track(step, click_id=None, user_id=None, value=None):
requests.post("https://utm.mgram.biz/api/v1/events", timeout=5,
headers={"Authorization": f"Bearer {MGRAM_UTM_KEY}"},
json={"step": step, "click_id": click_id, "user_id": user_id, "value": value, "unique": True})
track("register", click_id=click_id, user_id="42")# адрес проекта: https://t.me/your_bot?start={click_id}
from aiogram.filters import CommandStart, CommandObject
import aiohttp, os
MGRAM_UTM_KEY = os.environ.get("MGRAM_UTM_KEY", "utm_sk_…")
async def track(step, click_id, user_id, value=None):
async with aiohttp.ClientSession() as s:
await s.post("https://utm.mgram.biz/api/v1/events", headers={"Authorization": f"Bearer {MGRAM_UTM_KEY}"},
json={"step": step, "click_id": click_id, "user_id": str(user_id), "value": value, "unique": True})
@router.message(CommandStart(deep_link=True))
async def start(message, command: CommandObject):
await track("start", command.args, message.from_user.id) # command.args — это {click_id}const MGRAM_UTM_KEY = process.env.MGRAM_UTM_KEY || "utm_sk_…";
async function track(step, { clickId, userId, value } = {}) {
await fetch("https://utm.mgram.biz/api/v1/events", {
method: "POST",
headers: { Authorization: `Bearer ${MGRAM_UTM_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ step, click_id: clickId, user_id: userId, value, unique: true }),
});
}<?php
$ch = curl_init("https://utm.mgram.biz/api/v1/events");
curl_setopt_array($ch, [
CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . (getenv("MGRAM_UTM_KEY") ?: "utm_sk_…"), "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(["step" => "register", "click_id" => $clickId, "user_id" => (string)$userId, "unique" => true]),
]);
curl_exec($ch);curl -X POST https://utm.mgram.biz/api/v1/events \
-H "Authorization: Bearer utm_sk_…" -H "Content-Type: application/json" \
-d '{"step":"register","click_id":"CLICK_ID","user_id":"42","unique":true}'<!-- адрес проекта: https://your-site.ru/?mgram_cid={click_id} -->
<script src="https://utm.mgram.biz/t.js" data-key="utm_pk_…" data-step="visit" async></script>
<script>window.mgramUtm && window.mgramUtm("lead") // шаг отмечен «сайт» в проекте</script>Данные перехода и браузер
- Данные перехода
GET https://utm.mgram.biz/api/v1/clicks/{click_id}с ключом записи — ссылка, UTM-метки, sub-параметры, страна и время- Из браузера
- публичный ключ и скрипт
t.js; шаги, отмеченные «сайт» в проекте, засчитываются один раз на переход - Лимиты
- до 50 проектов, до 500 ссылок в проекте, 1 200 событий в минуту, 100 в запросе
- Хранение
- IP не храним: уникальные посетители считаются по суточному хэшу