Marketplace

Pre-built integration templates that set up a complete webhook pipeline in seconds — no manual configuration required.

What is the Marketplace?

The Marketplace is a collection of ready-made templates for the most common webhook integrations. Each template automatically creates:

  • An webhook with the correct signature verification and payload filters pre-configured
  • An additional target with a payload transform tailored to the destination

Without templates, setting this up manually takes ~30 minutes. With a template, it takes under 2 minutes.

How it works

When you use a template, HostWebhook sits between the webhook source (e.g. Stripe) and both your application and the notification destination (e.g. Discord):

Stripe──▶HostWebhook (Ingress URL)──▶
Your app (raw payload)Discord (formatted embed)
  • Ingress URLGoes into Stripe's (or GitHub's) webhook settings — your webhook source POSTs here
  • Your app (Target URL)Receives the original raw payload, just like a normal webhook
  • Discord / Slack (Additional target)Receives a transformed, formatted payload via an additional target with a payload transform

Using a template

1

Open the Marketplace

Go to Dashboard → Marketplace and browse the available templates. Filter by category (Payments, DevOps, etc.) to find what you need.

2

Click "Use template"

A setup modal opens with two fields:

  • Webhook name — pre-filled, you can edit it
  • Your application URL — your server's webhook handler (where the raw payload goes)
  • {Destination} URL — the Discord/Slack webhook URL (where the formatted message goes)

Expand Payload transform preview to see exactly what the destination will receive.

3

Click "Create →"

HostWebhook creates the webhook and the additional target automatically, then redirects you to the webhook detail page. Your ingress URL is ready.

4

Add the Ingress URL to your webhook source

Copy the Ingress URL from the webhook detail page and paste it into your webhook source:

  • Stripe: Dashboard → Developers → Webhooks → Add webhook
  • GitHub: Repo → Settings → Webhooks → Add webhook
5

Configure the signing secret (Stripe / GitHub only)

If the template uses signature verification (Stripe or GitHub), you need to paste the provider's signing secret into HostWebhook so it can verify that incoming webhooks are authentic.

  • Stripe: After adding the webhook in Stripe Dashboard, click "Reveal" next to the Signing secret. Copy the whsec_... value.
  • GitHub: Set a secret in GitHub's webhook settings, then copy it.

In the HostWebhook webhook detail page, click Edit → Webhook Signing Secret and paste the value. Save.

Without the signing secret, HostWebhook cannot verify that events are genuinely from Stripe/GitHub. Any POST to your ingress URL would be accepted.

Available templates

TemplateCategorySignatureFilter
Stripe Payment → DiscordPaymentsStripepayment_intent.succeeded
Stripe Subscription → DiscordPaymentsStripe
GitHub Push → DiscordDevOpsGitHubref contains refs/heads/
GitHub Pull Request → DiscordDevOpsGitHub
GitHub Push → SlackDevOpsGitHub
Templates create a starting point — you can edit everything afterwards. Add more payload filters, adjust the transform, or add more additional targets from the webhook detail page.

Troubleshooting

Additional target wasn't created

If your plan's additional target limit was reached when using a template, the webhook will be created but the additional target won't. You'll see a warning banner on the webhook page. Click + Add target to add it manually, or upgrade your plan.

Events are not being delivered to Discord/Slack

  • Check that the Ingress URL is correctly configured in Stripe/GitHub
  • Check that the signing secret in HostWebhook matches the one in Stripe/GitHub
  • Check the Events list on the webhook — look for filtered events (payload filter mismatch) or failed deliveries
  • Click any failed delivery to see the HTTP response from Discord/Slack
  • Discord returns 400 if the JSON structure is invalid — expand the transform preview to verify it

Payload transform shows wrong values

The transform uses {{payload.path}} interpolation. If a field is missing, it resolves to an empty string. Use the null coalescing operator to provide a fallback: {{payload.customer ?? 'Guest'}}. See the Payload transforms guide for the full syntax.