Build a complete messaging workflow with Podium: send messages, receive inbound messages via webhooks, and manage conversation threads.
podium-install-auth with OAuth tokensimport express from 'express';
const app = express();
app.post('/webhooks/podium', express.json(), async (req, res) => {
const event = req.body;
if (event.type === 'message.received') {
const msg = event.data;
console.log(`From: ${msg.attributes['contact-phone']}`);
console.log(`Body: ${msg.attributes.body}`);
// Auto-reply or route to agent
await sendReply(msg.attributes['location-uid'], msg.attributes['contact-phone'], 'Thanks for reaching out!');
}
res.status(200).json({ received: true });
});
const { data } = await podium.post('/webhooks', {
data: {
attributes: {
url: 'https://your-app.com/webhooks/podium',
events: ['message.received', 'message.sent', 'message.failed'],
},
},
});
console.log(`Webhook registered: ${data.data.id}`);
async function sendReply(locationId: string, phone: string, body: string) {
const { data } = await podium.post(`/locations/${locationId}/messages`, {
data: { attributes: { body, 'contact-phone': phone } },
});
return data.data.id;
}
| Error | Cause | Solution |
|---|---|---|
| Webhook not firing | URL not HTTPS | Use HTTPS endpoint |
| Message failed | Invalid phone | Verify E.164 format |
| No events received | Wrong event types | Check webhook configuration |
Reviews and payments: podium-core-workflow-b