Claude Code skill pack for Podium (18 skills)
Installation
Open Claude Code and run this command:
/plugin install podium-pack@claude-code-plugins-plus
Use --global to install for all projects, or --project for current project only.
What It Does
> Claude Code skill pack for Podium — business messaging, reviews management, payments, and webchat API integration (18 skills)
Skills (18)
"Podium ci integration \u2014 business messaging and communication platform\.
Podium Ci Integration
Overview
Implementation patterns for Podium ci integration using the REST API with OAuth2 authentication.
Prerequisites
- Completed
podium-install-authsetup - Valid OAuth2 access token
Instructions
Step 1: API Call Pattern
import axios from 'axios';
const podium = axios.create({
baseURL: 'https://api.podium.com/v4',
headers: { 'Authorization': `Bearer ${process.env.PODIUM_ACCESS_TOKEN}` },
});
const { data } = await podium.get('/locations');
console.log(`Locations: ${data.data.length}`);
Output
- Podium API integration for ci integration
- OAuth2 authenticated requests
- Error handling and retry logic
Error Handling
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Expired token | Refresh OAuth token |
| 429 Rate Limited | Too many requests | Implement backoff |
| 403 Forbidden | Missing scope | Update OAuth app scopes |
Resources
Next Steps
See related Podium skills for more workflows.
"Podium common errors \u2014 business messaging and communication platform\.
Podium Common Errors
Overview
Implementation patterns for Podium common errors using the REST API with OAuth2 authentication.
Prerequisites
- Completed
podium-install-authsetup - Valid OAuth2 access token
Instructions
Step 1: API Call Pattern
import axios from 'axios';
const podium = axios.create({
baseURL: 'https://api.podium.com/v4',
headers: { 'Authorization': `Bearer ${process.env.PODIUM_ACCESS_TOKEN}` },
});
const { data } = await podium.get('/locations');
console.log(`Locations: ${data.data.length}`);
Output
- Podium API integration for common errors
- OAuth2 authenticated requests
- Error handling and retry logic
Error Handling
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Expired token | Refresh OAuth token |
| 429 Rate Limited | Too many requests | Implement backoff |
| 403 Forbidden | Missing scope | Update OAuth app scopes |
Resources
Next Steps
See related Podium skills for more workflows.
"Podium core workflow a \u2014 business messaging and communication platform\.
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
"Podium core workflow b \u2014 business messaging and communication platform\.
Podium Core Workflow B
Overview
Manage reviews and payments with Podium: request reviews from customers, track review status, and create payment invoices.
Prerequisites
- Completed
podium-core-workflow-a(messaging) - Reviews and Payments features enabled in Podium account
Instructions
Step 1: Request a Review
// Send a review request to a customer
const { data } = await podium.post(`/locations/${locationId}/review-invitations`, {
data: {
attributes: {
'contact-phone': '+15551234567',
'customer-name': 'Jane Doe',
},
},
});
console.log(`Review invitation sent: ${data.data.id}`);
Step 2: List Reviews
const { data } = await podium.get(`/locations/${locationId}/reviews`);
for (const review of data.data) {
console.log(` ${review.attributes.rating}/5 — ${review.attributes.body}`);
}
Step 3: Create a Payment Invoice
const { data } = await podium.post(`/locations/${locationId}/invoices`, {
data: {
attributes: {
'contact-phone': '+15551234567',
amount: 5000, // $50.00 in cents
description: 'Service invoice #1234',
},
},
});
console.log(`Invoice created: ${data.data.id}, amount: $${data.data.attributes.amount / 100}`);
Output
- Review invitations sent to customers
- Review listing with ratings and content
- Payment invoices created and tracked
Error Handling
| Error | Cause | Solution |
|---|---|---|
422 Invalid amount |
Amount not in cents | Convert dollars to cents (multiply by 100) |
403 Payments not enabled |
Feature not active | Enable Payments in Podium account |
| Review invitation failed | Customer opted out | Check contact preferences |
Resources
Next Steps
Handle webhook events: podium-webhooks-events
"Podium cost tuning \u2014 business messaging and communication platform\.
Podium Cost Tuning
Overview
Implementation patterns for Podium cost tuning using the REST API with OAuth2 authentication.
Prerequisites
- Completed
podium-install-authsetup - Valid OAuth2 access token
Instructions
Step 1: API Call Pattern
import axios from 'axios';
const podium = axios.create({
baseURL: 'https://api.podium.com/v4',
headers: { 'Authorization': `Bearer ${process.env.PODIUM_ACCESS_TOKEN}` },
});
const { data } = await podium.get('/locations');
console.log(`Locations: ${data.data.length}`);
Output
- Podium API integration for cost tuning
- OAuth2 authenticated requests
- Error handling and retry logic
Error Handling
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Expired token | Refresh OAuth token |
| 429 Rate Limited | Too many requests | Implement backoff |
| 403 Forbidden | Missing scope | Update OAuth app scopes |
Resources
Next Steps
See related Podium skills for more workflows.
"Podium debug bundle \u2014 business messaging and communication platform\.
Podium Debug Bundle
Overview
Implementation patterns for Podium debug bundle using the REST API with OAuth2 authentication.
Prerequisites
- Completed
podium-install-authsetup - Valid OAuth2 access token
Instructions
Step 1: API Call Pattern
import axios from 'axios';
const podium = axios.create({
baseURL: 'https://api.podium.com/v4',
headers: { 'Authorization': `Bearer ${process.env.PODIUM_ACCESS_TOKEN}` },
});
const { data } = await podium.get('/locations');
console.log(`Locations: ${data.data.length}`);
Output
- Podium API integration for debug bundle
- OAuth2 authenticated requests
- Error handling and retry logic
Error Handling
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Expired token | Refresh OAuth token |
| 429 Rate Limited | Too many requests | Implement backoff |
| 403 Forbidden | Missing scope | Update OAuth app scopes |
Resources
Next Steps
See related Podium skills for more workflows.
"Podium deploy integration \u2014 business messaging and communication\.
Podium Deploy Integration
Overview
Implementation patterns for Podium deploy integration using the REST API with OAuth2 authentication.
Prerequisites
- Completed
podium-install-authsetup - Valid OAuth2 access token
Instructions
Step 1: API Call Pattern
import axios from 'axios';
const podium = axios.create({
baseURL: 'https://api.podium.com/v4',
headers: { 'Authorization': `Bearer ${process.env.PODIUM_ACCESS_TOKEN}` },
});
const { data } = await podium.get('/locations');
console.log(`Locations: ${data.data.length}`);
Output
- Podium API integration for deploy integration
- OAuth2 authenticated requests
- Error handling and retry logic
Error Handling
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Expired token | Refresh OAuth token |
| 429 Rate Limited | Too many requests | Implement backoff |
| 403 Forbidden | Missing scope | Update OAuth app scopes |
Resources
Next Steps
See related Podium skills for more workflows.
"Podium hello world \u2014 business messaging and communication platform\.
Podium Hello World
Overview
Send your first Podium message, list contacts, and check location details using the Podium REST API.
Prerequisites
- Completed
podium-install-authsetup with valid access token - A Podium location ID
Instructions
Step 1: List Locations
const { data } = await podium.get('/locations');
for (const loc of data.data) {
console.log(`Location: ${loc.attributes.name} (ID: ${loc.id})`);
}
Step 2: List Contacts
const locationId = 'loc_xxxxx';
const { data } = await podium.get(`/locations/${locationId}/contacts`);
for (const contact of data.data) {
console.log(` ${contact.attributes.name} — ${contact.attributes.phone}`);
}
Step 3: Send a Message
// Messages are sent via the Podium platform to the customer's phone
const { data } = await podium.post(`/locations/${locationId}/messages`, {
data: {
attributes: {
body: 'Hello from our integration! How can we help?',
'contact-phone': '+15551234567',
},
},
});
console.log(`Message sent: ${data.data.id}`);
Output
- Listed locations with IDs
- Retrieved contacts for a location
- Sent a test message via Podium
Error Handling
| Error | Cause | Solution |
|---|---|---|
404 Location not found |
Wrong location ID | List locations first to get valid IDs |
422 Invalid phone |
Bad phone format | Use E.164 format: +15551234567 |
403 Forbidden |
Missing scope | Add messages.write scope to OAuth app |
Resources
Next Steps
Build messaging workflow: podium-core-workflow-a
"Podium install auth \u2014 business messaging and communication platform\.
Podium Install Auth
Overview
Set up Podium API authentication using OAuth2 authorization code flow. Podium requires a Developer Account, OAuth application credentials, and user authorization to access location data.
Prerequisites
- Podium Developer Account (apply at developer.podium.com)
- OAuth Application credentials (clientid, clientsecret)
- A Podium location to authorize against
Instructions
Step 1: Register OAuth Application
1. Go to developer.podium.com
2. Create a new OAuth Application
3. Set redirect URI: http://localhost:3000/callback
4. Copy client_id and client_secret
5. Select scopes: messages.read, messages.write, contacts.read, reviews.read
Step 2: Configure Environment
# .env
PODIUM_CLIENT_ID=your_client_id
PODIUM_CLIENT_SECRET=your_client_secret
PODIUM_REDIRECT_URI=http://localhost:3000/callback
Step 3: OAuth2 Authorization Flow
import express from 'express';
import axios from 'axios';
const app = express();
// Step 1: Redirect user to Podium authorization
app.get('/auth', (req, res) => {
const authUrl = `https://api.podium.com/oauth/authorize?client_id=${process.env.PODIUM_CLIENT_ID}&redirect_uri=${encodeURIComponent(process.env.PODIUM_REDIRECT_URI!)}&response_type=code&scope=messages.read+messages.write`;
res.redirect(authUrl);
});
// Step 2: Exchange code for access token
app.get('/callback', async (req, res) => {
const { code } = req.query;
const { data } = await axios.post('https://api.podium.com/oauth/token', {
grant_type: 'authorization_code',
code,
client_id: process.env.PODIUM_CLIENT_ID,
client_secret: process.env.PODIUM_CLIENT_SECRET,
redirect_uri: process.env.PODIUM_REDIRECT_URI,
});
console.log(`Access token: ${data.access_token}`);
console.log(`Refresh token: ${data.refresh_token}`);
res.json({ status: 'authenticated' });
});
app.listen(3000);
Step 4: Verify Connection
const podium = axios.create({
baseURL: 'https://api.podium.com/v4',
headers: { 'Authorization': `Bearer ${accessToken}` },
});
const { data } = await podium.get('/locations');
console.log(`Connected! Locations: ${data.data.length}`);
Output
- OAuth application registered with Podium
- Authorization code flow implemented
- Access and refresh tokens obtained
- API connectivity verified
Error Handling
| Error | Cause | Solution | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
invalid_client |
Wrong client_id/secret | Verify credentials in developer portal | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
invalid_grant |
Exp
"Podium local dev loop \u2014 business messaging and communication platform\.
ReadWriteEditBash(npm:*)Bash(curl:*)Grep
Podium Local Dev LoopOverviewImplementation patterns for Podium local dev loop using the REST API with OAuth2 authentication. Prerequisites
InstructionsStep 1: API Call Pattern
Output
Error Handling
ResourcesNext StepsSee related Podium skills for more workflows. "Podium performance tuning \u2014 business messaging and communication\.
ReadWriteEditBash(npm:*)Bash(curl:*)Grep
Podium Performance TuningOverviewImplementation patterns for Podium performance tuning using the REST API with OAuth2 authentication. Prerequisites
InstructionsStep 1: API Call Pattern
Output
Error Handling
ResourcesNext StepsSee related Podium skills for more workflows. "Podium prod checklist \u2014 business messaging and communication platform\.
ReadWriteEditBash(npm:*)Bash(curl:*)Grep
Podium Prod ChecklistOverviewImplementation patterns for Podium prod checklist using the REST API with OAuth2 authentication. Prerequisites
InstructionsStep 1: API Call Pattern
Output
Error Handling
ResourcesNext StepsSee related Podium skills for more workflows. "Podium rate limits \u2014 business messaging and communication platform\.
ReadWriteEditBash(npm:*)Bash(curl:*)Grep
Podium Rate LimitsOverviewImplementation patterns for Podium rate limits using the REST API with OAuth2 authentication. Prerequisites
InstructionsStep 1: API Call Pattern
Output
Error Handling
ResourcesNext StepsSee related Podium skills for more workflows. "Podium reference architecture \u2014 business messaging and communication\.
ReadWriteEditBash(npm:*)Bash(curl:*)Grep
Podium Reference ArchitectureOverviewImplementation patterns for Podium reference architecture using the REST API with OAuth2 authentication. Prerequisites
InstructionsStep 1: API Call Pattern
Output
Error Handling
ResourcesNext StepsSee related Podium skills for more workflows. "Podium sdk patterns \u2014 business messaging and communication platform\.
ReadWriteEditBash(npm:*)Bash(curl:*)Grep
Podium Sdk PatternsOverviewImplementation patterns for Podium sdk patterns using the REST API with OAuth2 authentication. Prerequisites
InstructionsStep 1: API Call Pattern
Output
Error Handling
ResourcesNext StepsSee related Podium skills for more workflows. "Podium security basics \u2014 business messaging and communication platform\.
ReadWriteEditBash(npm:*)Bash(curl:*)Grep
Podium Security BasicsOverviewImplementation patterns for Podium security basics using the REST API with OAuth2 authentication. Prerequisites
InstructionsStep 1: API Call Pattern
Output
Error Handling
ResourcesNext StepsSee related Podium skills for more workflows. "Podium upgrade migration \u2014 business messaging and communication\.
ReadWriteEditBash(npm:*)Bash(curl:*)Grep
Podium Upgrade MigrationOverviewImplementation patterns for Podium upgrade migration using the REST API with OAuth2 authentication. Prerequisites
InstructionsStep 1: API Call Pattern
Output
Error Handling
ResourcesNext StepsSee related Podium skills for more workflows. "Podium webhooks events \u2014 business messaging and communication platform\.
ReadWriteEditBash(npm:*)Bash(curl:*)Grep
Podium Webhooks EventsOverviewHandle Podium webhook events for messages, reviews, and payments with event routing and idempotent processing. Prerequisites
InstructionsStep 1: Webhook Event Types
Step 2: Event Handler
Step 3: Register Webhook
Output
Error Handling
ResourcesNext StepsFor error diag How It Works
Ready to use podium-pack?Related Pluginssupabase-packComplete Supabase integration skill pack with 30 skills covering authentication, database, storage, realtime, edge functions, and production operations. Flagship+ tier vendor pack. vercel-packComplete Vercel integration skill pack with 30 skills covering deployments, edge functions, preview environments, performance optimization, and production operations. Flagship+ tier vendor pack. clay-packComplete Clay integration skill pack with 30 skills covering data enrichment, waterfall workflows, AI agents, and GTM automation. Flagship+ tier vendor pack. cursor-packComplete Cursor integration skill pack with 30 skills covering AI code editing, composer workflows, codebase indexing, and productivity features. Flagship+ tier vendor pack. exa-packComplete Exa integration skill pack with 30 skills covering neural search, semantic retrieval, web search API, and AI-powered discovery. Flagship+ tier vendor pack. firecrawl-packComplete Firecrawl integration skill pack with 30 skills covering web scraping, crawling, markdown conversion, and LLM-ready data extraction. Flagship+ tier vendor pack.
Tags
podiumsaassdkintegration
|