Connect Slack, Discord, or Telegram and GoCushy posts a message the moment you make a sale — plus rebills, refunds, failed renewals and cancellations. Pick one channel, paste one thing, done. Telegram has a couple of famous gotchas, so it gets the full treatment below.
Sales notifications are a Pro feature. In your dashboard, open Integrations → Sales notifications → Add a channel, pick your channel from the dropdown, and the right fields appear. The moment you connect, GoCushy sends a test message to that channel — that's your confirmation it worked.
You only need one channel. If you're not sure which, Telegram-to-yourself or a Slack channel are the most popular.
A paid order builds one message — Amount, Product, Buyer, and a "via GoCushy" footer — and each channel renders that same message its own way: Slack as a Block Kit header plus a two-column field section, Discord as an embed with a coloured rail and inline fields, Telegram as bold-labelled HTML lines. Notifications travel one way only: GoCushy calls each service's send API outbound, runs no bot listener, and nothing comes back into your account. The same shape carries five events — New sale, Rebill with its cycle number, Refund, Renewal failed, and Subscription canceled — and the renewal-failed message adds one extra line, "card declined, we'll retry." One channel is enough, and connecting one posts a "GoCushy connected" test message immediately, so you know it works before a real sale depends on it.
Slack
Slack posts through an Incoming Webhook URL — one link tied to one channel. Creating it means making a tiny, private, unpublished Slack "app" for yourself. It sounds heavier than it is — here's the exact click path:
Give it any name (e.g. "GoCushy Sales"), choose the workspace to install it in, and click Create App.
In the left sidebar, under Features, click Incoming Webhooks, then toggle Activate Incoming Webhooks to On.
Scroll to the bottom of that page and click Add New Webhook to Workspace.
Choose the channel the alerts should post to (e.g. #sales), then Allow.
You're returned to the Incoming Webhooks page — copy the Webhook URL that now appears in the list. It starts with https://hooks.slack.com/services/…
In GoCushy: Integrations → Sales notifications → Add a channel → Slack, paste the URL, and Connect & send test. A test message lands in that Slack channel right away.
Create New App greyed out, or asking for approval? Some workspaces restrict who can add apps. Ask a Slack workspace admin to either approve your app or create the webhook and hand you the URL — then paste it into GoCushy. Nothing else changes on your side.
One webhook = one channel. The URL is bound to the channel you picked, and it must be on hooks.slack.com (the only host GoCushy will post to — a safety guard, so anything else is rejected on purpose). To alert a different channel, add another webhook in Slack and reconnect with the new URL.
Discord
Discord also uses a Webhook URL, created per channel.
In your Discord server, open Server Settings → Integrations → Webhooks.
Click New Webhook, choose the channel, optionally rename it, then Copy Webhook URL — it starts with https://discord.com/api/webhooks/…
In GoCushy: Add a channel → Discord, paste the URL, Connect & send test.
The URL must be on discord.com. (If yours says discordapp.com, just swap the host to discord.com — same webhook.)
Telegram
Telegram is "bring your own bot": you make a free bot, then tell GoCushy its token and the chat ID to post to. The two things people trip on are (1) the difference between a chat ID and a username, and (2) sending to yourself vs a channel. We'll be explicit about both.
Step 1 — Create a bot & get its token
In Telegram, open @BotFather and send /newbot. Follow the prompts (name it anything, e.g. "GoCushy").
BotFather replies with a token like 123456789:AAF-xxxxxxxxxxxxxxxxxxxxxxxx. That token is your bot — keep it secret. (Lost it later? Open BotFather → your bot → API Token.)
Step 2 — Decide WHERE the alerts should land
This choice changes what your "chat ID" is:
Destination
Chat ID looks like
The one thing you must do
A private message to you
8934712169 (a positive number)
Open your bot and press Start — a bot can't message you until you do.
A channel or group
-1004452265833 (negative, starts -100)
Add your bot to the channel/group as an admin.
The #1 mistake: setting the bot up in a channel, then pasting your personal ID (a positive number). They don't match. If your alerts go to a channel, the chat ID must be the channel's negative-100… number — not your user ID.
A chat ID is a number, not a @username. Usernames (@yourchannel) only work for public channels; private ones have no username, so you always need the numeric ID.
Step 3 — Get your chat ID
If you want a DM to yourself:
Open a chat with your bot and press Start.
Open @userinfobot (tap the link, then Start). It replies with your user ID — a positive number. That's your chat ID.
If you want a channel or group:
Add your bot to the channel/group and make it an admin.
Post any message there, then open this in a browser (paste your token):
Find "channel_post" → "chat" → "id" — a negative -100… number. That's your chat ID.
Empty result? Open https://api.telegram.org/bot<YOUR_TOKEN>/deleteWebhook once, post in the channel again, then retry. Or simply forward any channel post to @getidsbot and it hands you the -100… ID.
Step 4 — Connect in GoCushy
Add a channel → Telegram.
Paste your bot token and your chat ID (the whole thing, including the minus sign for a channel).
Connect & send test. A "✅ GoCushy connected" message appears in that chat. Every sale posts there from now on.
Troubleshooting — every error, and its fix
What you see
What it means → how to fix
"That bot token was rejected"
The token is wrong or mistyped. Re-copy it from @BotFather → your bot → API Token. No spaces, and include the part after the colon.
"Telegram couldn't find that chat"
The chat ID is wrong, or the bot can't see that chat. For a DM: press Start on the bot and use your positive user ID. For a channel: use the negative -100… ID, not your personal one.
"Your bot isn't allowed to post to that chat"
Same two fixes: press Start on the bot (for a DM), or add the bot as an admin of the channel/group (for a channel).
getUpdates returns {"ok":true,"result":[]}
Usually a leftover webhook. Open …/deleteWebhook once, post a fresh message in the chat, then retry …/getUpdates. Or forward a post to @getidsbot.
Your own bot never replies to /start or @getidsbot
That's normal — a bot you make has no "brain" until an app (GoCushy) drives it. Utility bots like @userinfobot are separate bots: open their own chat, don't message your bot.
"Sales notifications are a Pro feature"
Notifications need the Pro plan. Upgrade in your dashboard, then connect.
Quick self-test (does exactly what GoCushy does): paste this in a browser — https://api.telegram.org/bot<YOUR_TOKEN>/sendMessage?chat_id=<YOUR_CHAT_ID>&text=hi. {"ok":true} means everything's valid; anything else shows the exact reason.
Beyond these: Zapier, Make & anything else
Slack, Discord and Telegram are the built-in one-click channels. To send sale events anywhere else — Zapier, Make (Integromat), n8n, Google Sheets, your CRM, a custom app — use GoCushy's developer webhooks instead: ask your AI to "add a webhook for order.paid" (also order.refunded, order.upsell_taken, subscription.canceled), pointing at a Catch Hook URL from Zapier or a Custom webhook module in Make.
In Zapier, create a Zap with the Webhooks by Zapier → Catch Hook trigger (or in Make, add a Custom webhook). Copy the URL it gives you.
Tell your AI: "Add a gocushy webhook for order.paid pointing at <that URL>."
Make a test sale — Zapier/Make receives the signed payload (buyer, amount, offer, items) and you can fan it out to hundreds of apps.
Every delivery is signed (X-Gocushy-Signature, HMAC-SHA256) and retried with backoff, so it's reliable enough to gate access or drive fulfilment. See the developer docs for the payload and signature details.