Helpdesk · Beta
Podium
API integration
Ship Helpdesk features without building the integration. Full Podium API access via Proxy, normalized data through Unified APIs, and 80+ MCP-ready tools for AI agents — all extensible to your exact use case.
Built for specific customer use cases. Issues are resolved quickly.
Talk to usUse Cases
Why integrate with Podium
Common scenarios for SaaS companies building Podium integrations for their customers.
Automate review generation after service completion
Field service, automotive, and healthcare SaaS platforms can trigger Podium review invites automatically when a job, appointment, or ticket is closed — helping their end users build Google reviews without any manual effort from frontline staff.
Use SMS as a support channel without building telecom infrastructure
Helpdesk and ticketing platforms can map Podium conversations and messages into Truto's Unified Ticketing API, letting their users receive and reply to customer texts as standard tickets and comments inside the SaaS product.
Sync contacts bidirectionally with a system of record
CRM and practice management platforms can keep their contact database in sync with Podium so that staff always message the right person with up-to-date metadata, tags, and custom attributes — eliminating duplicate outreach and stale data.
Embed text-to-pay invoicing into vertical workflows
Field service, home services, and retail SaaS products can generate Podium invoices directly from their billing or POS workflows, enabling end users to collect payments via text without leaving the primary tool.
Capture and route inbound leads from Podium webchat into a CRM
Automotive DMS and sales platforms can listen for new Podium conversations and write leads back into their CRM using conversation writeback and webhook subscriptions, ensuring zero leads are lost from website chat.
What You Can Build
Ship these features with Truto + Podium
Concrete product features your team can ship faster by leveraging Truto’s Podium integration instead of building from scratch.
Automated post-service review invite trigger
When an event fires in your product (job complete, ticket closed), automatically call Podium's review invite API to text the customer a Google review link.
Two-way SMS ticketing via Unified Ticketing API
Ingest Podium conversations as tickets and messages as comments through Truto's Unified Ticketing API, and send agent replies back as Podium conversation messages.
Real-time contact and tag sync engine
Create, update, and delete Podium contacts, custom attributes, and tags from your product to maintain a single source of truth across both systems.
Multi-location review analytics dashboard
Pull review summaries, site summaries, and individual reviews across all Podium locations to surface reputation metrics and response management inside your product.
Text-to-pay invoice generation from billing workflows
Create Podium invoices programmatically from your product's billing engine so end users can send payment links via SMS and track invoice status including cancellations and refunds.
Webhook-driven lead capture pipeline
Subscribe to Podium events via webhooks and use conversation lead listing and writeback endpoints to funnel webchat leads into your CRM in real time.
SuperAI
Podium AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_podium_users
List all users in Podium. Returns archived, createdAt, email, firstName, lastName, locations, phone, role, uid, and updatedAt fields for each user. Only users belonging to accessible locations are returned.
get_single_podium_user_by_id
Get a user in Podium. Requires id. Returns archived status, createdAt, email, firstName, lastName, assigned locations, phone, role, uid, and updatedAt fields in the response.
get_single_podium_organization_by_id
Get an organization in Podium by id. Returns archived, businessName, createdAt, uid, and updatedAt fields in the response.
list_all_podium_locations
List all locations in Podium. Returns addressDetails (city, country, state, postalCode), archive status, createdAt, displayName, name, organizationUid, phoneNumber, podiumPhoneNumber, uid, updatedAt for each location.
get_single_podium_location_by_id
Get a specific location in Podium using id. Returns fields such as uid, displayName, addressDetails, phoneNumber, podiumPhoneNumber, organizationUid, archived, archivedAt, createdAt, and updatedAt in the response.
update_a_podium_location_by_id
Update a location in Podium. Requires id. Returns addressDetails, displayName, name, phoneNumber, podiumPhoneNumber, archived, createdAt, updatedAt, archivedAt, organizationUid, and uid. Address must follow ISO convention.
create_a_podium_appointment
Create an appointment in Podium. Requires contactName, contactPhoneNumber, datetime, and locationUid. Returns fields such as uid (appointment identifier), assignedUser, status, type, note, and createdAt in the response.
list_all_podium_campaigns
List all automated campaigns in Podium. Returns createdAt, updatedAt, endedAt, startedAt, name, message, status, uid, organization, and locations for each campaign. Campaigns are sorted by updatedAt in descending order.
get_single_podium_campaign_by_id
Get a specific campaign in Podium by id. Returns fields including uid, name, status, createdAt, updatedAt, startedAt, endedAt, message, organization, and locations.
create_a_podium_campaign
Create a campaign in Podium. Requires locations, name, and status. Returns uid (campaign identifier), createdAt, startedAt, endedAt, updatedAt (timestamps), status, message, name, organization, and locations for the created campaign.
update_a_podium_campaign_by_id
Update a campaign in Podium. Requires id. Returns campaign fields including uid, name, status, message, locations, organization, createdAt, updatedAt, startedAt, and endedAt.
delete_a_podium_campaign_by_id
Delete a campaign in Podium. Requires id. Returns fields including uid, name, status, organization, message, locations, createdAt, updatedAt, startedAt, endedAt. The response contains all campaign fields.
list_all_podium_contact_attributes
List contact attributes in Podium tied to the ownerResource on the token. Returns uid, label, dataType, isEncrypted, createdAt, updatedAt, and ownerResource for each attribute.
get_single_podium_contact_attribute_by_id
Get a contact attribute in Podium by id. Returns fields: uid (Podium unique identifier), label (attribute label), dataType (attribute value type), isEncrypted (encryption status), ownerResource (resource owner info), createdAt, and updatedAt.
create_a_podium_contact_attribute
Create a contact attribute in Podium. Requires dataType, label, and ownerResourceType. Returns uid, label, dataType, isEncrypted, ownerResource, createdAt, and updatedAt fields in the response.
update_a_podium_contact_attribute_by_id
Update a contact attribute in Podium using id. Returns createdAt, dataType, isEncrypted, label, ownerResource, uid, and updatedAt fields in the response. Requires id.
delete_a_podium_contact_attribute_by_id
Delete a contact attribute in Podium by id. Returns uid, label, dataType, isEncrypted, ownerResource, createdAt, and updatedAt fields in the response.
list_all_podium_contact_tags
List all contact-tags in Podium. Returns uid, label, description, createdAt, updatedAt, and organization for each tag.
get_single_podium_contact_tag_by_id
Get a contact tag in Podium for an organization using id. Returns uid, label, description, organization.uid, createdAt, and updatedAt fields in the response.
create_a_podium_contact_tag
Create a contact tag in Podium. Requires label and description. Returns uid (tag identifier), label, description, organization reference, createdAt, and updatedAt for the tag in the response.
update_a_podium_contact_tag_by_id
Update a contact tag in Podium. Requires id. Returns uid, label, description, createdAt, updatedAt, and organization fields in the response.
list_all_podium_contacts
List all contacts in Podium. Returns each contact's uid, name, address, channels, emails, phoneNumbers, tags, attributes, conversations, locations, organization, createdAt, and updatedAt fields in the response.
create_a_podium_contact
Create a contact. If a contact with the same phone number, email, or conversation uid is found it will update the contact. Requires locations and name. Returns the identifier of the created contact in the response.
get_single_podium_contact_by_id
Get a contact in Podium using id, which can be a conversation uid, an email address, or a phone number. Returns fields such as uid, name, address, emails, phoneNumbers, channels, attributes, tags, conversations, locations, organization, createdAt, and updatedAt in the response.
update_a_podium_contact_by_id
Update a contact in Podium using id (conversation uid, email, or phone number). Returns identifier of the updated contact in the response.
delete_a_podium_contact_by_id
Delete a contact in Podium using id (conversation uid, email, or phone number). Returns identifier field to confirm deletion.
podium_contacts_opt_out
Opt out a contact from receiving campaign messages in Podium. Requires the channel.identifier and channel.type parameters. Returns contact fields such as uid, name, channels, phoneNumbers, emails, attributes, tags, address, conversations, createdAt, updatedAt, organization, and locations. Application must be whitelisted.
podium_contacts_remove_attribute
Remove an attribute from a contact in Podium. Requires contact_id and uid. Returns identifier of the contact whose attribute was removed.
podium_contacts_update_contact_attribute
Update a contact attribute in Podium using contact_id and uid. Returns identifier indicating the contact whose attribute was updated.
podium_contacts_add_attribute
Add an existing attribute to a contact in Podium. Requires contact_id and uid. Returns identifier to retrieve the contact in the response.
podium_contacts_remove_tag
Remove an existing tag from an existing contact in Podium. Requires contact_id and uid. Returns identifier field representing the contact's identifier in the response.
podium_contacts_add_tag
Add an existing tag to an existing contact in Podium. Requires contact_id and uid. Returns identifier indicating the contact the tag was added to.
list_all_podium_conversations
List all conversations in Podium. Returns assignedUserUid, channel (identifier and type), closed status, contactName, createdAt, lastItemAt, locationUid, uid, and updatedAt for each conversation. If cursor is used, other parameters are ignored.
get_single_podium_conversation_by_id
Get a conversation in Podium by id. Returns assignedUserUid, channel details, closed status, contactName, createdAt, lastItemAt, locationUid, uid, and updatedAt fields in the response.
update_a_podium_conversation_by_id
Update a conversation in Podium using id. Returns assignedUserUid, channel, closed, contactName, createdAt, lastItemAt, locationUid, uid, and updatedAt fields in the response. id is required.
podium_conversations_writeback_lead
Writeback lead to the connected CRM in Podium. Requires conversation_id. Returns conversation (with uid) in the response. No other identifiers are assigned by Podium.
podium_conversations_create_note
Create a note for a specific conversation in Podium. Requires conversation_id. Returns uid of the note, body, senderName, createdAt, updatedAt, and related organization, location, conversation objects.
list_all_podium_conversation_assignees
Get conversation assignees in Podium. Requires conversation_id. Returns assignedUserUid, assigneeType, assigneeUid, and assignees (list of assignee user uids) in the response.
update_a_podium_conversation_assignee_by_id
Update conversation-assignees in Podium for a specific conversation using conversation_id. Returns assignedUserUid, assigneeType, assigneeUid, and assignees for the updated conversation.
delete_a_podium_scim_user_by_id
Delete a SCIM user resource in Podium. Requires id (provided as email). A successful response returns no content.
update_a_podium_scim_user_by_id
Update a SCIM user resource in Podium to be deactivated. Requires id as the user's email. Returns no content in the response.
list_all_podium_conversation_leads
Get a conversation lead ID in Podium. Requires location_uid, organization_uid, and conversation_id. Returns leadId and conversation.uid associated with the conversation.
list_all_podium_webhooks
List webhooks tied to the authorized user in Podium. Returns uid (webhook unique identifier), eventTypes (events webhook listens to), url (webhook target URL), disabled (status), and createdAt, updatedAt timestamps.
get_single_podium_webhook_by_id
Get a webhook in Podium. Requires id. Returns createdAt, disabled, eventTypes, locationUid, organizationUid, secret, uid, updatedAt, url fields in the response.
create_a_podium_webhook
Create a webhook in Podium. Requires eventTypes and url. One of locationUid or organizationUid is required (if both provided, organizationUid is used). Returns uid, eventTypes, url, createdAt, updatedAt, disabled, locationUid, organizationUid, and secret.
update_a_podium_webhook_by_id
Update a webhook in Podium by id. locationUid and organizationUid cannot be updated. Returns uid, url, eventTypes, disabled, secret, createdAt, updatedAt, locationUid, and organizationUid fields in the response.
delete_a_podium_webhook_by_id
Delete a webhook in Podium. Requires id. Returns uid, url, eventTypes, disabled, secret, createdAt, updatedAt, organizationUid, and locationUid fields for the deleted webhook in the response.
list_all_podium_feedback_surveys
List all feedback surveys in Podium. Surveys are sorted by createdAt descending. Returns fields such as uid, createdAt, updatedAt, score, adjustedScore, customerName, location, attributions, channel, currentStep, and messages in the response.
list_all_podium_conversation_messages
Retrieve messages from a conversation in Podium. Requires conversation_id. Returns fields such as uid, body, createdAt, contactName, senderUid, items with attachments and metadata like deliveryStatus.
get_single_podium_conversation_message_by_id
Retrieve a specific message in Podium using conversation_id and id. Returns message details including body, createdAt, senderUid, items, location, and status fields.
create_a_podium_conversation_message
Send a message with an attachment in Podium. Returns message fields including uid, body, items (attachments), createdAt, senderUid, and conversation. Supported attachment file types include images (.png, .jpg, .gif), videos (.mp4, .mov, .avi), documents (.pdf, .csv, .docx), and audio files (.mpeg, .wav, .ogg). Maximum file size is 30 MB. The rate limit is 10 requests per minute. Requires valid body, channel, and locationUid parameters in the request.
podium_conversation_messages_import
Import a message into a conversation in Podium. Requires body, channel, contactName, direction, locationUid, and publishedAt. Returns message fields such as uid, body, items, createdAt, and senderUid in the response. This does not send a message, just imports it into a conversation.
podium_conversation_messages_send
Send a message in Podium. Requires body, channel, and locationUid. Returns fields including uid (message id), body (message text), createdAt (message creation timestamp), items (associated attachments), and failureReason (if sending failed). A message can only be sent on behalf of a user if they have the necessary permissions to send messages in conversations assigned to them, conversations assigned to others, and unassigned conversations.
list_all_podium_templates
List all templates in Podium. Returns fields such as uid, title, subject, type, accessLevel, createdAt, updatedAt, and templateItems for each template in the response. Requires read_templates scope.
create_a_podium_template
Create a message template in Podium. Returns template fields including uid, title, text, accessLevel, subject, type, createdAt, updatedAt, and organization, location, or user references. Required parameters: text, title, type, accessLevel.
delete_a_podium_template_by_id
Delete a template in Podium. Requires id. Returns the deleted template's details, including uid, title, text, subject, accessLevel, organization, location, user, templateItems, createdAt, updatedAt, deletedAt, isFavorite, nonDeletable, type, and variables.
update_a_podium_template_by_id
Update a message template in Podium. Requires id. Returns accessLevel, attachmentUrl, createdAt, deletedAt, isFavorite, lastUsedAt, location, nonDeletable, organization, subject, templateItems, text, title, type, uid, updatedAt, user, variables.
list_all_podium_products
List all products in Podium. Returns uid, name, description, price, images, xid, archivedAt, insertedAt, and updatedAt for each product. Requires read_products scope.
get_single_podium_product_by_id
Get a product in Podium using id. Returns name, description, price, images list (with uid, url, isPrimary), archivedAt, insertedAt, updatedAt, xid, and product uid fields in the response. Requires id.
podium_products_delete_images
Delete images from a specific product in Podium. Requires id of the product, and the request must include locationUid and uids. Returns for each image: isPrimary, productUid, uid, and url.
podium_products_upload_images
Upload images to a specific product in Podium using product_id, images, and locationUid. Returns identifier for the created async product task and resource URL in the response.
list_all_podium_invoices
List all invoices in Podium. Returns fields such as uid, amount, status, createdAt, paidAt, lineItems, allowedPaymentMethods, customerName, payments, and location for each invoice.
get_single_podium_invoice_by_id
Get an invoice in Podium. Requires id and location_id. Returns allowedPaymentMethods, amount, canceledAt, channel, conversationUid, createdAt, currencyRef, customerName, invoiceNumber, lineItems, location, payments, status, tipAmount, and uid in the response.
create_a_podium_invoice
Create an invoice in Podium. Providing the readerUid property creates a card_present invoice; if omitted, a card_not_present invoice is created. Requires channelIdentifier, customerName, invoiceNumber, lineItems, and locationUid. Returns allowedPaymentMethods, amount, channel, createdAt, currencyRef, customerName, invoiceNumber, invoiceServiceChargeItems, lineItems, location, paidAt, payments, readerUid, requester, status, tipAmount, uid, and key payment and refund details.
podium_invoices_cancel
Cancel an invoice in Podium. Requires invoice_id. Returns invoice fields such as allowedPaymentMethods, amount, canceledAt, canceledNote, channel, createdAt, customerName, status, uid, and more.
podium_invoices_refund
Refund an invoice in Podium. Requires invoice_id. Returns invoice fields such as uid, amount, status, payments, refunds, and more in the response. The invoice must currently have a status of paid. If an invoice has a status of created, it cannot be refunded, but can be canceled. An invoice can have multiple refunds. The total refunded amount cannot exceed the invoice's amount.
get_single_podium_payment_by_id
Get a payment in Podium by id. Returns bankAccountLast4, cardBrand, createdAt, fee, refunds, settledAt, status, uid, and other payment details. Requires id.
get_single_podium_reader_by_id
Get a specific card reader in Podium by id. Returns uid, label, locationUid, status, createdAt, and updatedAt fields in the response. Requires id.
get_single_podium_refund_by_id
Get refund in Podium using id and location_id. Returns amount, cardBrand, cardLast4, createdAt, location.uid, notes, reason, settledAt, status, and uid in the response.
create_a_podium_refund
Create a refund in Podium. Requires amount, channelIdentifier, customerName, locationUid, readerUid, and reason. Returns uid, amount, status, cardBrand, cardLast4, reason, createdAt, settledAt, location, and notes. Only works with Podium Payment Card Reader. Action creates an Unlinked Refund and requires sufficient account balance; operation may fail if balance is insufficient.
list_all_podium_reviews
List all reviews in Podium. Returns attributions, author, createdAt, isRecommendation, locations, needsResponse, responses, review details, uid, and updatedAt fields for each review.
get_single_podium_review_by_id
Get a review in Podium by id. Returns uid, author, review body, rating, siteName, attributions, createdAt, locations, responses, isRecommendation, needsResponse, and updatedAt fields.
list_all_podium_review_invites
List all review invites in Podium. Returns attributions, channel, conversationItemUid, createdAt, customerName, deliveryStatus, languages, linkClicked, linkClickedAt, location, sender, shortUrl, test, uid, updatedAt, and url fields in the response.
get_single_podium_review_invite_by_id
Get a review invite in Podium by id. Returns uid, createdAt, deliveryStatus, channel, customerName, linkClicked, attributions, location, sender, shortUrl, url, and updatedAt fields in the response. Requires id.
create_a_podium_review_invite
Create a review invite link in Podium. Returns uid, shortUrl, url, customerName, channel, deliveryStatus, createdAt, and other invite details. Do not send the same review invitation link to multiple contacts. Doing so can interfere with reporting in Podium, and may cause the invitation link to stop working. Generate a new review invitation link every time you send one to a contact.
list_all_podium_sites_summary
Get summary of reviews for connected sites in Podium. Returns siteName, averageRating, and reviewCount for each site. For locationUids, add each as locationUids[] in URL. Returns these fields in the response.
list_all_podium_review_summary
Get a summary of reviews for each location in Podium. Returns averageRating, locationUid, and reviewCount fields for each location. Requires access to all visible locations.
list_all_podium_review_responses
List responses of a specific review in Podium. Requires review_id. Returns body, isDeleted, likeCount, publishDate, siteAuthorName, source, and uid fields for each response.
create_a_podium_review_response
Create a response for a given review in Podium. Requires review_id. Returns body, isDeleted, likeCount, publishDate, siteAuthorName, source, and uid fields for the created review response.
update_a_podium_review_response_by_id
Update a review response in Podium. Requires review_id and id. Returns body, isDeleted, likeCount, publishDate, siteAuthorName, source, and uid fields in the response.
create_a_podium_review_attribution
Attribute a user to a review in Podium. Requires review_id, locationUid, and userUid. Returns createdAt, updatedAt, isDeleted, siteReviewId, uid, user, editedByUser, and reviewInvite fields in the response.
delete_a_podium_review_attribution_by_id
Remove a user attribution from a review by id in Podium. Requires userUid. Returns createdAt, editedByUser, isDeleted, reviewInvite, siteReviewId, uid, updatedAt, and user fields in the response.
list_all_podium_campaign_interactions
List campaign interactions in Podium. Returns uid, interactionType, createdAt, updatedAt, and resource references (campaign, contact, conversation, location) for each interaction. If cursor is used, all other parameters are ignored.
create_a_podium_campaign_message
Create a message for a specific campaign in Podium. Requires id and channelIdentifier. Returns message fields such as uid, body, items, createdAt, failureReason, location, and senderUid.
create_a_podium_data_feed_event
Process an event through a data feed in Podium. Requires data_feed_id. Returns dataFeedUid and uid for each processed data feed event in the response.
Why Truto
Why use Truto’s MCP server for Podium
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 500+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for Podium
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
Unified User Directory API
Unified Ticketing API
Attachments
Attachments are the files associated with a ticket or a comment.
Comments
Comments represent the communication happening on a Ticket, both between a User and a Contact and the internal things like notes, private comments, etc. A Ticket can have one or more Comments.
Contacts
Contact represent the external people you are in contact with. These could be customers, leads, etc. Contacts can be associated with an Account if the underlying product supports it.
Tickets
Core resource which represents some work that needs to be carried out. Tickets are usually mapped to issues, tasks, work items, etc. depending on the underlying product.
Users
Users represent the people using the underlying ticketing system. They are usually called agents, team members, admins, etc.
How It Works
From zero to integrated
Go live with Podium in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Podium account
Use Truto’s frontend SDK to connect your customer’s Podium account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Podium
Truto’s Proxy API is a 1-to-1 mapping of the Podium API. You call us, we call Podium, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Podium’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Podium on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
What authentication method does the Podium integration use through Truto?
Truto handles OAuth-based authentication for Podium. Your end users connect their Podium accounts through Truto's embedded auth flow — you never need to manage tokens, refreshes, or API keys yourself.
Which Truto Unified APIs are available for Podium?
Podium is mapped to the Unified Ticketing API (supporting Tickets, Comments, Contacts, Users, and Attachments resources) and the Unified User Directory API (supporting Users and Roles). You can also access all Podium-native endpoints directly for capabilities like reviews, invoices, campaigns, and webhooks.
Can I manage Podium webhooks through Truto to get real-time event notifications?
Yes. You can create, list, update, and delete Podium webhooks through Truto, allowing you to subscribe to real-time events like incoming messages or paid invoices without polling.
Does the integration support custom contact attributes and tags?
Yes. You can list, create, update, and delete custom contact attributes, as well as add or remove attributes and tags on individual contacts. This lets you sync arbitrary metadata between your product and Podium.
What operations are supported for Podium conversations and messages?
You can list and retrieve conversations, update conversation status, create notes on conversations, write back leads, manage assignees, and list or create conversation messages. You can also import historical messages and send messages through dedicated endpoints.
Does Truto handle pagination and rate limits for Podium's API?
Yes. Truto abstracts away pagination across all list endpoints and manages rate limiting so your integration doesn't need to implement retries or cursor-tracking logic against Podium's API directly.
Podium
Get Podium integrated into your app
Our team understands what it takes to make a Podium integration successful. A short, crisp 30 minute call with folks who understand the problem.
Talk to us