Podium Core Workflow A
Overview
Build a complete messaging workflow with Podium: send messages, receive inbound messages via webhooks, and manage conversation threads.
Prerequisites
- Completed
podium-install-authwith OAuth tokens - Webhook endpoint accessible via HTTPS
Instructions
Step 1: Set Up Webhook for Inbound Messages
import 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 });
});
Step 2: Register Webhook with Podium
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}`);
Step 3: Send Reply Messages
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;
}
Output
- Webhook receiving inbound messages
- Auto-reply capability
- Two-way messaging via Podium
Error Handling
| 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 |
Resources
Next Steps
Reviews and payments: podium-core-workflow-b