Review Clock

How to log your review times automatically

App Store Connect can send a webhook every time your app’s status changes. Point it at Review Clock and your review times get logged on their own. You never hand over an API key.

1. Get your webhook URL and secret

Go to the Connect your app page. Pick your platform and whether it’s a new app or an update. Then copy the URL and secret. Bookmark your private history link too, since that’s where your own reviews show up.

2. Add the webhook in App Store Connect

In App Store Connect, open Users and Access → Integrations → Webhooks and add one for your app. Paste in the URL and secret. Then turn on the App Store version state event (APP_STORE_VERSION_APP_VERSION_STATE_UPDATED). Rather use the API? POST /v1/webhooks takes the same fields:

{ "data": { "type": "webhooks", "attributes": {
    "enabled": true, "name": "Review Clock",
    "eventTypes": ["APP_STORE_VERSION_APP_VERSION_STATE_UPDATED"],
    "secret": "YOUR_SECRET", "url": "YOUR_WEBHOOK_URL" },
  "relationships": { "app": { "data": { "type": "apps", "id": "YOUR_APP_ID" } } } } }

3. Send a test ping

Hit Send test in App Store Connect (or use POST /v1/webhookPings). If the signature checks out, Review Clock sends back a 200.

4. Submit like you normally would

Your version goes to WAITING_FOR_REVIEW, then IN_REVIEW, then gets a decision like PENDING_DEVELOPER_RELEASE or REJECTED. Review Clock saves each step with Apple’s timestamp. Then it figures out how long you waited and adds that to the front page. Your name isn’t attached.

How the signature works

Apple signs each request with your secret using HMAC-SHA256 and sends it as x-apple-signature: hmacsha256=<hex>. Review Clock does the same math and checks they match. If they don’t, the request gets thrown out. Details are in Apple’s webhook documentation.

What’s stored

Just the event ID, the version ID, the old and new status, and the time. Nothing else. I never see your app’s name unless you type it in as the nickname.