Installeren
Track installeren
Track telt de bezoeken op je server, met een middleware in Go. Er komt geen script in de pagina en geen cookie in de browser.
Je server stuurt de bezoeken elke tien seconden in één keer naar Track, en een pagina wacht daar nooit op.
In vier stappen
-
Zet de token in de omgeving van je server, bijvoorbeeld in het
.env-bestand of de configuratie van je container:TRACK_TOKEN=trk_… -
Haal de library op:
go get github.com/savage-software-com/track-client -
Wikkel de handler van je website in de middleware:
import track "github.com/savage-software-com/track-client" tracker, err := track.New(track.Config{ Token: os.Getenv("TRACK_TOKEN"), }) if err != nil { log.Fatal(err) } defer tracker.Close(context.Background()) http.ListenAndServe(":8080", tracker.Middleware(handler))Een site op go-webthings voegt de module toe, naast of in plaats van de
stats-module (go get github.com/savage-software-com/track-client/trackwt):app.Use(trackwt.Module(track.Config{Token: os.Getenv("TRACK_TOKEN")})) -
Open een pagina van je website in je browser. Binnen tien seconden stuurt je server het bezoek; het dashboard toont het meteen.
Wat de middleware telt
Pagina's die een mens opent: GET-verzoeken die met 200 en HTML antwoorden, zonder bestandsextensie in het pad. Niet geteld worden bestanden, formulierposts, prefetches, htmx-fragmenten (geboostte links wel), bots en monitors, en pagina's die zelf vragen om niet bewaard te worden: X-Robots-Tag: noindex, Cache-Control: private of <meta name="robots" content="noindex">. Pagina's die met 404 antwoorden komen in de lijst ‘Niet gevonden’, antwoorden met 500 of hoger onder ‘Serverfouten’. Bestanden als .pdf, .zip en .docx tellen als download; een PDF die in delen wordt opgehaald één keer. Bots, crawlers en scripts, ook AI-assistenten als ChatGPT-User, tellen alleen bij naam, nooit als bezoeker.
Wat je server naar Track stuurt
Per bezoek: de host, het pad (zonder query), de titel van de pagina, hoe lang je server erover deed, de host van de verwijzende website, utm_source, utm_medium en utm_campaign, de eerste taal van de browser, de user agent en het IP-adres. Track zoekt met het IP-adres het land en de stad op en herkent de bezoeker voor die dag met een hash met een dagelijks wisselend geheim; het adres en de user agent worden daarna vergeten. Zie wat Track meet.
Instellingen
Eigen gebeurtenissen
Tel wat er op je website gebeurt, zoals een inschrijving of een download. Track toont ze onder ‘Doelen’:
tracker.Event(r, "inschrijving nieuwsbrief")
Op een go-webthings-site: trackwt.Of(app).Event(r, "…"). Maak van een gebeurtenis, een pagina of een download een doel bij de instellingen van je website; Track toont dan welk deel van de bezoekers het haalt.
Campagnes
Links met ?utm_source=nieuwsbrief&utm_medium=email&utm_campaign=herfst verschijnen onder ‘Herkomst’. Andere delen van de query worden nooit verstuurd, want daar staan soms persoonsgegevens in.
Het endpoint
De library post batches naar https://track.savage-software.nl/api/v1/collect met de header Authorization: Bearer <token>. Een batch is {"events": [...]} met hoogstens 1000 events; zie het type track.Event. Bezoeken die Track niet kan bereiken, wachten in het geheugen van je server en worden later opnieuw gestuurd.