From podium-pack
Handles Podium webhook events for messages, reviews, and payments using Express.js with event routing, idempotency, and registration instructions.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin podium-packThis skill is limited to using the following tools:
Handle Podium webhook events for messages, reviews, and payments with event routing and idempotent processing.
Builds Podium two-way messaging workflow: Express webhook for inbound messages, API registration, reply sending. For SaaS integrations handling conversations.
Handles Instantly.ai v2 webhook events for email campaigns (sent, opened, clicked, replied, bounced) and lead updates. Use for webhook endpoints or CRM sync pipelines.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Share bugs, ideas, or general feedback.
Handle Podium webhook events for messages, reviews, and payments with event routing and idempotent processing.
| Event | Description |
|---|---|
message.received | Inbound customer message |
message.sent | Outbound message delivered |
message.failed | Message delivery failed |
review.created | New review posted |
payment.completed | Invoice payment received |
import express from 'express';
const app = express();
app.post('/webhooks/podium', express.json(), async (req, res) => {
const { type, data } = req.body;
const handlers: Record<string, (data: any) => Promise<void>> = {
'message.received': async (d) => {
console.log(`Message from ${d.attributes['contact-phone']}: ${d.attributes.body}`);
},
'message.sent': async (d) => {
console.log(`Message delivered: ${d.id}`);
},
'review.created': async (d) => {
console.log(`New review: ${d.attributes.rating}/5`);
},
'payment.completed': async (d) => {
console.log(`Payment received: $${d.attributes.amount / 100}`);
},
};
const handler = handlers[type];
if (handler) await handler(data);
res.status(200).json({ received: true });
});
await podium.post('/webhooks', {
data: {
attributes: {
url: 'https://your-app.com/webhooks/podium',
events: ['message.received', 'message.sent', 'review.created', 'payment.completed'],
},
},
});
| Issue | Cause | Solution |
|---|---|---|
| No events received | Wrong URL | Verify HTTPS URL in webhook config |
| Duplicate events | Retry delivery | Implement idempotency with event IDs |
| Handler timeout | Slow processing | Offload to background queue |
For error diagnosis, see podium-common-errors.