Objectives and milestones
An objective is a line on one of a trackable's totals. When a total reaches it, Bump records a milestone and sends it to your webhooks.
Make one
Open Objectives and choose New objective. It takes an owner or admin of the team.
| Field | Means |
|---|---|
| Trackable | What to watch, like orders. One that no event has used yet works too. |
| Measure | Count or Amount, the trackable's two totals. |
| Threshold | The line. A whole number for a count, an amount in the project's currency for an amount. A total at or above it has reached it. |
| Applies to | Each identifiable: every customer or team that reaches it gets a milestone of their own. Whole project: one milestone, when the project-wide total reaches it. |
| Hold for | Days to wait before a milestone is confirmed, up to 365. Empty or 0 means no hold. |
| Name | Filled in from the rule, like €100 in orders per identifiable, until you type your own. |
Objectives are shared by live and test. Milestones aren't: each environment records its own, so you can try an objective in test first.
Milestones
Each identifiable, or the project for a project-wide objective, reaches an objective once. A milestone is in one of three states:
| Status | Means |
|---|---|
| Pending | Reached, and waiting out the hold. The dashboard shows the date it ends. |
| Confirmed | Final. Webhooks go out now. |
| Void | Below the threshold when the hold ended, or voided by an edit or an archive. |
Without a hold, a milestone is confirmed the moment an event reaches it.
With a hold, the milestone waits that many days from when Bump received the event. Then Bump checks the total again, every five minutes: still at or above the threshold, the milestone is confirmed. Below it, the milestone is void. That stops an order, a reward and then a refund. After a void, the same customer can reach the objective again, with a new milestone and a new hold.
Milestones are permanent
A confirmed milestone stays confirmed, even when the total drops below the threshold later. The dashboard marks it Below threshold now, and no webhook goes out for the drop.
Each milestone keeps a snapshot: the threshold, the total when it was reached, and the event that reached it with its occurred_at. Milestones are kept for good, also after their events expire.
Changing an objective
The name can always change.
The rule, which is everything else, can change until the objective has its first live milestone. Test milestones don't count: they're there to try the rule out. Changing the rule voids the milestones so far and records already reached ones for the new rule.
After the first live milestone the rule is locked, so every milestone matches the rule it was awarded under. The edit form then shows the rule as text, with New objective from this rule: a new objective, filled in with the same rule, to change from there. Archive the old one if it should stop.
Archiving
Archive in the objective's menu stops new milestones in live and test. Confirmed milestones stay. Pending ones either finish their hold or are voided now: you choose when you archive. An archived objective stays readable and can't be unarchived.
Webhooks that send the archived objective still get its pending milestones once their hold ends.
Already reached
When you create an objective or change its rule, some customers may already be past the threshold. Bump records a milestone for each of them in the background, marked Already reached: confirmed straight away, without a hold, the current total as snapshot and no event. They show who got there before, and they never go to webhooks, so nobody gets congratulated for something old.
An already reached milestone in live is a live milestone, so it locks the rule.
Backfilled milestones
Events sent with backfill: true reach milestones like any other, marked Backfilled. They never go to webhooks. A hold counts from the event's occurred_at, not from the import. In live, they lock the rule too.
Test milestones
Test events reach test milestones, which go to test webhooks only. Settings > Danger zone > Reset test data deletes them with their deliveries, and keeps the objectives. Environments has what else it clears.