Sokko
Use Plain with
Sokko.
Connect Plain and tell Sokko what to do. It runs the actions you ask for and reacts to what happens. No workflows, no code.
Works with 1,000+ tools · No code required
Actions
Everything Sokko can do in Plain
Every Plain action Sokko can run. Ask for one in a sentence and it's done.
Add Customer To Group
Add a customer to up to 25 customer groups. Existing memberships are skipped, and the response contains only newly created memberships.
Add Customer To Tenants
Idempotently add a customer to one or more tenants.
Add Generated Reply
Add a suggested reply for teammate review without sending it to the customer.
Add Labels To Thread
Add one or more labels to a thread by label-type ID.
Add Members to Tier
Add or move up to 25 tenants or companies into one tier.
Archive Label Type
Archive a label type while preserving labels already on threads.
Bulk Delete Thread Fields
Sequentially delete thread fields, returning each non-atomic item result.
Bulk Set Thread Fields
Create or replace multiple typed thread-field values.
Change Thread Assignment
Irreversibly assign, unassign, add, or remove thread assignees. For an AI-agent ASSIGN, LIVE lets the agent reply to customers, while SHADOW observes real threads without sending customer replies.
Create Attachment Download URL
Create a sensitive three-minute URL and return its virus-scan result. Download or process the file only when attachmentVirusScanResult is CLEAN. Treat INFECTED as unsafe, FAILED or PENDING as not cleared, and null as unscanned; do not fetch or expose the file in any of those states. Do not log or share the URL.
Create Attachment Upload Form
Create a sensitive, two-hour presigned upload capability; no file is uploaded. Do not log or share uploadFormUrl or uploadFormData. Next, POST multipart/form-data directly to uploadFormUrl with every uploadFormData key/value as a form field and the exact binary file in the form field named `file`. After that upload succeeds, pass the returned attachment.id to a compatible message or note action.
Create Autoresponder
Create an autoresponder that automatically sends outbound customer replies. Enabled autoresponders can send irreversible external messages when new threads match. Plain permits at most 25 autoresponders per workspace and delays up to 900 seconds.
Create Customer Group
Creates a new customer group in Plain for organizing and segmenting customers. Customer groups allow you to categorize customers (e.g., by pricing tier, feature access, or support level) and manage them more effectively in your support workflow. Each group has a unique key, display name, and visual color for easy identification. Use this when you need to create a new customer segment for organization or filtering purposes.
Create Email/Slack Discussion
Immediately and irreversibly start an external EMAIL or SLACK discussion. EMAIL delivers the first message to every emailDetails.toAddresses recipient and optional ccAddresses recipient. SLACK posts it to the connected channel selected by slackDetails.connectedSlackChannelId. Live provider authorization requires threadDiscussion:create, although the current operation page omits it.
Create Customer Or Thread Event
Create a custom customer-wide or single-thread timeline event.
Create Label Type
Create a label type that can be applied to threads.
Create Note
Create an internal note on an existing customer thread. Plain's live API currently rejects customer-level notes without threadId even though the current GraphQL SDL marks that input nullable.
Create Tier SLA
Create one legacy tier SLA; next-response requires a first-response SLA on the tier.
Create SLA Policy
Create a named SLA policy with zero or more unique target types.
Create Snippet
Create a reusable plain-text and optional Markdown reply snippet.
Create Task
Create a task, optionally linked to one parent and one assignee.
Create Thread
Create a thread after obtaining a valid customer identifier. Creating a thread can trigger a configured autoresponder, which sends an external reply to the customer; that outbound message cannot be recalled.
Create Thread Field Schema
Create a custom thread-field schema.
Create Tier
Create a support tier, optionally assigning tenant or company members.
Delete Autoresponder
Permanently delete a native autoresponder.
Delete Customer
Permanently and irreversibly deletes a Plain customer by ID, including all associated threads, timeline entries, and other customer data. Deletion runs asynchronously. Confirm the destructive operation before calling.
Delete Customer Group
Permanently delete an empty customer group after confirmation.
Delete Note
Soft-delete an internal note.
Delete Tier SLA
Delete a legacy SLA from a tier. A first-response SLA cannot be deleted while the tier still has a next-response SLA; delete the next-response SLA first.
Delete SLA Policy
Delete an SLA policy, its targets, and their trackers. Threads using the deleted policy fall back to their tier's SLAs.
Delete Snippet
Soft-delete a snippet while preserving historical references.
Delete Task
Soft-delete a task and remove its thread links.
Delete Tenant
Delete a tenant, unlink its customers, and remove its field values. Existing threads retain a reference to the tenant deletion record but are no longer routed through that tenant.
Delete Tenant Field Value
Clear one tenant field value without deleting its schema.
Delete Tenant Field Schema
Permanently delete a tenant-field schema and all values stored against it.
Delete Thread
Permanently delete a thread and all associated data.
Delete Thread Field Schema
Delete a schema and all values stored against it.
Delete Tier
Permanently delete a tier and all of its memberships. The live API also requires serviceLevelAgreementBreachAction:delete, including when the tier does not exist. Plain's API-key UI grantability for that permission is currently unknown.
Delete User
Permanently removes a Plain workspace user by ID. Their threads remain but become unassigned. Plain rejects deletion when the user is the workspace's only owner, so assign another owner first. Confirm this destructive operation.
Escalate Thread Or Select Path
Advance a thread's escalation or attach/detach its escalation path.
Fetch Company
Tool to fetch company details by ID. Use when you need the full profile of a company, including name, domain, contract value, owner info, and timestamps.
Fetch Issues
Fetches external issue tracker links (Jira, Linear, GitHub, etc.) associated with a customer's threads. Returns a bounded, flattened snapshot of issue links across the customer's threads, including thread context. With defaults, it examines up to 50 threads and 50 links per thread; results may be truncated at either limit.
Fetch Tier
Fetch a tier by ID. Set include_details=true to include memberships and SLA configuration, which require additional permissions.
Get Autoresponder
Fetch one native Plain autoresponder through the machine-user-safe list query.
Get Customer By Email
Fetch customer details by email address. Returns customer information if found, or null if no customer exists with that email.
Get Customer By External ID
Fetch a customer by the exact stable external ID from your own system.
Get Customer By ID
Tool to retrieve details of a specific customer by their unique ID. Use after obtaining the customer's ID to fetch their complete record.
Get Customer Group
Fetch one customer group by its Plain ID. Plain's live API requires customerGroup:read for this query.
Get Customers
Tool to fetch a list of customers. Use when retrieving multiple customer records with pagination, filtering, or sorting.
Get Email/Slack Discussion
Fetch metadata for one EMAIL or SLACK side-conversation by ID. Live provider authorization requires threadDiscussion:read, although the current public operation page does not state that permission.
Get Knowledge Gap
Fetch one AI-detected knowledge gap and its linked task and signals.
Get Label Type
Fetch one label type by Plain ID or external ID.
Get SLA Policy
Fetch one SLA policy by its Plain ID.
Get Snippet
Fetch one snippet by ID, including a soft-deleted snippet.
Get Task by ID or Ref
Fetch one task by either its Plain ID or human-readable T-123 ref.
Get Tenant
Fetch one tenant by its Plain ID, including current custom field values.
Get Thread By ID
Fetches a thread by ID, including customer info, status, priority, labels, and assignments. Returns null if the thread is not found.
Get Thread By Reference
Fetch a thread by ref or by its customer-scoped external ID.
Get User By ID
Fetch workspace user/team member by ID. Returns detailed information about a workspace team member including their name, email, status, and avatar. Note: This fetches workspace users (team members), not customers. Use GET_CUSTOMER_BY_ID for customer data.
Import Thread
Import one historical thread without triggering SLAs or autoresponders.
Import Thread Messages
Import up to 25 historical messages and return one result per input message. Reusing a message externalId is idempotent and returns NOOP. The batch is non-atomic: successful messages remain committed when others fail, with per-message results and a top-level bulk_partial_failure error. Attachments require previously uploaded IDs.
List AI Feedback
List feedback submitted on Plain AI features, optionally filtered by feature, sentiment, or time.
List Autoresponders
List native Plain autoresponders in priority order.
List Customer Groups
List one paginated page of customer groups with optional external-ID filtering.
List Deleted Threads
List deletion-audit records for threads.
List Email/Slack Discussions
List only EMAIL and SLACK side-conversations with filters and pagination. Live provider authorization requires threadDiscussion:read, although the current public operation page does not state that permission.
List Generated Replies
List current suggested replies for a thread's most recent inbound message.
List Knowledge Gaps
List AI-detected knowledge gaps with status filters and useful sort orders.
List Label Types
List active and/or archived label types.
List SLA Policies
List named SLA policies, optionally filtering by name or target type.
List Snippets
List the workspace snippet library with cursor pagination.
List Tasks
List workspace tasks with pagination, filtering, and sorting.
List Tenant Field Schemas
List tenant-field schemas before reading or writing custom values.
List Tenants
List tenants with current filters and cursor pagination.
List Thread Field Schemas
List the workspace's custom thread-field schemas.
List Threads (Deprecated)
DEPRECATED: Use PLAIN_PLAIN_QUERY_THREADS instead. Lists one page of threads (support conversations) in Plain. Returns thread summaries including ID, reference, title, status, and priority. Use this action to: - Get an overview of a page of threads in the system - Fetch threads with pagination for large datasets - Find threads by browsing through the list Pagination: Use 'first' for forward pagination (newest first) or 'last' for backward pagination (oldest last). For paginated results, use the cursors from pageInfo (endCursor/startCursor) with 'after'/'before' parameters. If no pagination parameters are provided, returns the provider's default first page.
List Threads By External ID
List a page of threads with an external ID across all customers.
List Threads With Rich Filters
List threads with the provider's complete public filter and sort surface.
List Tiers
List tiers with cursor pagination. Set include_details=true to include memberships and SLA configuration, which require additional permissions.
Mark Customer As Spam
Idempotently hide a customer's threads as spam and exclude them from metrics.
List Threads
Retrieve up to 50 threads from one page, optionally filtered by status. Omit the cursor for the first page and pass the returned end cursor to fetch the next page.
Remove Customer From Group
Removes a customer from one or more customer groups in Plain. Use this action to revoke customer group memberships. The customer must be a member of the specified group(s) - attempting to remove a customer from a group they're not in will result in an error. Groups can be identified by their Plain internal ID (customerGroupId), unique key (customerGroupKey), or external ID (externalId). Common use cases: - Downgrade customer tier (e.g., remove from premium_tier group) - Remove customer from beta access groups - Clean up group memberships after customer status changes
Remove Customer From Tenants
Idempotently remove a customer from one or more tenants.
Remove Labels From Thread
Remove one or more concrete labels from a thread.
Remove Members from Tier
Remove up to 25 tenants or companies from their current tiers.
Reorder Autoresponders
Reorder native autoresponders in one call.
Reorder Thread Field Schemas
Reorder one or more thread-field schemas.
Reply To Email
Immediately and irreversibly send an external reply to an inbound email. Plain inherits the primary recipients and email channel from the referenced inbound email. The request can add CC and BCC recipients or send from a verified alternate support address while preserving email-client threading.
Run GraphQL Query
Execute an arbitrary GraphQL document against Plain without a safety gate. Prefer a specific Plain action when one exists. Inspect the full document first: mutations can immediately and irreversibly create, deliver, update, or delete data. Required authorization depends on its operations and selected fields, so this action cannot predeclare sufficient permissions; the connected credential must already have them. Provider GraphQL errors, including mutation business errors, are returned in the errors field and must not be treated as success merely because HTTP returned 2xx.
Search Customers
Search customer profile fields or timeline text using explicit OR conditions.
Search Tenants
Search tenants by name, domain, or exact external ID.
Search Threads
Search thread titles, messages, and customer names or emails.
Send Email/Slack Discussion Message
Immediately and irreversibly deliver a message in an existing discussion. The discussion ID determines the external recipients and original EMAIL or SLACK channel; they cannot be reviewed or overridden here. Live provider authorization requires threadDiscussionMessage:create, although the current operation page omits it.
Send Message
Immediately and irreversibly deliver a message through an existing thread. The thread determines the delivery channel and primary recipient or channel; this action does not let the caller review or override them. Email threads can add CC and BCC recipients. By default Plain sends as the connected machine user, while impersonation can make the message appear from a customer or an allow-listed workspace user.
Send New Email
Immediately and irreversibly send an external email to a customer. Plain uses the customer's email as the primary recipient. The request can add CC and BCC recipients, send from a verified alternate support address, and attach the email to an existing thread; the delivery channel remains email.
Set Customer Tenants
Replace a customer's complete tenant membership set in one call.
Transition Thread Status
Move a thread to Todo, Snoozed, or Done.
Unarchive Label Type
Restore an archived label type for use on new threads.
Unmark Customer As Spam
Idempotently clear a customer's spam flag and restore inbox visibility.
Update Autoresponder
Update an autoresponder that automatically sends outbound customer replies. Enabling or changing a matching autoresponder can cause irreversible external messages. Plain permits at most 25 autoresponders per workspace and delays up to 900 seconds.
Update Company
Upserts (creates or updates) a company in Plain. Provide companyId to update by ID or companyDomainName to upsert by domain. When both identifiers are omitted, domainName is also used as companyDomainName for compatibility. Use this to create new companies, update existing company details (name, domain, contract value), or assign account owners.
Update Company Tier
Assign one company to a tier or clear its tier membership.
Update Generated Reply
Record teammate feedback on a generated reply.
Update Label Type
Update mutable label-type properties using field wrappers.
Update Note
Replace an internal note's content and optional attachment list.
Update Tier SLA
Update a legacy tier SLA without changing its SLA type.
Update SLA Policy
Replace an SLA policy's targets; omitted target types and their trackers are deleted.
Update Snippet
Update selected snippet fields using Plain's field-level wrappers.
Update Task
Update selected fields on an existing task.
Update Tenant Tier
Assign one tenant to a tier or clear its tier membership.
Update Thread Title
Tool to update a thread's title. Use when renaming a thread after confirming its ID.
Update Thread Attributes
Change one thread priority, customer, external ID, tenant, or tier attribute.
Update Thread Field Schema
Update mutable properties of a thread-field schema.
Apply or Clear Thread SLA Policy
Apply an SLA policy, or clear it so the thread falls back to its tier's SLAs.
Update Tier
Update selected fields on an existing support tier.
Upsert Customer
Tool to upsert (create or update) a customer. Use when syncing or ensuring a customer record exists before subsequent actions.
Upsert Customer Group
Idempotently create or update a customer group using machine-user-safe calls.
Upsert Tenant
Create or update a tenant while synchronizing its stable external ID.
Upsert Tenant Field
Set one typed custom field value for a tenant.
Upsert Tenant Field Schemas
Create or update tenant-field schemas keyed by source and external field ID.
Get connected
Live in your Slack in two minutes.
No workflows to wire up. Turn on the tools you already use, and your agent gets to work.
Add to Slack
1
Add Sokko to Slack
One click from the Slack marketplace. Your whole team gets Sokko at once.
Freshdesk
Zendesk
ServiceNow
Gorgias
Zoho Desk
Intercom
BotPenguin
Botsonic
2
Connect your tools
Sokko works with 1,000+ apps and any MCP server.
Martin
9:53 AM
@Sokko
What can you do with Plain?
3
Put Sokko to work
@mention Sokko in any channel and it gets going. Minutes, not a weekend.
Questions, answered.
Sokko is an AI assistant that lives in your Slack. Connect your apps, ask for what you need in plain language, and Sokko takes the work off your plate.
Sign up to Sokko, ask Sokko to connect to Plain, and approve the connection when prompted. From then on you can ask Sokko to do things in Plain whenever you need.
No. There's nothing to build or configure. You ask Sokko in Slack the same way you'd ask a colleague, and Sokko handles the rest.
Yes. Ask once and tell Sokko when to repeat it, like every Monday at 9am, and it becomes a routine that runs without you.
Read and act on data in Plain, and trigger workflows when something changes there. Tell Sokko the outcome you want and it handles the rest.
Yes. Sokko connects to 1,000+ apps and any MCP server, so you can ask for tasks that span Plain and the rest of your stack in a single request.

What will your first agent do?

Create an agent, connect your tools, and give it a task. Free AI models are included to help you get started.