> ## Documentation Index
> Fetch the complete documentation index at: https://funnelfox.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhook settings

> Reference for the Webhooks tab of the FunnelFox Billing dashboard, covering inbound PSP endpoints and outbound webhook targets.

The **Webhooks** tab of your FunnelFox Billing **Settings** page holds two
things: the read-only inbound URLs your <Tooltip tip="Payment Service
Provider">PSPs</Tooltip> post events to, and the outbound targets FunnelFox
Billing sends events to.

## Webhook URLs

Read-only webhook endpoints for this organization. These are the fixed
per-organization endpoints your PSPs post events back to. Copy each URL into
the matching PSP's own dashboard. `{org}` is your organization ID.

| PSP              | Webhook URL                                                                  |
| ---------------- | ---------------------------------------------------------------------------- |
| **Primer**       | `https://billing.funnelfox.com/{org}/v1/primer/webhook?region=default`       |
| **Stripe**       | `https://billing.funnelfox.com/{org}/v1/stripe/webhook?region=default`       |
| **PayPal**       | `https://billing.funnelfox.com/{org}/v1/paypal/webhook?region=default`       |
| **Checkout.com** | `https://billing.funnelfox.com/{org}/v1/checkout_com/webhook?region=default` |
| **Adyen**        | `https://billing.funnelfox.com/{org}/v1/adyen/webhook?region=default`        |

<Info>
  Only the `default` region URL is shown. Additional PSP accounts
  (`ff_first` and beyond) need a URL with the matching `?region=` value.
</Info>

### PSP verification secrets

FunnelFox Billing uses these secrets to verify that inbound webhooks really
come from your PSP. Enter each one from the corresponding PSP dashboard.

| Setting                                    | Description                                                                                                                                        | Value  |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
| `adyen_collection.default.webhook_key`     | HMAC key used to verify inbound Adyen webhook signatures.                                                                                          | Secret |
| `paypal_collection.default.webhook_id`     | PayPal's webhook ID, used to verify inbound PayPal webhook signatures.                                                                             | Secret |
| `primer_collection.default.webhook_secret` | Secret used to verify inbound Primer webhook signatures. Primer also needs its domain and private key on the [Main tab](/docs/billing/settings#primer). | Secret |

## Outbound webhooks

FunnelFox Billing sends each event as JSON to every target that should
receive it, retrying with exponential backoff. You can configure up to seven
targets, labelled **Webhook (1)** through **Webhook (7)** and stored under
slots `first` through `seventh`. A new organization has no targets, so nothing
is sent until you add a URL to a slot.

Each target uses the same fields. The table below shows the first slot
(`sender_task_targets.first.*`); the other slots use the identical keys with
`second` through `seventh` in place of `first`.

| Setting                                                  | Description                                                                                                                                   | Value                      |
| -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
| `sender_task_targets.first.url`                          | Destination endpoint for this target. A target exists only once its URL is set.                                                               | Text (required)            |
| `sender_task_targets.first.enabled`                      | Master on/off switch for the target. When off, nothing is sent to it.                                                                         | Yes/No (default: Yes)      |
| `sender_task_targets.first.signing_secret`               | HMAC secret. When set, each request carries an `ff-webhook-signature` header with the HMAC-SHA256 of the body. Blank sends unsigned requests. | Secret (default: unsigned) |
| `sender_task_targets.first.event_order_declined_enabled` | Also send declined-order events. When off, only successful order events are sent.                                                             | Yes/No (default: No)       |
| `sender_task_targets.first.use_order_success_event`      | Change when the "paid" event fires. Off sends one event once the order settles; on sends one event earlier, on the first paid state.          | Yes/No (default: No)       |
| `sender_task_targets.first.event_dispute_enabled`        | Also send dispute-opened events.                                                                                                              | Yes/No (default: No)       |

<Info>
  Only order and dispute events honor the per-target switches. Refund,
  subscription, one-off, consumable, and user events go to every enabled target.
</Info>

### Retry policy

One retry policy governs the exponential backoff for all outbound webhook
retries.

| Setting                    | Description                                                                                                 | Value                                                                        |
| -------------------------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| `sender_task_retry_policy` | A `[delay_multiplicator, maximum_attempts]` pair. The default `[8, 6]` is about 6 attempts over 10.4 hours. | JSON (default: `[8, 6]`; `delay_multiplicator` 5–11, `maximum_attempts` 1–8) |

For the event types FunnelFox Billing sends and their payloads, go to the
[Billing webhook reference](/docs/develop/webhooks-billing).

## Next steps

* [Configure Main tab settings](/docs/billing/settings)
* [Review the Billing webhook reference](/docs/develop/webhooks-billing)
* [Manage price points](/docs/billing/settings-price-points)
