What push does
- Runs
check. Errors stop the push unless you pass--force. - Diffs the spec with the live store and shows the changes. Blocked changes (App Store fields that need a new version) are listed with the reason.
- Asks for confirmation (skip with
--yes). - Records the current rank of every target in
appeeky.spec.yamlfor each storefront (skip with--no-baseline). - Pushes the changes.
- Writes
appeeky/releases/<id>.yamlwith the before and after values, your--noteand the rank baseline.
--note. It ends up in the release file, in log --markdown and in the playbook.
Where ranks come from
A target the app does not rank for is recorded as unranked.
How verify decides
verify compares each storefront’s ranks with the baseline. A move counts when it is at least 3 places.
lost uses the same rule the Appeeky co-founder uses to propose reverting a metadata change.
Control group
Storefronts whose listing the release did not change are measured over the same days. A push to en-US changes the US store; the German store reads de-DE and did not change, but its ranks still move with the store’s algorithm, the season and competitors. When the changed storefronts gained less than 2 places per target beyond the unchanged ones, awon becomes mixed: the store moved, not the listing. The check records both moves and the net under control. Add targets in a second storefront so there is a control group.
Normal moves
Before comparing conversion, installs or revenue,verify reads the four windows before the push and learns how much each metric moves on its own. A change inside that range is flat, and the output says so: downloads/day 100 → 120 (+20%) (moves ±41% on its own).
When no target moved
When no target moved, or the release has no targets, the outcomes decide: organic installs and their revenue withattribution:, otherwise store conversion, otherwise downloads, otherwise the category rank from appeeky/category.csv. Better is won, worse is lost, and the check records what decided it as decidedBy.
Run it on a schedule. It only measures releases that reached day 7 or day 14 and have not been measured for that day yet:
--now measures every release right away, whatever its age.
Conversion, downloads and revenue
Ranks say whether more people find the app.verify also checks whether more of them install and pay. It compares the same number of days before and after the push (up to 14, leaving out the day of the push) for every source you have:
Each metric is marked
better, worse or flat (within 5%, or within the metric’s normal moves); for cost per install, lower is better. Conversion is left out when a window has fewer than 50 page views. RevenueCat numbers are used only when the RevenueCat project holds just this app.
checks[].metrics and, with --playbook, into the playbook line.
Revert
revert only edits the spec files; nothing goes live until you push. A field that was empty before the release is cleared.
The playbook
verify --playbook adds one line per result to appeeky/playbook.md:

