Skip to main content

Create and manage webhooks in Kit

What webhooks are, how to set them up in Kit, and how to troubleshoot delivery issues.

Webhooks deliver Kit data to other services automatically.

Let's say you want your membership site to know the moment when a subscriber is tagged with "VIP" in your Kit account so the site can upgrade the subscriber's membership status.

Instead of the site checking Kit for changes to your subscribers' tags every few hours, you can set up a webhook for Kit to push the event to your membership site the moment the tagging happens.

Apps you install via the Kit App Store can also register webhooks to help these apps stay in sync with your account data.

Here's how to create a webhook in Kit and how to manage your account's webhooks.

NOTE: This article covers how to create webhooks from the Webhooks page. Webhooks you created before this feature launched (they show up on your Rules page) continue to work as usual—there's no need to recreate them. Learn the differences between these two webhook types.

What are webhooks?

Webhooks are an automated way for Kit to deliver data (as an HTTP POST message) to another service when certain events happen in your Kit account.

These events include a new subscriber joining your list, a Tag being added to a subscriber, and a Broadcast being sent. View the full, ever-expanding list of events in our developer documentation.

How do webhooks work in Kit?

When an event triggers a webhook, data is sent to the receiving service's endpoint URL. Every delivery is signed so the receiving service can verify it came from Kit.

Most webhook deliveries contain a single event. But for high-volume or bulk-triggered actions—like tagging hundreds of subscribers at once—Kit batches the events together, delivering up to 100 events in one payload rather than sending a separate delivery for each.

Sometimes, the service that Kit is sending data to might be temporarily unavailable. This can happen if the service times out, returns an HTTP 5xx server error, or asks Kit to slow down (an HTTP error 429).

If the service doesn't respond with a 2xx status code, Kit retries up to eight times over about 41 hours. The one exception is HTTP 410, which tells Kit to stop retrying that delivery.

How to create a webhook in Kit

NOTE: Only paid plan users can create webhooks.

To create a webhook in Kit, go to Automate > Webhooks in the navigation. Then, click + New webhook.

The Create a webhook panel will appear for you to configure your webhook:

  • Select event types: Select one or more events that will trigger the webhook when they happen. View the full list of events here.

  • Endpoint URL: The URL to the endpoint, or destination, that will receive event data. The URL must be publicly reachable—localhost and private/internal addresses will be rejected.

    • You can use the same endpoint URL with multiple webhooks. But as a result, the URL may receive data on the same event more than once. We provide an id that receiving services can use to de-duplicate events that have already been processed.

  • Webhook name: Give your webhook a name. The name can be up to 40 characters and will be automatically generated if you don't provide it.

  • Description: Enter an optional description of up to 255 characters about what your webhook is for.

When you're done, click Create webhook to save your webhook. You'll see a list of information about it. Click the cross icon at the top right to close the panel.

You'll also see the webhook listed on the Webhooks page. The webhook will be able to receive event data immediately.

How to manage your webhooks

Viewing your webhooks

The Webhooks page lists all the webhooks created in your Kit account, including their name, endpoint URL, event type(s), status, source, and creation date.

At the top of the page, you'll see three filtering options:

  • "All sources" dropdown: Filter the list by who created the webhook: the creator (i.e., you), an app, or both.

  • "All event types" dropdown: Filter the list by one or more event types.

  • "All, Active, Inactive" toggle: Switch between viewing every webhook, only active ones, or only inactive ones.

You can also click the "Created" table heading to sort your webhooks by creation date.

Click any webhook, and a drawer will slide out for you to view more information about your webhook:

  • Events: The webhook's trigger event(s)

  • Target URL: Your webhook's endpoint URL. Click the copy icon to copy the URL.

  • Signing secret: A private key for the receiving service to verify that the webhook delivery came from Kit. Click Reveal to view the signing secret.

    • If you set up a webhook via API, the signing secret is returned only once, at creation. If you lose it, you can retrieve it from this drawer anytime.

    • If your signing secret is ever leaked or needs to be replaced, you can generate a new one via Kit's API. See our developer documentation for details.

  • Source: Whether the webhook was created by a creator (i.e., you) or an app installed from the Kit App Store.

  • Created: The webhook's creation date

