Webhooks: connecting your paid channel to your own tools
Once you have a lot of subscribers, the data needs to live elsewhere too: a spreadsheet, a CRM, the team chat. A webhook is how you send it there automatically.
With twenty subscribers you keep everything in your head. With two thousand, questions appear that an admin panel shouldn't have to answer: how do I push a new payer into my CRM, how do I build my own report in a spreadsheet, how does the team hear about every cancellation in the work chat?
That's what webhooks are for. Here's the explanation without the jargon.
What a webhook is
Imagine telling the platform: "when something happens to me, notify this address immediately." That's exactly what a webhook does. The moment an event occurs — a new payment, a cancellation, an expiry — the system sends a short message to an internet address you supply.
The difference from a manual export is fundamental: you don't have to ask for anything or check anything. The data arrives by itself, at the moment of the event.
The simplest analogy is a phone notification, except the recipient is another program rather than a person.
What people actually do with them
Build their own reports. Every payment lands as a row in your spreadsheet. From there, calculate whatever you like: plan-by-plan dynamics, seasonality, campaign performance — the way you want it rather than the way the admin panel anticipated.
Feed a CRM. A new payer appears in your customer base automatically, with their plan and date. Especially valuable if you also sell offline services or consultations and want to see one person as a whole.
Alert the team. Every cancellation drops into the work chat, so whoever owns retention reacts today instead of finding out at month end.
Trigger automations. Through connector services an event becomes any action you like: a welcome email with a bonus, a task in your tracker, a tag in your mailing list.
Sync with something of your own. If you have your own site or app, a webhook is the simplest way to keep access rights current.
Which events are actually worth catching
Don't try to handle everything. The practical value sits in the subscription lifecycle:
- payment succeeded — the main event; every automation starts here;
- subscription activated — the person got access;
- subscription cancelled — the retention signal, the most valuable event after payment;
- subscription expired — the cue for a win-back;
- refund — matters for bookkeeping.
Start with two: payment and cancellation. That covers 80% of the practical value.
What to know up front
The signature. Each message carries a cryptographic signature made with your secret key. It exists so your service can verify the message really came from the platform rather than from a stranger who guessed the address. Always verify it — otherwise anyone can send you fake "payments".
Delivery isn't absolutely guaranteed. If your server is down, delivery is retried a few times but not forever. So a webhook is an excellent automation tool and a poor single source of truth for accounting. The authoritative records always stay in the system.
Duplicates happen. Your handler must be ready to receive the same event twice without creating a second customer. Technically that's solved by checking the event identifier.
The address must be public and secured. Local and internal addresses are rejected — that's a protection against abuse.
Who needs this and who doesn't
Webhooks are a tool of scale. With a hundred subscribers and one spreadsheet you'll spend more time configuring than you save.
They start paying off when you have a team that needs alerts, an external system where the customer must exist, or an appetite for analytics the standard panel doesn't provide.
The technical part
In RybkaOS the outgoing webhook is configured in the dashboard: you enter your service's address and receive a secret key for verifying signatures. Subscription-lifecycle events — payments, activations, cancellations, expiries, refunds — are dispatched automatically, signed with HMAC-SHA256. Delivery makes several retry attempts, and recent deliveries are visible in the dashboard alongside a test-call button, so you can verify the integration immediately without waiting for a real payment.
If you're still copying payments into a spreadsheet by hand, this is where that work ends.