From appfolio-pack
Handles AppFolio webhook events for property management with Express router, signature verification, and support for lease, payment, maintenance notifications. Trigger: 'appfolio webhook'.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin appfolio-packThis skill is limited to using the following tools:
AppFolio Stack supports webhooks for lease, payment, and maintenance events.
Automates tenant management and lease operations via AppFolio APIs with error handling for auth/endpoint issues. For property management SaaS integrations.
Generates complete, verified Next.js webhook handlers for Clerk events including user create/update/delete and organization membership. Enables database sync, notifications, integrations.
Sets up Documenso webhook endpoints with secret verification to handle document events like signed, completed, or rejected in Node.js/Express apps.
Share bugs, ideas, or general feedback.
AppFolio Stack supports webhooks for lease, payment, and maintenance events.
import express from "express";
import crypto from "crypto";
const router = express.Router();
router.post("/webhooks/appfolio", express.raw({ type: "application/json" }), (req, res) => {
const signature = req.headers["x-appfolio-signature"] as string;
const expected = crypto.createHmac("sha256", process.env.APPFOLIO_WEBHOOK_SECRET!)
.update(req.body).digest("hex");
if (!crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))) {
return res.status(401).json({ error: "Invalid signature" });
}
const event = JSON.parse(req.body.toString());
console.log(\`Event: \${event.type} — \${JSON.stringify(event.data)}\`);
res.status(200).json({ received: true });
});
| Event | Trigger | Use Case |
|---|---|---|
lease.created | New lease signed | Update CRM |
lease.expired | Lease ended | Trigger renewal workflow |
payment.received | Rent paid | Update accounting |
maintenance.created | Work order filed | Dispatch vendor |