GALOR / API Docs
Dashboard →

API Documentation

Tracker integration, REST API, webhooks, and SDK reference.
Base URL: https://app.galor.group

1. Installation

Add the tracking snippet to your HTML <head>. The script is 13KB gzipped and loads asynchronously.

<script defer src="https://signal.galor.group/g.js"
  data-website-id="YOUR_WEBSITE_ID"></script>

Optional attributes:

AttributeEffect
data-persistEnable cookie-based visitor tracking (requires consent)
data-consent-bannerShow Galor's built-in GDPR consent banner
data-widgetsEnable on-site widgets (slide-in, exit intent)
Opt-out: visitors can add ?galor=false to any URL to disable tracking for that session.

2. Custom Events

Track specific actions like button clicks or form submissions. Pass an optional metadata object.

// Basic event
__galor.track('signup_button_clicked');

// Event with metadata
__galor.track('plan_selected', {
  plan: 'pro',
  billing: 'annual'
});

3. Revenue Attribution

Track purchases from client-side. Amount in standard units (e.g. 99.00). Server-side webhooks (Stripe/Paddle) are also supported for automatic tracking.

// Record a $99.00 USD transaction
__galor.revenue(99.00, 'USD');

// With order ID
__galor.revenue(149.50, 'EUR', {
  order_id: 'ORD-12345'
});

4. Identity Resolution

Link anonymous sessions to known users in LeadRadar. Email and phone are SHA-256 hashed before storage.

__galor.identify({
  email: 'founder@startup.com',
  name: 'Jane Doe',
  company: 'Startup Inc'
});

6. API Authentication

Generate API keys in Settings → API Keys (Scale plan). Keys are prefixed galor_live_ and scoped to a single website.

# Pass your key in the X-API-Key header
curl -H "X-API-Key: galor_live_abc123def456" \
  https://app.galor.group/api/v1/stats?period=7d
Security: Keys are hashed (SHA-256) before storage. The raw key is shown only once at creation. If you lose it, revoke and create a new one.
GET

/api/v1/stats

Aggregate traffic stats for your website.

ParameterTypeDefaultDescription
periodstring7d7d, 30d, or 90d

Response:

{
  "period": "7d",
  "visitors": 1420,
  "pageviews": 3840,
  "events": 5200,
  "sessions": 1650,
  "bounce_rate": 42
}
GET

/api/v1/events

Custom event breakdown — name, total count, and unique visitors per event.

ParameterTypeDefaultDescription
periodstring7d7d, 30d, or 90d
limitnumber100Max results (up to 1000)

Response:

{
  "period": "30d",
  "events": [
    {
      "name": "signup_button_clicked",
      "count": 342,
      "unique_visitors": 280
    },
    {
      "name": "plan_selected",
      "count": 156,
      "unique_visitors": 148
    }
  ]
}
GET

/api/v1/visitors

Daily visitor/pageview timeseries, top countries, and top pages.

ParameterTypeDefaultDescription
periodstring7d7d, 30d, or 90d

Response:

{
  "period": "7d",
  "daily": [
    { "date": "2026-03-07", "visitors": 203, "pageviews": 510 },
    { "date": "2026-03-08", "visitors": 189, "pageviews": 480 }
  ],
  "top_countries": [
    { "country": "DE", "visitors": 340 },
    { "country": "US", "visitors": 280 }
  ],
  "top_pages": [
    { "page": "/blog/post", "views": 820, "visitors": 610 },
    { "page": "/pricing", "views": 450, "visitors": 380 }
  ]
}
GET

/api/export

Export analytics data as CSV. Requires dashboard session auth (not API key).

ParameterRequiredDescription
websiteIdYesWebsite UUID
typeYespages, referrers, countries, events, sessions, leads, bots
periodNo7d (default), 30d, 90d
CSV files include UTF-8 BOM for Excel compatibility.
GET

/api/status

Public health check endpoint. No authentication required. Returns database connectivity status.

// 200 OK
{
  "status": "ok",
  "timestamp": "2026-03-14T14:20:36.602Z",
  "checks": {
    "postgres": { "status": "ok", "latencyMs": 2 },
    "clickhouse": { "status": "ok", "latencyMs": 4 }
  }
}

// 503 — one or more databases degraded
{
  "status": "degraded",
  ...
}

12. Error Responses

All errors return JSON with an error field.

StatusMeaningExample
400Bad request{"error": "Invalid period"}
401Invalid or missing API key{"error": "Unauthorized"}
403Insufficient plan tier{"error": "Scale plan required"}
429Rate limited{"error": "Too many requests"}
500Server error{"error": "Internal error"}

13. Rate Limits

EndpointLimitWindow
API v1 endpointsPer-key (default: 100)1 minute
Event ingestion100 events per IP1 minute
Dashboard endpoints60–120 requests1 minute
Share password auth10 attempts1 minute
Monthly event limits per plan: Freelancer 100k, Growth 1M, Scale 5M. Events over the limit receive 429.

EST. 2025 // GALOR.GROUP