LW IT Solutions
« Przegląd bloga /Digital Analytics / Matomo Tracking API: hity po stronie serwera,...
Ten artykuł w innych językach:

Matomo Tracking API: hity po stronie serwera, parametry obowiązkowe i błędy, które mimo to zwracają 200

Matomo Tracking API: hity po stronie serwera, parametry obowiązkowe i błędy, które mimo to zwracają 200
Spis treści
  1. Czego trafienie wymaga co najmniej
  2. Identyfikator odwiedzającego rozstrzyga o całej reszcie
  3. Wymiary własne to tylko numery
  4. Co wolno wysłać wyłącznie serwerowi
  5. Dlaczego trafienie znika bez słowa
  6. Pytania i odpowiedzi
  7. Źródła

Matomo da się zasilać bez jednej linii JavaScriptu: pojedyncze zapytanie HTTP do matomo.php niesie odsłonę, zdarzenie albo cel. Czyni to z niego oczywistą drogę do zapisania tego, czego przeglądarka nigdy nie widzi – zamówienia potwierdzonego w zapleczu, członkostwa wypowiedzianego telefonicznie, zakończonego zadania wsadowego.

Cecha, która czyni go wygodnym, jest zarazem tą, która utrudnia szukanie błędów. Punkt końcowy odpowiada niemal na każde zapytanie tak samo: HTTP 200 i pusty obrazek, niezależnie od tego, czy trafienie zapisano, po cichu odrzucono, czy zaliczono do niewłaściwej witryny. Wszystko poniżej dotyczy rozróżnienia tych trzech przypadków bez pomocy ze strony odpowiedzi.

Zapytanie do matomo.php rozłożone na parametry, pogrupowane w pola obowiązkowe, pola przypisania i pola działające wyłącznie z tokenem, poniżej odpowiedź: HTTP 200 i pusty obrazek dla trafień zapisanych i odrzuconych, HTTP 400 przy nieznanym idsite lub polach tokenu bez tokenu
Trzy grupy parametrów: HTTP 200 i pusty obrazek dla trafień zapisanych i odrzuconych, HTTP 400 tylko przy nieznanym idsite i polach tokenu bez tokenu.

Czego trafienie wymaga co najmniej

O tym, czy cokolwiek zostanie zapisane, rozstrzygają trzy parametry: idsite dla witryny, do której trafienie należy, rec=1 jako przełącznik zamieniający zapytanie w zapis oraz coś, co trafienie nazywa – url, action_name albo jedno i drugie. Bez rec=1 zapytanie zostaje obsłużone dokładnie tak samo, a zapisane nie zostaje nic.

Wszystko dalsze jest dobrowolne w tym sensie, że trafienie przetrwa i bez tego, a rzadko dobrowolne w tym sensie, że raport pozostanie użyteczny. Trafienie bez adresu pojawia się w raportach bez nazwy – to ten rodzaj wpisu, który zauważa się po miesiącach i którego już nie da się do niczego przypisać.

Identyfikator odwiedzającego rozstrzyga o całej reszcie

Parametr _id to identyfikator odwiedzającego złożony z dokładnie szesnastu znaków szesnastkowych. Nie piętnastu, nie UUID z myślnikami, nie trzydziestu dwóch znaków skrótu MD5 – co chybia format, Matomo pomija po cichu, a nacisk leży na słowie po cichu.

To, co dzieje się dalej, jest gorsze niż błąd. Bez użytecznego _id Matomo wyprowadza odwiedzającego z adresu IP i identyfikatora przeglądarki, co w przeglądarce działa znośnie, a na serwerze się załamuje: każde trafienie przychodzi z tego samego adresu z tym samym identyfikatorem, więc ruch całego dnia scala się w jednego odwiedzającego o niezwykłej liczbie akcji.

Rozpoznaje się to po raporcie, w którym jeden odwiedzający skupia większość zdarzeń, podczas gdy liczba wizyt pozostaje płaska. To nie bot, tylko zadanie wsadowe bez identyfikatora.

Wymiary własne to tylko numery

Wymiary przekazuje się jako dimension1, dimension2 i tak dalej, a numer nie jest nazwą – odsyła do miejsca, które musi istnieć w interfejsie Matomo, zanim da się cokolwiek do niego zapisać. Wartość wysłana pod nieskonfigurowany numer zostaje przyjęta i odrzucona.

Drugą rzeczą do trafienia jest zakres. Wymiar o zakresie wizyty trzyma jedną wartość na wizytę i zostaje nadpisany przez każde późniejsze trafienie, które go niesie; wymiar o zakresie akcji trzyma jedną wartość na akcję. Nazwa taryfy w niewłaściwym zakresie daje albo wartość zmieniającą się z ostatnią odsłoną, albo taką, której nie da się użyć jako segmentu w obrębie wizyty.

Co wolno wysłać wyłącznie serwerowi

