Claude-code-plugins-plus-skills fondo-webhooks-events
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/fondo-pack/skills/fondo-webhooks-events" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-fondo-webhooks-events && rm -rf "$T"
manifest:
plugins/saas-packs/fondo-pack/skills/fondo-webhooks-events/SKILL.mdsource content
Fondo Webhooks & Events
Overview
Fondo itself does not send webhooks. Instead, build event-driven workflows using webhooks from the same providers Fondo connects to: Stripe (revenue), Gusto (payroll), Plaid (bank transactions), and Mercury (banking).
Provider Webhooks
| Provider | Key Events | Use Case |
|---|---|---|
| Stripe | , | Revenue tracking, MRR alerts |
| Gusto | , | Payroll cost alerts, headcount |
| Plaid | , | Expense monitoring |
| Mercury | | Real-time spend tracking |
Instructions
Stripe Revenue Webhook
import Stripe from 'stripe'; const stripe = new Stripe(process.env.STRIPE_API_KEY!); app.post('/webhooks/stripe', express.raw({ type: '*/*' }), (req, res) => { const sig = req.headers['stripe-signature'] as string; const event = stripe.webhooks.constructEvent( req.body, sig, process.env.STRIPE_WEBHOOK_SECRET! ); switch (event.type) { case 'charge.succeeded': const amount = (event.data.object as Stripe.Charge).amount / 100; console.log(`Revenue: $${amount}`); // Update internal dashboard break; case 'invoice.paid': // MRR tracking break; } res.sendStatus(200); });
Gusto Payroll Webhook
// Gusto sends webhooks when payroll is processed app.post('/webhooks/gusto', express.json(), async (req, res) => { const { event_type, data } = req.body; if (event_type === 'payroll.processed') { const totalPayroll = data.totals.gross_pay; console.log(`Payroll processed: $${totalPayroll}`); // Alert if significantly different from budget if (totalPayroll > monthlyPayrollBudget * 1.1) { await sendAlert(`Payroll exceeded budget by ${((totalPayroll / monthlyPayrollBudget - 1) * 100).toFixed(0)}%`); } } res.sendStatus(200); });
Resources
Next Steps
For performance optimization, see
fondo-performance-tuning.