Reach for webhooks when you need near real-time reactions to events that happen on someone else's system: a checkout completed, a CI build finished, a Slack message posted, a subscription renewed. They are far cheaper and faster than polling, because the provider does no work and your server does no work until something actually happens.
The cost is operational complexity on your side. Your endpoint must be publicly reachable, always up, fast, and secure. You have to verify signatures, deduplicate retries, and decide what to do when a webhook is missed entirely, since delivery is best-effort, not guaranteed. A good safety net is a periodic reconciliation job that pulls the full state from the provider's API to catch anything that slipped through.
Webhooks are also one-way and fire-and-forget from the sender's view. If you need a request and response in the same call, or guaranteed ordering and exactly-once delivery, a proper message queue or a streaming platform like Kafka is the better fit.