Usually to use a Convoy, you’d need to create an endpoint, and then create a subscription, then send events. This isn’t the easiest migration path, especially for users who already have a webhook system in-place, and are looking to offload the delivery to a better delivery system.

In this guide, I will show you how to use Convoy as a proxy to deliver webhooks with one API. No need for creating any resources upfront. Let’s dive in!



Have a Convoy instance running

The first step is to ensure you have a Convoy instance running. You can either spin up one or create on from our cloud platform.


Create an outgoing project

This feature is only available to outgoing webhooks project. So you’d need to ensure you’ve created one. You can check here to learn more.


Push event. 🎉

curl --request POST \
--url {base_url}/api/v1/projects/{project_id}/events/dynamic \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data '{
  "url": "{endpoint_url}",
  "secret": "{endpoint_secret}",
  "data": "{data}",
  "event_type": "{event_type}",
  "event_types": ["{event_type}"],
  "idempotency_key": ""


While this endpoint enables you get going super fast, there are a few limitations, you should be aware of, such as:

  • Limited Subscription Configuration: This endpoint, only supports event_type filtering with the event_types array. It doesn’t provide advanced payload filtering. To configure, such filters, check this endpoint.
  • Limited Endpoint Configuration: This doesn’t enable you to set attributes like http_timeout, rate_limit_duration. To see what is fully possible check this endpoint.