Agent skill

WeTravel Webhooks Skill

Receive and verify WeTravel webhooks (group travel booking and payments). Use when setting up a WeTravel webhook handler, debugging svix-id / svix-timestamp / svix-signature signature verification, or handling events like booking.created, booking.updated, payment.created, payment.updated, transaction.created, trip.published, lead.created or lead.updated. WeTravel manages webhooks in a Svix App Portal, so deliveries are Svix-signed (HMAC-SHA256, whsec_ secret) — WeTravel itself publishes no verification docs.

Install this skill

npx skills add hookdeck/webhook-skills --skill wetravel-webhooks


WeTravel is a group travel booking and payments platform. Its webhooks tell your system when bookings, payments, transactions, trips and leads change, so you can sync a CRM, accounting system or ops tooling.

When to Use This Skill

  • How do I receive WeTravel webhooks?
  • How do I verify a WeTravel webhook signature?
  • Why is my WeTravel svix-signature verification failing?
  • How do I handle booking.created, payment.created or transaction.created?
  • Why can't I see the "Webhooks" section in my WeTravel profile?

Verification (core)

Caveat: WeTravel publishes no signature verification docs. Its webhook endpoints are managed in an embedded Svix App Portal ("Manage Webhooks", which shows a masked Signing Secret), so deliveries are inferred to use standard Svix signing. Accept both svix-* and Standard Webhooks webhook-* header names, and confirm with a test event from the portal before going live.

  • Headers: svix-id, svix-timestamp (Unix seconds), svix-signature (space-separated v1,<base64> entries)
  • Signed content: {svix-id}.{svix-timestamp}.{raw body}
  • Algorithm: HMAC-SHA256, base64 digest, key = base64-decoded secret after whsec_

Use the official svix library (Node and Python). It handles the key decoding, multiple signatures, a 5-minute timestamp window and constant-time comparison:

import { Webhook } from 'svix'; // svix 2.x: ESM-only, Node 22+

const h = (n) => req.headers[`svix-${n}`] ?? req.headers[`webhook-${n}`];
new Webhook(process.env.WETRAVEL_WEBHOOK_SECRET).verify(rawBody, {
  'svix-id': h('id'),
  'svix-timestamp': h('timestamp'),
  'svix-signature': h('signature'),
}); // throws WebhookVerificationError -> respond 400
const event = JSON.parse(rawBody.toString('utf8')); // { type, data }
from svix.webhooks import Webhook  # raises WebhookVerificationError
Webhook(os.environ["WETRAVEL_WEBHOOK_SECRET"]).verify(raw_body, {
    "svix-id": msg_id, "svix-timestamp": timestamp, "svix-signature": signature,
})

For complete handlers with tests, see examples/express/, examples/nextjs/, examples/fastapi/.

A manual (no-SDK) implementation is in references/verification.md.

Event Types

These are all the event types on WeTravel's webhooks page. Payload schemas and samples for each are in Manage Webhooks → Event Catalog.

EventFired when
booking.createdA new booking is made (trip page, widget, or "Add Participant")
booking.updatedA booking changes: date change, refund, cancellation, new payment, failed/disputed payment, package switch, eSignature, and more
payment.createdA new payment is initiated
payment.updatedPayment status changes (pending → successful/failed, successful → refunded/disputed) or moves to a new trip on rebooking
transaction.createdMoney moves: payment received, refund, dispute, payout, card/wire transfer, vendor payment, top-up, balance adjustment
transaction.updatedA transaction moves to a new trip on rebooking
trip.publishedA trip is published (trip builder or Trip Builder API)
lead.createdA brochure is downloaded or a question is asked on a trip/profile page
lead.updatedThe same lead downloads another brochure or asks another question

Environment Variables

WETRAVEL_WEBHOOK_SECRET=whsec_xxxxx   # Manage Webhooks → your endpoint → Signing Secret

Local Development

npx hookdeck-cli listen 3000 wetravel --path /webhooks/wetravel

No account required. Paste the printed URL into Manage Webhooks → + Add Endpoint.

Reference Materials


Repository

hookdeck/webhook-skills

v0.1.0 · MIT · Updated Oct 28, 2026

View on GitHub →