Garść parametrów zmienia dane, których zapytanie normalnie nie może dotykać: cip dla prawdziwego adresu IP odwiedzającego, cdt dla momentu innego niż teraz, do tego pola geograficzne. Wszystkie wymagają token_auth, cdt jednak dopiero dla momentów sprzed ponad 24 godzin. Bez tokenu tam, gdzie jest wymagany, Matomo odrzuca całe zapytanie z kodem HTTP 400.

Token należy do serwera i do nikąd indziej. W przeglądarce odczyta go każdy odwiedzający, a daje on nie prawo odczytu, lecz zapisu: kto go ma, zapisuje dowolne trafienia do statystyk, których potem nie sposób odróżnić od prawdziwych. Tam, gdzie strona sama musi wysyłać trafienia, po prostu nie dołącza tych parametrów.

Z tokenem Matomo przyjmuje także starsze znaczniki czasu, o ile nie wykraczają poza ustawiony okres usuwania surowych danych. Tydzień historii da się więc uzupełnić przez cdt; raporty za te dni wymagają potem jednak ponownego przetworzenia.

Dlaczego trafienie znika bez słowa

Przyczyna Co widać
Brak rec=1 Zupełnie nic, a zapytanie wygląda całkiem zwyczajnie.
Błędne idsite Trafienia lądują w witrynie o tym numerze; jeśli takiej nie ma, Matomo odpowiada kodem HTTP 400.
_id w złym formacie Wszystkie trafienia scalają się w jednego odwiedzającego, liczba wizyt przestaje rosnąć.
cdt bez tokenu Do 24 godzin wstecz trafienie zostaje zapisane z zamierzonym czasem; starsze znaczniki czasu Matomo odrzuca z kodem HTTP 400.
Nieskonfigurowany wymiar Trafienie zostaje zapisane, wymiar nie.

Kontrolą, która kończy większość z tego w minutę, jest dziennik odwiedzin z otwartym podglądem na żywo w chwili wysyłania zapytania. Trafienie, które się tam pojawi, jest zapisane; to, którego brak, zostało odrzucone, a powyższa lista mówi, gdzie szukać. Odpowiedź nie powie tego nigdy.

Pytania i odpowiedzi

Skąd serwer ma wziąć poprawny _id, jeśli ten sam odwiedzający jest liczony także w przeglądarce?

Najlepiej z samej przeglądarki. Tracker JavaScript Matomo zapisuje identyfikator odwiedzającego w ciasteczku, którego nazwa zaczyna się od _pk_id; jego wartość zaczyna się dokładnie od szesnastu znaków szesnastkowych, których oczekuje _id, a po nich następuje kropka i dalsze dane. Jeśli żądanie wywołujące trafienie po stronie serwera pochodzi z tej przeglądarki, identyfikator da się tam odczytać i przekazać dalej. Trafienia z przeglądarki i z serwera są wtedy przypisywane temu samemu odwiedzającemu.

Gdy takiej drogi nie ma, jak przy członkostwie wypowiedzianym telefonicznie, wystarczy własny, stały identyfikator we właściwym formacie. Typowym rozwiązaniem jest pierwsze szesnaście znaków szesnastkowych ze skrótu numeru klienta; pełny skrót MD5 o trzydziestu dwóch znakach zostałby odrzucony. Ta sama osoba dostaje wtedy przy każdym trafieniu ten sam identyfikator, a sam numer klienta nie trafia do Matomo.

Dochodzą do tego dwie uwagi. Taki skrót pozostaje pseudonimem, a więc daną osobową, a odczyt ciasteczka zakłada, że tracker w przeglądarce w ogóle mógł je ustawić. Bez zgody i przy pomiarze bez ciasteczek nie ma tam czego odczytać.

Dlaczego wszystkie trafienia po stronie serwera pokazują tę samą lokalizację?

Bo bez cip Matomo przyjmuje adres żądania, a jest to adres wysyłającego serwera. Raporty lokalizacji pokazują wtedy serwerownię, w której działa zadanie wsadowe. Prawdziwy adres odwiedzającego da się przekazać tylko przez cip, a więc tylko razem z token_auth.

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Napisanie komentarza

Odmienne wyniki z innych kont i pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

Artykuły i kategorie

CCTV

Śledź tę kategorię przez RSS

Cloud & AI

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Data Privacy

Wszystkie artykuły w tej kategorii (19) Śledź tę kategorię przez RSS

Digital Analytics

Wszystkie artykuły w tej kategorii (58) Śledź tę kategorię przez RSS

Digital Marketing

Wszystkie artykuły w tej kategorii (37) Śledź tę kategorię przez RSS

IT & Networks

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Music Production

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

SaaS & Internet Earning

Śledź tę kategorię przez RSS

Smart Home

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Wszystkie artykuły w tej kategorii (14) Śledź tę kategorię przez RSS