How it worksOne engine keeps running totals for everything your product tracks, and answers the moment something changes.
EventTotalAnswerDecision
AggregationsCount anything, per anything, over any windowReal timeAnswers in your app, pushed to your systemsDecisionsYour rules first, AI for the restWorkspaceBuild, test and change without codeSecurityIsolated, private, on record
Acme
Globex
Initech
Usage & limitsKeep usage live for every account and act before a customer hits a wall.
How much of their plan has each account used this month?
→ Warn the owner at 80 %
Customer insightEngagement, churn signalsTrust & safetyAbuse, fraud, account securitySaaSUsage and engagementBanking & fintechLimits, risk, KYCE-commerceOrders and returnsIoT & industryReadings and silenceGamingFair, safe playMobilityFleets and driversAll use cases
QuickstartTwo calls in your hot path: send events, ask questions.
POST /v1/events
POST …/profiles/usage_check:evaluate
→ { "reasons": ["near_limit"] }
DocsConcepts and guidesAPI referenceEvery endpointTechnical overviewArchitecture and limitsAuthenticationKeys, OAuth, workload identitySelf-hostingHelm and Docker Compose
SecurityA database per customer, scrambled identifiers, everything on record.
Acme
Globex
Initech
DeploymentShared, dedicated, your cloudPlatformsLive numbers for your own customersContactTalk to a personChangelogWhat we shipped
Pricing
Product
How it worksFrom events to live numbers to actionAggregationsCount anything, per anything, over any windowReal timeAnswers in your app, pushed to your systemsDecisionsYour rules first, AI for the restWorkspaceBuild, test and change without codeSecurityIsolated, private, on record
Use cases
Usage & limitsQuotas, plans, meteringCustomer insightEngagement, churn signalsTrust & safetyAbuse, fraud, account securitySaaSUsage and engagementBanking & fintechLimits, risk, KYCE-commerceOrders and returnsIoT & industryReadings and silenceGamingFair, safe playMobilityFleets and driversAll use cases
Developers
QuickstartYour first live numberDocsConcepts and guidesAPI referenceEvery endpointTechnical overviewArchitecture and limitsAuthenticationKeys, OAuth, workload identitySelf-hostingHelm and Docker Compose
Company
SecurityHow your data is kept apartDeploymentShared, dedicated, your cloudPlatformsLive numbers for your own customersContactTalk to a personChangelogWhat we shipped
Pricing
Sign inRequest access

Turn every event into a live number you can act on — for any industry, in any region.

Request access

Product

  • How it works
  • Events and answers
  • Decisions
  • Pricing
  • FAQ

Use cases

  • Usage & limits
  • Banking & fintech
  • Operations & IoT
  • Trust & safety
  • All use cases

Developers

  • Docs
  • API reference
  • Quickstart
  • Technical overview

Company

  • Security
  • Deployment
  • Platforms
  • Contact
  • Changelog
© 2026 AggrelisTermsPrivacyCookiesData centers worldwide
Use cases · By industry

Readings that cross a line, devices that go quiet.

Keep a running total for every sensor, machine and gateway, rolled up to its site and region. Aggrelis tells your systems when readings stay over a limit, and when a device stops reporting at all.

Request accessSee the questions
Live questions · illustrative
Has this machine stopped reporting?Health · heartbeats
heartbeatslive
Open a ticket
watching
Did this container go above 8 °C in the last 30 minutes?Cold chain
°C, last 30 min
Alert the driver
watching
How many devices on this firmware reported errors today?Rollouts · firmware
1/ 3 · failing devices · 24 h
Pause the rollout
watching
What you can ask

The questions this answers

