Náš návod o webhookoch pre Slack vytvára malý mostík v Node.js — ale kód vôbec nemusíte písať. S n8n alebo Make sa webhook udalosti Collabin stávajú spúšťačmi pre tisíce aplikácií: správy v Slacku a Teams, riadky v Google Sheets, záznamy v kalendári, aktualizácie HR systému. Tento návod vytvára verziu pre n8n od začiatku do konca, vrátane správneho overovania podpisu, a následne sa venuje Make a nápadom na použitie.
60-sekundové zhrnutie webhookov
Collabin odošle požiadavku POST na vami zvolenú URL adresu vždy, keď nastane sledovaná udalosť — leave.created (nová žiadosť) alebo leave.status_changed (schválená/zamietnutá). Telo požiadavky obsahuje názov event, časovú značku, delivery_id a celý objekt dovolenky v poli data (so zabudovanými user a leave_type). Každá požiadavka je podpísaná: hlavička X-Collabin-Signature obsahuje sha256=<HMAC-SHA256 surového tela>, vypočítaný pomocou tajného kľúča vášho webhooku. Webhooky vyžadujú plán Pro; úplné podrobnosti o obsahu nájdete v návode pre Slack.
Vytvorenie v n8n
Krok 1: Spúšťač Webhook
Vytvorte nový workflow a pridajte uzol Webhook:
- HTTP metóda:
POST - Odpoveď: Okamžite — Collabin čaká maximálne 10 sekúnd, preto najprv potvrďte prijatie a prácu vykonajte až potom.
- V nastaveniach uzla zapnite Raw Body. Toto je dôležité: podpis sa počíta z presných bajtov, ktoré Collabin odoslal, a opätovne serializované telo JSON by sa nezhodovalo.
Skopírujte produkčnú URL adresu webhooku, ktorú uzol zobrazuje.
Krok 2: Zaregistrujte ho v Collabin
V prehľade Collabin otvorte Webhooky, pridajte nový s vašou n8n URL adresou a vyberte udalosti. Collabin zobrazí tajný kľúč webhooku iba raz — skopírujte si ho teraz, budete ho potrebovať v ďalšom kroku.
Krok 3: Overte podpis v uzle Code
Za spúšťač pridajte uzol Code (uzol Code v n8n môže používať vstavaný modul crypto Node — toto je konfigurácia, nie kód aplikácie, ktorý by ste museli hostovať):
const crypto = require('crypto');
const secret = 'VÁŠ_TAJNÝ_KĽÚČ_WEBHOOKU'; // lepšie: credential/env premenná v n8n
const rawBody = $input.first().binary.data
? Buffer.from($input.first().binary.data.data, 'base64')
: Buffer.from(JSON.stringify($input.first().json.body));
const expected = 'sha256=' +
crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const received = $input.first().json.headers['x-collabin-signature'] || '';
if (received !== expected) {
throw new Error('Neplatný podpis webhooku — doručenie zahodené.');
}
return [{ json: JSON.parse(rawBody.toString('utf8')) }];
Ak sa podpis nezhoduje, workflow sa zastaví a nič ďalšie sa nevykoná. Odtiaľto môže každý uzol dôverovať obsahu.
Krok 4: Smerovanie a akcia
Pridajte uzol Switch na {{ $json.event }} s jedným výstupom pre každú udalosť a následne pripojte to, na čo je workflow určený. Vetva pre Slack je jediný uzol Slack so správou podobnou tejto:
:palm_tree: {{ $json.data.user.name }} požiadal o dovolenku
({{ $json.data.leave_type.name }}): {{ $json.data.start_date.slice(0,10) }}
– {{ $json.data.end_date.slice(0,10) }}
Aktivujte workflow, odošlite testovaciu žiadosť o dovolenku v Collabin a sledujte, ako sa rozsvieti log vykonania.
To isté v Make
V Make (predtým Integromat) je spúšťačom modul Custom webhook: vytvorte ho, skopírujte URL adresu a zaregistrujte ju v Collabin rovnakým spôsobom. Make automaticky parsuje JSON a ďalšie moduly (Slack, Google Sheets, e-mail…) prepojíte na základe namapovaných polí.
Jedna otvorená poznámka: custom webhooky v Make neposkytujú surové telo požiadavky vo vzorcoch, takže overenie HMAC je tam v praxi nepraktické. Samotná URL adresa webhooku je dlhý náhodný tajný kľúč, ktorý je naozaj ťažké uhádnuť — ale znamená to, že ktokoľvek, kto sa o nej dozvie, by mohol odosielať falošné udalosti. Dva rozumné prístupy: akceptujte toto riziko pri automatizáciách s nízkym dopadom (nesprávna správa v Slacku), alebo procesy s overením podpisu nechajte v n8n / malom kódovom mostíku pre čokoľvek, čo zapisuje do systémov záznamov. Neoverené webhook dáta neposúvajte do mzdového systému.
Nápady na použitie
- Prehľad schválení:
leave.status_changed→ filterstatus = APPROVED→ pridanie riadku do Google Sheets — bezúdržbová zostava, ktorú si môže prečítať office manažér. - Kalendár bez ICS:
leave.status_changed(schválené) → vytvorenie udalosti v Google Kalendári v zdieľanom tímovom kalendári. (Ak potrebujete iba kalendár, vstavaný kalendárový feed to zabezpečí bez akejkoľvek automatizácie.) - Reakcia na zamietnutie:
leave.status_changed→ filterstatus = REJECTED→ upozornenie HR e-mailom s poľomrejection_reason, takže zamietnuté žiadosti dostanú ľudskú reakciu. - Upozornenie na obsadenosť:
leave.created→ vyhľadanie tímu v tabuľke → ak sa prekrýva viac ako N kolegov, upozornite vedúceho ešte pred schválením.
Prevádzkové poznámky
Collabin považuje akúkoľvek odpoveď 2xx za úspešnú a neúspešné doručenia neopakuje — zachovajte v spúšťači nastavenie „odpovedať okamžite", aby pomalé nadväzujúce aplikácie nemohli spôsobiť straty, a pamätajte, že neúspešné pokusy sú viditeľné v systémovom logu chýb Collabin. Ešte jeden dobrý zvyk: vytvorte pre n8n a Make samostatné webhooky v Collabin, každý s vlastným tajným kľúčom, aby ste mohli zrušiť jedného odberateľa bez zásahu do druhého.