C

GotASale for Custom Webhook

Send your own webhook, or map fields from a no-code tool — from your GotASale dashboard.

Go to Dashboard

How it Works

  1. Log in to your GotASale dashboard
  2. Click + Add Store
  3. Choose a card: pick Custom Webhook if you can send JSON in GotASale's exact shape (see below), or Custom mapping if you're using Zapier, Make, n8n, or another tool that sends its own JSON shape
  4. Click Set up Custom Webhook (or Set up Custom mapping)
  5. GotASale shows you a webhook URL. It looks like https://api.gotasale.io/custom-webhook/YOUR_TOKEN — this is where you'll send your requests
  6. If you chose Custom mapping, paste your field-mapping JSON into the Mapping field (see the example below)
  7. Optional: paste a signing secret into GotASale if you want to verify requests with an HMAC signature (see below)
  8. Click Connect to finish
  9. Point your app, script, or automation tool at the webhook URL and send a test request

Connect Your First Destination

Telegram

  1. Copy your Site Token from your GotASale dashboard under Linked Stores
  2. Open @gotasale_bot on Telegram: Open Bot → then send /start YOUR_TOKEN
  3. Return to your store settings and approve the pending link request
  4. Done — new orders will now be sent to your Telegram chat

Discord

  1. Add the bot to your Discord server: Invite Bot →
  2. In the channel where you want notifications, type /link YOUR_TOKEN
  3. Return to your store settings and approve the pending link request
  4. Done — new orders will now be sent to that Discord channel

Slack

  1. Install the gotasale app to your workspace: Add to Slack →
  2. In the channel where you want notifications, type /gotasale link YOUR_TOKEN
  3. Return to your store settings and approve the pending link request
  4. Done — new orders will now be sent to that Slack channel

Microsoft Teams

  1. Add the GotASale bot to your Teams channel
  2. In the channel, @mention the bot and type link YOUR_TOKEN
  3. Return to your store settings and approve the pending link request
  4. Done — new orders will now appear as Adaptive Cards in that channel

Google Chat

  1. Search for "GotASale" in Google Chat apps and add it to your space
  2. In the space, type /link YOUR_TOKEN
  3. Return to your store settings and approve the pending link request
  4. Done — new orders will now appear as rich cards in that space

What's Included

  • Works with anything — Your own backend, a script, or automation tools like Zapier, Make, and n8n
  • Instant notifications — Get notified the moment your webhook fires
  • All notification platforms — Telegram, Discord, Slack, Teams, Google Chat, webhooks, and push notifications
  • Mobile app — Check activity and get push notifications from your phone. Learn more

Need more power? View our plans for multi-destination routing, webhooks, payload customisation, and more.

Option A: Custom Webhook (send our JSON shape)

Send a POST request to your webhook URL with a JSON body in this shape:

{
  "event": "new_order",
  "order": { "total": "49.00", "currency": "USD" },
  "customer": { "name": "Jane Doe", "email": "[email protected]" }
}

Required fields: order.total, order.currency, and one of customer.name or customer.email. Everything else — items, address, pricing breakdown — is optional.

Event types: new_order, status_changed, low_stock, refund_created, payment_failed, or order_cancelled. Leave event out and GotASale assumes new_order.

Option B: Custom mapping (Zapier, Make, n8n)

For webhook sources with a different shape you can't change — point GotASale at where each field lives using dot-notation paths into your JSON body. Paste a mapping like this into the Mapping field after creating the source:

{
  "total": "amount_cents",
  "currency": "currency_code",
  "name": "buyer.full_name",
  "email": "buyer.email",
  "orderId": "id",
  "amountIsCents": true
}

Required mapping keys: total, currency, and at least one of name or email.

Use dot-notation for nested fields and numeric segments for array indices — for example, items.0.title reaches the first item's title. Set amountIsCents to true if your total arrives as an integer in cents rather than a decimal amount.

Optional: Verify Requests with a Signature

Both options support an optional signature check. Paste a signing secret into GotASale, then add an X-GotASale-Source-Signature header to each request containing the hex HMAC-SHA256 hash of your raw request body, generated using that secret. This is how GotASale checks that each message really came from you, not someone else — skip it if your webhook source doesn't support custom headers.

Frequently Asked Questions

What's the difference between Custom Webhook and Custom mapping?

Custom Webhook expects your JSON in GotASale's exact shape. Custom mapping lets you point GotASale at fields anywhere in your own JSON — handy for Zapier, Make, or n8n, where you can't always control the exact shape of the data.

What fields does GotASale need?

A total amount, a currency, and either a customer name or a customer email. Everything else is optional.

Do I have to sign my requests?

No, it's optional for both options. If you paste a signing secret into GotASale, add an X-GotASale-Source-Signature header to each request containing the hex HMAC-SHA256 hash of your request body, generated with that secret — GotASale checks it before accepting the message.

What event types can I send?

new_order, status_changed, low_stock, refund_created, payment_failed, or order_cancelled. If you leave the field out, GotASale assumes new_order. Custom mapping always sends new_order.

Custom Webhook and Custom mapping are GotASale's own generic webhook intake — not a third-party integration. Zapier, Make, and n8n are trademarks of their respective owners; GotASale is not affiliated with, endorsed by, or sponsored by them.