---
title: "Update Incoming External Purchase Endpoint"
method: PUT
path: "/webhooks/incoming/external_purchase_endpoints/{id}"
tags: ["Webhooks::Incoming::ExternalPurchaseEndpoint"]
---

# Update Incoming External Purchase Endpoint

`PUT /webhooks/incoming/external_purchase_endpoints/{id}`

## Request

- Base URL: `https://myworkspace.myclickfunnels.com/api/v2`
- URL: `https://myworkspace.myclickfunnels.com/api/v2/webhooks/incoming/external_purchase_endpoints/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://accounts.myclickfunnels.com/oauth/authorize`
    - Token URL: `https://accounts.myclickfunnels.com/oauth/token`
- TypeScript: <https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/docs/webhooks/incoming/external_purchase_endpoints/:id/put.ts> (a function with typed inputs; its response is checked against the schema)

Update the endpoint name or ClickFunnels email-suppression setting. Provider and live/test mode are immutable. For a Whop endpoint this is also where its `ws_` signing secret is set: create the webhook in Whop's dashboard pointing at this endpoint's `url`, then pass the secret Whop showed you. A blank value is ignored, so an unrelated update can never clear a working secret.

## Path parameters

- `id` string, required

## Request body

- object
  - `webhooks_incoming_external_purchases_endpoint` WebhooksIncomingExternalPurchaseEndpointParametersUpdate, required: Mutable endpoint settings. The provider and live/test mode are fixed at creation and are not accepted as update fields.
    - `name` string: Human-readable endpoint name.
    - `suppress_order_system_emails` boolean: Whether ClickFunnels suppresses its order system emails for purchases received by this endpoint.
    - `secret` string: Whop endpoints only: the ws_ signing secret Whop revealed when you created the webhook in your Whop dashboard, pointed at this endpoint's url. Whop does not let a user OAuth token manage webhooks, so registration is manual and this is how the secret is supplied. Ignored when blank or on other providers, and must start with ws_. The secret is never returned by any read.

## Response `200`

OK

- WebhooksIncomingExternalPurchaseEndpointAttributes: A workspace endpoint that receives purchase events from an external commerce provider. The `url` is generated by ClickFunnels; configure that URL as the webhook destination in the provider's own dashboard. Signing secrets are never returned in full by read operations. Not every `provider` is available to every workspace: creating an endpoint for one a workspace has not been granted returns 403.
  - `id` integer: Endpoint ID.
  - `public_id` string: Obfuscated endpoint ID.
  - `workspace_id` integer: Workspace that owns the endpoint.
  - `name` string: Human-readable endpoint name.
  - `provider` 'clickbank' | 'offerlab' | 'copecart' | 'whop': External commerce provider. The provider cannot be changed after creation.
  - `live_mode` boolean: Whether the endpoint receives live rather than test purchases. Set only at creation.
  - `suppress_order_system_emails` boolean: Whether ClickFunnels suppresses its order system emails for purchases received by this endpoint.
  - `url` string, uri: Public URL to configure as the provider's incoming webhook destination.
  - `webhook_secret_last_four` string, nullable: Last four characters of the endpoint's signing secret, or null when it has none. Enough to tell whether a secret is set and whether it matches the one you hold. The full value is returned only in the create response.
  - `provider_metadata` object: Read-only provider-specific state, keyed by provider so the single key both names the provider and types its value. No provider has fields yet, so every endpoint returns an empty object under its provider, for example `{"clickbank": {}}` or `{"whop": {}}`.
  - `created_at` string, date-time: Created at.
  - `updated_at` string, date-time: Updated at.

## Other responses

- `400`: The JSON body is invalid or the required wrapper is missing.
- `401`: Unauthorized
- `403`: The access token does not grant write access to Webhooks.
- `404`: The endpoint does not exist or belongs to an inaccessible workspace.
- `422`: Endpoint validation failed.

## Changes

- **2026-11-03** `511d88b30aea`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/changes/webhooks/incoming/external_purchase_endpoints/:id/put.md)

---

[API](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api.md) - [All operations](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/llms.txt) - [OpenAPI document](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/revisions/511d88b30aea?raw)
