Agent Skills: appfolio webhooks events | sed 's/\b\(.\)/\u\1/g'

|

UncategorizedID: jeremylongshore/claude-code-plugins-plus-skills/appfolio-webhooks-events

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/HEAD/plugins/saas-packs/appfolio-pack/skills/appfolio-webhooks-events

Skill Files

Browse the full folder contents for appfolio-webhooks-events.

Download Skill

Loading file tree…

plugins/saas-packs/appfolio-pack/skills/appfolio-webhooks-events/SKILL.md

Skill Metadata

Name
appfolio-webhooks-events
Description
|

appfolio webhooks events | sed 's/\b(.)/\u\1/g'

Overview

AppFolio Stack supports webhooks for lease, payment, and maintenance events.

Webhook Handler

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 Types

| 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 |

Resources