📨 Первое событие
Отправьте своё первое событие в InstantBase и увидьте данные в дашборде
💡 Перед началом: Убедитесь, что у вас есть API-ключ. Для тестирования используйте тестовый ключ.
Что такое событие?
В InstantBase событие — это любое действие пользователя в вашем приложении или на сайте. Каждое событие содержит:
- Название события — например,
page_view,purchase,signup - Идентификатор пользователя — кто совершил действие
- Свойства — дополнительные данные о событии
- Временная метка — когда произошло событие
Структура события
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
event |
string | ✅ Да | Название события. Используйте понятные имена: purchase, page_view, add_to_cart |
user_id |
string | ⚠️* | ID авторизованного пользователя в вашей системе |
anonymous_id |
string | ⚠️* | ID неавторизованного пользователя (cookie, device ID) |
timestamp |
string (ISO 8601) | ❌ Нет | Время события. Если не указано, используется серверное |
properties |
object | ❌ Нет | Параметры события. Может содержать любые данные в формате JSON |
session_id |
string | ❌ Нет | ID сессии для группировки событий |
* Должен быть передан либо user_id, либо anonymous_id. Можно передавать оба — в этом случае они будут связаны в единый профиль.
Отправка первого события через curl
Самый простой способ протестировать интеграцию — отправить событие через терминал с помощью curl:
bash
curl -X POST https://api.instantbase.online/v1/track \
-H "X-API-Key: ваш_тестовый_ключ" \
-H "Content-Type: application/json" \
-d '{
"event": "test_event",
"user_id": "test_user_123",
"properties": {
"source": "curl",
"test_property": "Hello World!"
}
}'
Замените ваш_тестовый_ключ на реальный ключ из личного кабинета.
Ожидаемый ответ
json
{
"status": "ok",
"message": "Event received",
"queued": true
}
Ответ "queued": true означает, что событие успешно принято и поставлено в очередь на обработку.
Отправка события из JavaScript
Для отправки событий с веб-сайта используйте fetch API:
javascript
// Функция для отправки события
async function trackEvent(eventName, userId, properties = {}) {
try {
const response = await fetch('https://api.instantbase.online/v1/track', {
method: 'POST',
headers: {
'X-API-Key': 'ваш_тестовый_ключ',
'Content-Type': 'application/json'
},
body: JSON.stringify({
event: eventName,
user_id: userId,
properties: properties,
timestamp: new Date().toISOString()
})
});
const data = await response.json();
console.log('Event tracked:', data);
return data;
} catch (error) {
console.error('Failed to track event:', error);
}
}
// Использование
trackEvent('page_view', 'user_123', {
page: '/home',
referrer: document.referrer
});
⚠️ Внимание: Никогда не используйте production-ключи в клиентском JavaScript — они будут видны всем. Для клиентской отправки используйте тестовые ключи или проксируйте запросы через свой бэкенд.
Отправка события из Node.js
javascript
const axios = require('axios');
const API_KEY = process.env.INSTANTBASE_API_KEY;
async function trackEvent(event, userId, properties = {}) {
try {
const response = await axios.post('https://api.instantbase.online/v1/track', {
event,
user_id: userId,
properties,
timestamp: new Date().toISOString()
}, {
headers: {
'X-API-Key': API_KEY
}
});
console.log('Event tracked:', response.data);
return response.data;
} catch (error) {
console.error('Failed to track event:',
error.response?.data || error.message
);
}
}
// Пример использования
trackEvent('user_signup', 'user_123', {
email: 'user@example.com',
source: 'google_ads'
});
Отправка события из Python
python
import os
import requests
from datetime import datetime
API_KEY = os.environ.get('INSTANTBASE_API_KEY')
def track_event(event, user_id, properties=None):
url = 'https://api.instantbase.online/v1/track'
headers = {
'X-API-Key': API_KEY,
'Content-Type': 'application/json'
}
data = {
'event': event,
'user_id': user_id,
'properties': properties or {},
'timestamp': datetime.now().isoformat()
}
try:
response = requests.post(url, json=data, headers=headers)
response.raise_for_status()
print('Event tracked:', response.json())
return response.json()
except requests.exceptions.RequestException as e:
print('Failed to track event:', e)
if hasattr(e.response, 'text'):
print('Response:', e.response.text)
# Пример использования
track_event('purchase', 'user_123', {
'order_id': 'ORD-001',
'amount': 1499.99,
'items': ['item1', 'item2']
})
Отправка события из PHP
php
<?php
function trackEvent($event, $userId, $properties = []) {
$apiKey = getenv('INSTANTBASE_API_KEY');
$data = [
'event' => $event,
'user_id' => $userId,
'properties' => $properties,
'timestamp' => date('c')
];
$ch = curl_init('https://api.instantbase.online/v1/track');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . $apiKey,
'Content-Type: application/json'
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
echo "Event tracked successfully\n";
return json_decode($response, true);
} else {
echo "Failed to track event. HTTP code: $httpCode\n";
echo "Response: $response\n";
return null;
}
}
// Пример использования
trackEvent('page_view', 'user_123', [
'page' => '/products',
'referrer' => 'google'
]);
?>
Проверка доставки события
После отправки события подождите 1-2 минуты и проверьте:
- Зайдите в личный кабинет InstantBase
- Перейдите в раздел "События"
- В ленте событий вы должны увидеть ваше тестовое событие
- Нажмите на событие, чтобы увидеть все переданные параметры
💡 Совет: Используйте фильтр по
user_id или event, чтобы быстро найти нужное событие.
Примеры событий для разных ситуаций
Просмотр страницы
{
"event": "page_view",
"user_id": "user_123",
"properties": {
"page": "/products",
"title": "Каталог товаров",
"referrer": "https://google.com"
}
}
Регистрация пользователя
{
"event": "signup",
"user_id": "user_123",
"properties": {
"method": "email",
"source": "facebook_ads"
},
"attributes": {
"email": "user@example.com",
"name": "Иван Петров"
}
}
Покупка
{
"event": "purchase",
"user_id": "user_123",
"properties": {
"order_id": "ORD-12345",
"revenue": 5499,
"items": [
{"id": "prod_1", "name": "Футболка", "price": 1999, "quantity": 2},
{"id": "prod_2", "name": "Джинсы", "price": 3500, "quantity": 1}
]
},
"_metadata": {
"is_order": true
}
}
Обработка ошибок
| Код | Ошибка | Причина | Решение |
|---|---|---|---|
| 400 | Invalid JSON | Неверный формат JSON | Проверьте синтаксис JSON |
| 400 | Missing required field: event | Не указано название события | Добавьте поле event |
| 400 | Either user_id or anonymous_id is required | Не указан идентификатор пользователя | Добавьте user_id или anonymous_id |
| 401 | Invalid or missing API key | Неверный или отсутствующий ключ | Проверьте ключ в заголовке X-API-Key |
| 429 | Too many requests | Превышен rate limit | Подождите и повторите запрос |
| 500 | Internal server error | Ошибка на сервере | Повторите запрос позже |
Рекомендации
- Именование событий: используйте
snake_case(например,page_view,add_to_cart) - Не передавайте чувствительные данные: пароли, номера карт, персональные данные
- Используйте тестовые ключи на этапе разработки
- Группируйте события сессией для анализа пути пользователя
- Передавайте все важные параметры — это поможет в будущем анализе