Self-Healing Connections

How Yeethook monitors webhook health on both the Apple and Slack side, detects problems, and offers one-click fixes before you silently lose events.

Cover Image for Self-Healing Connections

The worst kind of outage is the silent one. The webhook gets deleted. Events stop flowing. Nobody notices because nobody expected a notification at that exact moment. Three days later, someone checks App Store Connect and finds a pile of unread crash reports. "Wait, when did our Slack notifications stop working?"

Yeethook watches for this so you don't have to.

Monitoring both sides

Webhook delivery has two ends: Apple's side and Slack's side. A problem on either end means your team stops getting notifications. Yeethook monitors both.

Apple webhook health

For apps using Quick Start, Yeethook tracks the App Store Connect webhook it created. It compares what Apple has with what Yeethook expects, and surfaces one of five statuses:

Healthy. The webhook exists, is enabled, and the URL matches. Everything is working as expected.

Deleted. Apple no longer has a webhook with this ID. This happens if someone removes it from App Store Connect manually, maybe during a cleanup, maybe by accident.

Disabled. The webhook exists but is turned off. Apple may disable a webhook after repeated delivery failures. If your endpoint had downtime, Apple might have pulled the plug.

URL mismatch. The webhook exists and is enabled, but the URL doesn't point where Yeethook expects. Someone edited it in App Store Connect, or it drifted during a configuration change.

Unknown. Yeethook couldn't reach the App Store Connect API to check. Usually temporary. Your p8 key might have been revoked, or Apple's API is having a moment.

ASN V2 health

If your app has App Store Server Notification event types configured (subscriptions, refunds, offers), Yeethook also checks the Server Notifications V2 URL separately. This is a per-app URL that Apple uses for in-app purchase events.

The statuses are similar: healthy, URL mismatch, URL cleared (the field is empty), not configured (no ASN event types selected), or unknown.

Slack channel health

Yeethook validates Slack channels when you connect them. If a channel becomes permanently invalid (the webhook URL is revoked, the channel is deleted, the Slack app is uninstalled), Yeethook auto-deactivates the connection.

This prevents a pile of failed deliveries from stacking up. It also means that if a channel goes bad, it doesn't take down your other channels. Events still flow to every healthy connection.

One-click repair

When a health check surfaces a problem, Yeethook tells you what happened and offers the right fix. The available repair action depends on the issue:

Recreate. For deleted webhooks. Yeethook creates a new webhook in App Store Connect with the same configuration (URL, secret, event types) and updates the stored webhook ID. Your events start flowing again.

Re-enable. For disabled webhooks. Yeethook sends an update to Apple to turn the webhook back on.

Fix URL. For URL mismatches on the App Store Connect webhook. Yeethook updates the URL to match the expected endpoint.

Fix ASN V2 URL. For URL mismatches or cleared URLs on the Server Notifications endpoint. Yeethook reconfigures the URL in App Store Connect.

All of these require a valid p8 key, since Yeethook needs to authenticate with the App Store Connect API to make changes. One click, problem solved.

What about Manual Setup?

If you're using Manual Setup (no p8 key), health monitoring is not available. Yeethook can't check Apple's side without API access. You manage those webhooks directly in App Store Connect, and it's on you to notice if something breaks.

This is one of the tradeoffs of Manual Setup. You keep your API key in-house, but you lose the safety net of automated health monitoring.

The promise

Webhooks are fire-and-forget on Apple's end. Apple sends the event and moves on. If your endpoint is down, if the webhook was deleted, if the URL is wrong, Apple doesn't come back and tap you on the shoulder. The events just disappear.

Yeethook's health monitoring closes that gap. Your team never silently loses events. If something breaks, you see it in the dashboard and fix it before anyone misses a notification.

The connections heal themselves. You just have to click the button.