At the bottom of the Webhooks page, you'll see options for viewing the next page of webhooks and changing the number of webhooks listed on each page.

Editing, activating, deactivating, and deleting webhooks

You can edit, set to active/inactive, or delete webhooks that you create yourself. These actions don't apply to webhooks created by apps, which are read-only.

From the Webhooks page, click the webhook you want to change, followed by the three vertical dots at the top right of the drawer that slides out.

You'll see options for editing your webhook, setting it to active or inactive (as relevant), or deleting it.

You can also delete your webhook by clicking Delete webhook at the bottom of the drawer.

What are the webhooks' limitations?

The current webhook limitations are:

  • No delivery log: Kit currently doesn't show a history of webhook deliveries or failures in your account. If you want to confirm a delivery went through, check with the receiving service.

  • No failure notifications: Kit won't email or alert you if your endpoint URL starts failing. Check the receiving service to see if it's still receiving webhook data.

  • No test or ping button: There's currently no way of sending test events to your webhooks. To confirm if your endpoint is working, use webhook.site. The developer documentation briefly covers how to do this.

  • Link click (subscriber.link_clicked) and purchase (subscriber.product_purchased) events aren't available: If you need to trigger webhooks for these events, set up legacy webhooks. Legacy webhooks can be created only via the API.

FAQs

What's the difference between webhooks and legacy webhooks?

Kit has two ways of setting up webhooks: an older version called "legacy webhooks" and the version described in this article. If you use legacy webhooks, they'll keep working, and you don't have to migrate them.

Here are the differences between webhooks and legacy webhooks:

Webhooks (this article)

Legacy webhooks

Where you manage them

Webhooks page or API

Rules page or API (creation available only via API)

Event types per webhook

Multiple, on a single webhook

One

Available events

A wider, ever-expanding set

A smaller, fixed set

If a delivery fails

Retried automatically

Not retried

Security

Deliveries are signed, so you can verify they came from Kit

-

Duplicate events

Can be detected and skipped

-

We recommend using the newer version of webhooks. The exception is if you need link-click or purchase-event triggers, which are currently available only through legacy webhooks.

Will my existing legacy webhooks stop working?

No, legacy webhooks you created in the past (they currently appear on the Rules page) will continue to work. You don't need to migrate them.

Are webhooks the same as the "Send a Webhook" app in Visual Automations?

No, they aren't. Webhooks notify your receiving service whenever your chosen events happen in your Kit account. In contrast, the "Send a Webhook" app fires only when a subscriber reaches a specific Visual Automation step.

What should I do if my endpoint URL isn't receiving events?

If your endpoint URL isn't receiving events, check the following, in this order:

  1. Confirm the webhook's status on the Webhooks page is "Active."

  2. Open the webhook on the Webhooks page and confirm the event type you expect is listed as one of the webhook's trigger events.

  3. Confirm that Kit supports the event type you expect, using our list of supported events.

If you've gone through these steps and still aren't receiving events, contact support for help.

How can I test my webhooks?

Create a temporary endpoint at webhook.site and point a webhook at it. Then, trigger a real event (e.g., add a Tag to a test subscriber), and watch the delivery arrive. The developer documentation covers this process briefly.

Will Kit disable my webhook if the receiving service goes down?

No, Kit will not. If the receiving service is unreachable or returns a server error, Kit will retry each delivery eight times over about 41 hours before dropping it.

However, your webhook will stay active and allow delivery attempts from future events. Kit won't email you about failures, so check your receiving service to see if data is still coming in.

Why is my endpoint URL receiving duplicate event data?

The receiving service should deduplicate on the id of each event in the payload. See our developer documentation on this.

How can I get notified about link clicks or purchases?

Webhooks created via the Webhooks page currently don't support link click and purchase events. Create legacy webhooks via the API to get notified about these events.

Can apps create webhooks in my Kit account?

Yes, apps you install can register webhooks to help these apps stay in sync with your account data. View app-created webhooks from the Webhooks page. These webhooks are read-only, so you won't be able to edit them.

Should I use webhooks instead of Zapier?

If the tool you're connecting to can receive webhooks directly, creating webhooks is a free, real-time Zapier alternative for getting data out of Kit. Zapier is still useful for connecting tools that don't support webhooks and for getting data from other tools into Kit.

Did this answer your question?