The short version
Perch shows public App Store rankings and, if you connect your own API key, your App Store Connect reports. Your credentials are saved in the Keychain and your reports are cached on your device. Reports can sync through your private iCloud database and credentials sync separately through iCloud Keychain. There is no Perch account or Perch server. If you send feedback, Formspree receives your note and attached setup details for delivery to PaperCloud Studios.
What Perch sees
You can start without a key by searching for an app by name or pasting its App Store link. Perch sends the search text and storefront country to Apple. For a recognised link, it extracts the app ID and storefront for a lookup. It then checks public chart feeds without an App Store Connect key.
For connected reports, add your Key ID, Issuer ID, Vendor Number and .p8 private key. Your Mac or iPhone signs API requests on the device and sends them directly to Apple.
Connected data includes installs, proceeds, refunds, in-app purchases, subscriptions, app details, app status, acquisition reports and reviews. When you reply to a review, Perch sends your reply text and the review ID to Apple. Perch stores reports, app records, rankings and reviews in an on-device SwiftData database. The app does not send these reports to PaperCloud Studios or an advertising or usage analytics service. Feedback and sharing are separate actions described below. The services used by the app and the information sent to them are described below.
Where your credentials live
Perch saves your API credentials in the system Keychain on Mac and iPhone, encrypted at rest. The saved credentials have a local copy and a copy marked for iCloud Keychain sync. The Vendor Number is also stored in local preferences. On Mac, unfinished Key ID, Issuer ID and Vendor Number fields are kept in preferences until saved or reset. The draft private key is kept in the Keychain.
With iCloud Keychain available, your credentials can follow you to devices using the same Apple Account. Apple protects iCloud Keychain sync with end-to-end encryption. The private key signs requests locally. It is not included in App Store Connect API requests. Its synced Keychain copy travels through Apple, not a Perch server.
Across your devices
Public rankings work on Mac and iPhone without a key. Either device can fetch connected data using your saved key. The iPhone can also read reports already synced from your Mac.
When iCloud is available, the database mirrors to your own private CloudKit database for syncing between your devices. Apple encrypts iCloud data in transit and at rest.
iCloud key-value storage separately syncs the watched-app ID list, home currency and cached exchange rates. It also holds rank-alert records with app and chart identifiers, event times and a random device identifier to help avoid duplicate alerts.
Widgets read a summary file shared with the app on the same device. It can contain app names, installs, proceeds, ratings and rankings.
Third parties Perch talks to
- Apple's App Store Connect API (
api.appstoreconnect.apple.com) receives signed requests from your Mac or iPhone. These include an authentication token containing your Key ID and Issuer ID, the identifiers and filters needed for the requested data and your Vendor Number for sales reports. Review replies include the review ID and your reply text. - Apple's public search, lookup and chart feeds (
itunes.apple.com) receive search text or an app ID, a storefront country and search options. Icon and rating lookups may use a bundle ID instead. Chart requests identify the country, chart type, optional genre and result limit. Perch matches your app against the downloaded chart on your device. - Apple's storefront pages (
apps.apple.com) receive an app ID and country in public-page requests for rating counts. App icons are downloaded from image URLs supplied by Apple, including itsmzstatic.comimage service. Acquisition report files are downloaded from URLs returned by Apple's API. Those file requests use the supplied URL without adding your API token. - Exchange-rate services receive requests for a public rate table. Perch uses
open.er-api.com/v6/latest/USD, withapi.frankfurter.app/latestas a fallback. The request does not include your chosen currency, app data or credentials. Currency conversion happens on your device. - jsDelivr (
cdn.jsdelivr.net) supplies the globe drawing library. Perch requests the library code without appending your credentials or reports. Country markers are passed to the library inside the on-device web view. - Formspree (
formspree.io/f/xkoypboy) receives in-app feedback when you tap send. Perch sends the name and message you enter, plus automatically attached setup details. These are the app version and build, operating system version, device model, region, locale, home currency, app counts split by platform and live status and whether stored subscriptions or reviews exist. There is no separate attachment switch. The form sends a fixed sender address, a subject and an empty spam-check field. It does not ask for your email address. The website contact form instead sends your name, email address and message.
Apple's iCloud and StoreKit services handle the sync described above and Perch Pro purchases or restores. StoreKit requests the Pro product and supplies transaction and entitlement information. Perch does not ask for your payment card details.
If you choose a social sharing shortcut, Perch opens X, Threads, Reddit, Facebook or Instagram. Text shortcuts can pass the prepared caption in the destination URL. Images can be copied or passed to the sharing destination you choose. Links to App Store Connect, the App Store, Apple's developer guides and the Perch website open those services when you select them. As with any web request, contacted services receive your IP address and normal connection information.
What we don't collect
- Perch has no usage analytics, advertising SDK or third-party crash reporter. Apple's acquisition reports describe your App Store apps, not how you use Perch.
- Perch does not send app-open or app-close telemetry to PaperCloud Studios. Normal data refreshes can run when the app opens.
- Perch uses local system logging. Its feedback forms attach the setup details listed above, not log files. System diagnostics shared through your Apple settings are controlled by Apple.
- Notifications are created locally on your Mac or iPhone. Perch does not use a push notification server for these alerts.
Your control
On iPhone, Sign out clears the in-memory credentials and requests deletion of the local and synced Keychain items. Cached reports stay. Other devices can retain local credential copies and upload them to iCloud Keychain again. Sign out or reset there too.
On Mac, Reset clears credential drafts, requests Keychain deletion and deletes the stored database records. On iPhone, Delete everywhere deletes database records but leaves the key in place. Database deletions are saved to the store that mirrors to your private iCloud database. They can sync to your other devices when iCloud sync succeeds.
These actions do not clear all local preferences, the watched-app ID list, iCloud key-value entries or the widget summary file. They do not clear pending or delivered notifications. They do not delete your downloaded .p8 file, original App Store Connect data or feedback already sent. Keychain or database deletion can fail, so these controls are not a guarantee that every copy is erased. A later connected sync can fetch reports from Apple again.
To stop a key from authorising new connected requests, revoke it in App Store Connect. Revoking a key does not erase cached reports or stop public rankings for watched apps.
Children
Perch is built for App Store developers. It is not directed at anyone under 13 and we do not knowingly collect any data from children.
Contact
Questions, concerns or curiosities about privacy? Send us a note. We read every message.
Changes
If we update how Perch handles data, we'll update this page and date the change at the top.