Orders, returns and sellers, counted as they happen.
Know how often each customer orders, how much they send back and whether a new seller is selling far beyond its history: at checkout, before a refund, before a payout. Aggrelis keeps the running totals; your shop decides what to do with them.
watching
watching
watching
The questions this answers
Typical questions, each with the window it usually looks at. Thresholds are starting points you set yourself.
- Orders this week
How many orders did this customer place since Monday, counted in their own time zone?
calendar week, customer's time zone - Serial returners
What share of this customer's orders came back, and what was it worth?
rolling 90 days - Abandoned carts
Which carts were left alone for an hour without a checkout?
1 hour without a cart update - New seller spike
Is this seller, weeks after joining, selling far more in a day than on its usual day?
last 24 hours vs 30-day daily mean - One coupon per person
Has this device or card already redeemed the welcome coupon on another account?
lifetime, per device and per card - Sales per category
How much did all the sellers in this category sell today, added up?
calendar day, seller → category
Hold a new seller's payout when its sales jump
A seller that joined two weeks ago suddenly sells many times its usual day. Before each payout run, your marketplace asks Aggrelis about the seller and holds the payout for a person to look at when a condition holds. The thresholds are starting values you set and adjust.
- Send every order and refund with the seller's id and the amount
- Define the seller's sales over 24 hours and 30 days, its refunds, and conditions for a spike and a new seller
- Ask about each seller before the payout run
- Act on the conditions: hold those payouts for review, release the rest
{
"id": "ord_88213",
"type": "order_placed",
"ts": "2026-10-22T10:22:55Z",
"attrs": {
"customer_id": "c_1001",
"seller_id": "s_2045",
"amount": "249.90",
"currency": "EUR"
}
}{
"name": "seller_payouts",
"description": "A seller's sales against its own history",
"spec": {
"entity": "seller",
"features": {
"sales24h": {"state": "sales_by_seller",
"window": {"rolling": "24h"}},
"sales7d": {"state": "sales_by_seller",
"window": {"rolling": "7d"}},
"sales30d": {"state": "sales_by_seller",
"window": {"rolling": "30d"}},
"refunds7d": {"state": "refunds_by_seller",
"window": {"rolling": "7d"}}
},
"derived": [
{"name": "usualDay", "expr": "sales30d / 30.0"},
{"name": "refundRate7d",
"expr": "sales7d > 0.0 ? refunds7d / sales7d : 0.0"},
{"name": "sellerAgeDays",
"expr": "days_between(entity.onboardedAt, now)"}
],
"reasons": [
{"name": "sales_spike",
"when": "sales24h >= 2000.0 && sales24h > 5.0 * usualDay"},
{"name": "refund_spike",
"when": "sales7d >= 500.0 && refundRate7d >= 0.2"},
{"name": "new_seller",
"when": "sellerAgeDays < 30 && sales24h >= 1000.0"}
]
}
}{
"entity": {"type": "seller", "id": "s_2045"},
"values": {
"sales24h": "3120.00",
"sales7d": "4410.00",
"sales30d": "5790.00",
"refunds7d": "180.00",
"usualDay": 193,
"refundRate7d": 0.041,
"sellerAgeDays": 14
},
"reasons": ["sales_spike", "new_seller"],
"degraded": [],
"skipped": [],
"profileVersion": "seller_payouts@v2",
"evaluatedAt": "2026-10-22T10:30:00.412093551Z"
}The parts of Aggrelis behind it
Nothing built for one industry: the same building blocks, configured for this job.
- Each customer's own week
Calendar weeks and months start at each customer's local midnight; rolling windows move with the clock.
- Exact money
Order, return and refund amounts kept to the cent, one currency per total.
- Seller roll-ups
One sale counts for the seller and for its category at once.
- Triggers and webhooks
Check an order as it arrives, or be told when a cart has sat untouched for an hour.
- Decisions
Release, review or hold a payout, with your rules first and a safe answer always.
- Change without a release
The team that owns payouts or loyalty adjusts thresholds in the workspace and tests them on recent orders.
Your first live numbers, configured not coded
Tell us what you would count first, and we'll help you set it up.