Typical questions, each with the window it usually looks at. Thresholds are starting points you set yourself.

  • Over a limit, for a while

    How many readings above 8 °C did this container have, and what was the highest?

    rolling 30 minutes
  • Gone silent

    Which devices have sent no heartbeat for 10 minutes?

    no event for 10 minutes
  • Errors per site

    Which site, and which region, has the most device errors this hour?

    rolling 1 hour, device → site → region
  • Failing firmware

    How many different devices on this firmware version reported errors?

    rolling 24 hours, distinct devices
  • Energy per local day

    How many kilowatt-hours did this meter use today, against its daily cap?

    calendar day, building's time zone
  • Off its own norm

    Is this machine's vibration far outside its own last seven days?

    rolling 7 days, standard deviation
Worked example

Open a ticket when a gateway goes quiet

A gateway in a cold store stops sending heartbeats. Ten minutes later Aggrelis pushes a signed webhook to your on-call tool, with the last heartbeat and the errors across the gateway's site, so on-call can tell one dead device from a site in trouble. Nothing has to poll.

  • Send a heartbeat from each gateway, and each error it reports
  • Define heartbeats per gateway, errors rolled up to the site, and a trigger that fires after 10 minutes of silence
  • Be told: the trigger pushes the answer as a signed webhook
  • Act: open a ticket for one silent gateway, page on-call when its site is failing too
POST /v1/events
{
  "id": "hb_gw17_1029",
  "type": "heartbeat",
  "ts": "2026-10-22T10:12:41Z",
  "attrs": {
    "gateway_id": "gw_17",
    "firmware": "fw-4.2.1"
  }
}
POST /v1/admin/profiles
{
  "name": "gateway_health",
  "description": "Is this gateway alive, and its site healthy?",
  "spec": {
    "entity": "gateway",
    "features": {
      "heartbeats15m": {"state": "heartbeats_by_gateway",
        "window": {"rolling": "15m"}},
      "lastHeartbeatAt": {"state": "heartbeats_by_gateway",
        "window": "lifetime", "select": "last"},
      "siteErrors1h": {"state": "errors_by_gateway",
        "path": "gateway_at", "window": {"rolling": "1h"}}
    },
    "reasons": [
      {"name": "gone_silent",
       "when": "now - lastHeartbeatAt > duration('10m')"},
      {"name": "site_degraded", "when": "siteErrors1h >= 10"}
    ],
    "triggers": [
      {"name": "silent", "on": "heartbeat", "absent": "10m"}
    ]
  }
}
Webhook to your on-call tool · trigger.result
{
  "type": "trigger.result",
  "timestamp": "2026-10-22T10:22:44.208113402Z",
  "data": {
    "trigger": "silent",
    "profile": "gateway_health",
    "timing": "absence",
    "status": "ok",
    "entity": {"type": "gateway", "id": "gw_17"},
    "values": {
      "heartbeats15m": 5,
      "lastHeartbeatAt": "2026-10-22T10:12:41Z",
      "siteErrors1h": 14
    },
    "reasons": ["gone_silent", "site_degraded"],
    "event": {"id": "hb_gw17_1029", "type": "heartbeat",
              "ts": "2026-10-22T10:12:41Z"},
    "profileVersion": "gateway_health@v1"
  }
}
Illustrative. Field names are examples.
What it uses

The parts of Aggrelis behind it

Nothing built for one industry: the same building blocks, configured for this job.

  • Filters and maximums

    Count only the readings over a limit, and keep the highest one per window.

  • Device → site → region

    One error counts for the device, its site and its region at once.

  • Absence triggers

    Fire when a device sends nothing for a time you choose, from one minute to 30 days.

  • Signed webhooks

    Results reach your on-call or ticketing tool, signed to the Standard Webhooks spec, or a stream you read.

  • Local days, exact units

    Energy per calendar day in each building's time zone, kept as exact decimals.

  • Change without a release

    Operations adjust limits in the workspace and test them on recent readings first.

Related

Often used together

  • MobilityFleets and driversHow long has this driver been on the road today?
  • Usage & limitsQuotas, plans, meteringHow much of their plan has each account used this month?
  • SaaSUsage and engagementHow many API calls did each key make this minute?
Early access

Your first live numbers, configured not coded

Tell us what you would count first, and we'll help you set it up.

Request accessSee how it works