Key characteristics
- A customer cannot lose an Achievement Level: unlike Tiers, achievement progress only goes forward
- Customers can hold multiple Achievements simultaneously
- Achievements are attached to a profile for the lifetime of their relationship with the brand
- Achievements can operate independently or in conjunction with the broader incentive suite
Structure: counts and levels
An Achievement is made up of: Counts: increments that go up by 1 each time a qualifying event occurs. Counts are tracked automatically via Omneo events or via the Achievements API. Levels: thresholds defined within an Achievement. When a Count crosses a Level threshold, the customer “levels up.” Levelling up can trigger other incentives (Rewards, Benefits).Level strategies
Brands can structure achievements in different ways:Achievement visibility
Achievements can be configured with different visibility modes:Campaign dates and what actually gates earning
An achievement definition carriesstarts_at and ends_at. They are commonly read as the campaign’s operating window. They are not — they are a presentation window, deciding when the achievement is offered to customers alongside is_published.
Earning is decided somewhere else entirely:
Nothing binds the first row to the second. A reaction with no date condition increments on every qualifying event from the moment it is activated, whatever the definition’s dates say, and a level crossed that way issues its rewards or benefits for real.
Why batched transactions make this worse
The dangerous case is not a customer shopping a few minutes early. It is trade that arrives late. A POS batch can land hours or days after the sales it contains, and an eCommerce resync can replay months of history in one pass. The reaction fires on arrival, so a campaign activated today can immediately award progress — and issue rewards — for trade that happened before it started. Two consequences worth designing for:- Gate on the transaction’s
transacted_at, never on when Omneo ingested it. - Apply the same gate to every reaction for the campaign. Earn reactions are usually paired with a
transaction.syncortransaction.resenttwin; a gate on only one of them leaves the other free to backfill.
Achievements vs tiers
When to use achievements
Achievements are most effective when:- You want to reward engagement beyond spending (profile completion, referrals, event attendance)
- Your tier program is getting overly complex: Achievements can handle non-financial milestones separately
- You want to create a sense of discovery and progress for customers