Бізнес-сигнали · EndPoint

EndPoint бізнес-сигналів

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

01

Що можна надсилати

Будь-який лічильник, який ви назвете. Віднесіть його до категорії — а ми побудуємо графік, розкладемо за розрізами й стежитимемо за ним.

Користувачі

усього користувачів, реєстрації по днях, підписники, видалення

Контент

матеріали будь-якого типу — статті, відео, анкети, оголошення

Виручка

спроби оплати, успішні оплати, повернення — плюс похідна конверсія

Модерація

анкети на видалення, скарги, черги на перевірку

Зворотний зв’язок

повідомлення через форму, тикети підтримки, NPS

Будь-що інше

назвіть метрику — і вона з’явиться, без налаштування з нашого боку

02

EndPoint

POSThttps://astrina.io/endpoint/ingestНадіслати пакет сигналів. Авторизація: ключ сайту в заголовку X-Astrina-Key.
GEThttps://astrina.io/endpoint/pingПінг — повертає команди, що очікують, без відправки даних.
GEThttps://astrina.io/endpoint/insightsЗабрати обчислене здоров’я цього сайту: поточні значення, дельти, цілі, тривоги та медіану по інших ваших сайтах.
POSThttps://astrina.io/endpoint/ackПідтвердити доставлену команду за її id.
03

Приклади

curl -X POST https://astrina.io/endpoint/ingest \
  -H "X-Astrina-Key: YOUR_SITE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "signals": [
      { "metric": "users",              "kind": "gauge", "value": 15230, "category": "users" },
      { "metric": "registrations",      "value": 42,     "category": "users" },
      { "metric": "materials", "kind": "gauge", "value": 842, "dim": "article", "category": "content" },
      { "metric": "materials", "kind": "gauge", "value": 301, "dim": "video",   "category": "content" },
      { "metric": "payment_requests",   "value": 18,     "category": "revenue" },
      { "metric": "payment_success",    "value": 11,     "category": "revenue", "unit": "EUR" },
      { "metric": "feedback",           "value": 3,      "category": "feedback" },
      { "metric": "profiles_to_delete", "kind": "gauge", "value": 5, "category": "moderation",
        "good_dir": "down", "attention": true }
    ]
  }'
<?php
// Run this daily (cron) on your own site. Sends only counts — never personal data.
$key = 'YOUR_SITE_KEY';
$payload = ['signals' => [
    ['metric' => 'users',         'kind' => 'gauge', 'value' => usersTotal(),          'category' => 'users'],
    ['metric' => 'registrations', 'value' => registrationsToday(),                     'category' => 'users'],
    ['metric' => 'payment_requests', 'value' => paymentAttemptsToday(),               'category' => 'revenue'],
    ['metric' => 'payment_success',  'value' => paymentsPaidToday(), 'unit' => 'EUR',  'category' => 'revenue'],
    ['metric' => 'feedback',      'value' => feedbackToday(),                          'category' => 'feedback'],
    ['metric' => 'profiles_to_delete', 'kind' => 'gauge', 'value' => deletionQueue(),
        'category' => 'moderation', 'good_dir' => 'down', 'attention' => true],
]];
$ch = curl_init('https://astrina.io/endpoint/ingest');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['X-Astrina-Key: YOUR_SITE_KEY', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_RETURNTRANSFER => true,
]);
$resp = json_decode(curl_exec($ch), true);
// Two-way: act on anything Astrina asks for (e.g. a fresh full snapshot).
foreach ($resp['requests'] ?? [] as $cmd) {
    if ($cmd['cmd'] === 'full_snapshot') { /* push your whole history, then: */ }
    // acknowledge so it is not re-sent:
    // curl https://astrina.io/endpoint/ack  -d '{"id": ' . $cmd['id'] . '}'
}
<?php
// One-off: backfill a year of daily registrations so the charts start full.
$signals = [];
foreach (registrationsByDay('-365 days') as $day => $n) {   // 'YYYY-MM-DD' => int
    $signals[] = ['metric' => 'registrations', 'value' => $n, 'day' => $day, 'category' => 'users'];
}
// up to 2000 points per request
foreach (array_chunk($signals, 2000) as $chunk) {
    postJson('https://astrina.io/endpoint/ingest', ['signals' => $chunk], 'YOUR_SITE_KEY');
}
# Pull this site's computed health BACK (current values, 30-day deltas, target
# progress, open alerts, and the median across YOUR OTHER sites) to show it in-app:
curl "https://astrina.io/endpoint/insights" -H "X-Astrina-Key: YOUR_SITE_KEY"

Замініть YOUR_SITE_KEY на ключ з вашого дашборда. У кожного сайту свій ключ; він дозволяє відправку цифр лише цього сайту.

04

Поля сигналу

ПолеЗначення
metricобов’язковоAny key you choose — users, registrations, materials, payment_success… Stored under this key forever.
valueобов’язковоThe number. For a gauge it is the current total; for a count it is that period's amount.
kindнеобовʼязково"gauge" (a snapshot total, e.g. total users now) or "count" (per-day amount, the default).
dayнеобовʼязковоYYYY-MM-DD. Defaults to today. Send past days to backfill; re-sending a day overwrites it.
dimнеобовʼязковоA breakdown value, e.g. the material type "article"/"video". One series per dimension.
categoryнеобовʼязковоusers · content · revenue · moderation · feedback · engagement · custom — groups the metric.
unitнеобовʼязковоA short unit shown next to the number, e.g. "EUR", "GB".
good_dirнеобовʼязково"up" (default), "down" (lower is better, e.g. a deletion queue) or "none".
attentionнеобовʼязковоtrue pins the metric to the cross-site cockpit as a "needs clearing" number.
eventнеобовʼязковоtrue + a count with no day increments today instead of overwriting it.
05

Двобічний за задумом

Команди назад

Кожна відправка повертає команди, поставлені вами в чергу в дашборді — наприклад, «надіслати повний знімок». Сайт виконує їх і підтверджує.

Інсайти назад

Викличте /endpoint/insights, щоб показати свої живі цифри, цілі та тривоги всередині своєї адмінки.

Бенчмарк по портфелю

Ми повертаємо медіану кожної метрики по інших ваших сайтах, щоб сайт міг показати, як він виглядає на їхньому тлі.

Стеження за аномаліями

Ми стежимо за різкими падіннями, сплесками, інтеграцією, що замовкла, і платіжною лійкою, що перестала конвертувати — і позначаємо це.

EndPoint бізнес-сигналів

На які запити відповідає ця сторінка

  • endPoint бізнес-сигналів
  • endPoint бізнес-сигналів — посібник
  • endPoint бізнес-сигналів — розбір
  • endPoint бізнес-сигналів — покроковий розбір
  • з чого почати: EndPoint бізнес-сигналів
  • endPoint бізнес-сигналів — як роблять правильно
  • endPoint бізнес-сигналів по кроках
  • що таке EndPoint бізнес-сигналів
  • endPoint бізнес-сигналів для початківців
  • endPoint бізнес-сигналів — чек-лист
  • endPoint бізнес-сигналів — приклади
  • навіщо потрібно EndPoint бізнес-сигналів