Skip to content

Plain

Plain is the support platform built for B2B teams that run support in email, Slack and chat at once. Sonora’s Plain integration is two-way: support threads flow into Sonora the moment they change, and Sonora’s read on the account — health, renewal, open issues, what this customer has asked for before — appears inside Plain where the agent is replying.

Setup is one paste. Plain’s API lets Sonora configure the workspace itself, so there is nothing to wire up on the Plain side by hand.

  • Receives threads in real time. Every thread, message, status and priority change arrives over Plain’s webhooks; nothing waits for a nightly sync.
  • Turns threads into meaning. Threads become customer issues, feature requests and eCSAT signals, attached to the right customer.
  • Shows Sonora inside Plain. A customer card in Plain’s sidebar carries the account’s health, ARR, renewal, open issues and pending requests.
  • Writes back. Optionally, Sonora sets sonora_* thread fields and labels on threads and keeps Plain tiers in step with account health, so your Plain workflows can route on CS truth.
  • Admin access to the Plain workspace (to create a machine user and an API key)
  • Permission to manage integrations in Sonora
  1. In Plain: Settings → Machine Users → + Add Machine User. Name it “Sonora”.
  2. Click Add API key and select the permissions Sonora’s connect screen lists. Only the first group is required to connect; each further group unlocks a capability, and you can widen the key later.
  3. Copy the key. Plain shows it once.
  1. Settings → Integrations → Plain → Connect.
  2. Paste the API key and click Connect.

Sonora verifies the key against your workspace, reads what it may do, and — when the key allows — reads the workspace’s request-signing secret so every request Plain sends can be verified. The connect screen shows which capabilities the key has unlocked and exactly which permissions any missing one still needs.

Add permissions to the same API key in Plain, then click Re-check permissions in Sonora. Capabilities turn on without reconnecting.

Plain threads belong to a customer and, when your workspace uses them, to a tenant. Sonora matches in this order:

  1. The Plain tenant’s external ID against the account ID from your connected CRM (exact match).
  2. The customer’s email against Sonora’s people.
  3. The email domain against customer websites.

If your Plain workspace populates tenant external IDs from your CRM, matching is exact and needs no review.

When Sonora connects it adds two cards to your Plain workspace, shown in the sidebar whenever an agent opens a thread from a customer Sonora knows:

  • Sonora · Account — the account’s name and tier, its health badge and score, ARR, renewal date and days to go, the CSM, and the most recent touchpoint. The renewal line turns amber inside 90 days.
  • Sonora · History — open issues ranked by priority with how long each has been open, how many of them this contact raised, pending feature requests with their mention counts, and the eCSAT trend.

Both cards link straight to the customer’s page in Sonora. They refresh every five minutes. If the thread’s customer does not match a Sonora account, the card says so and names what Sonora matches on.

The cards need the customerCardConfig:create, customerCardConfig:read and customerCardConfig:delete permissions on the API key. Without them the connect screen shows the cards as still missing; grant the permissions and click Re-check permissions.

Optionally, Sonora can put its read on the account onto the thread itself, so your Plain workflows can route on it. Everything here is off until you turn it on under Settings → Integrations → Plain → Write back into Plain.

  • Thread fields. Eight sonora_* fields — account health, days to renewal, ARR band, the linked Sonora issue and its theme, the account’s top pending feature request, an expansion signal, and how many issues the account has raised in 90 days. Turn on only the ones you want; each one you enable is created in your Plain workspace and removed if you disconnect.
  • Labels. sonora:at-risk and sonora:renewal-60, added and removed as the account’s health and renewal change.
  • Tier sync. Sonora creates three tiers — critical watch, enterprise, onboarding — and moves tenants into them as health, ARR and contract age change, so SLAs and escalation follow CS truth. Tier sync starts in dry run: Sonora logs the moves it would make without making them, and you turn dry run off when the log looks right. Sonora only ever moves a tenant into one of its own tiers, never out of one of yours.

Fields are written when a thread is created and again when Sonora derives an issue from it; tiers are re-evaluated whenever an account’s health is recomputed or one of its threads is written to. Every write is recorded. Writeback needs the writeback (and, for tiers, the tier) permission group on the API key.

A workflow can run against Plain threads. Ask the workflow builder for it in plain words — “when an SLA breaches on an account over $100k, cue the account owner”, “when a third urgent thread lands from one account in a month” — and it sets the workflow to run on Plain threads, with conditions on the thread (status, priority, SLA status, channel, when it opened, when the customer last wrote) and on the account (health, ARR, renewal, owner). The workflow fires the moment Plain sends the transition, and everything a workflow can do — cues, drafted emails, Slack posts, QBR decks — is available.

A workflow step can open a thread in your Plain workspace: pick Open a Plain thread, write the title and opening message (customer and account tokens work), choose a priority and any Sonora labels. Sonora opens it as its machine user for the account’s champion — or for the person a fan-out step chose — and the thread shows up in Plain assigned and labelled, with Sonora’s card already attached. Needs the thread:create permission on the API key.

Under Plain Sidekick on the connection, mint a token and add Sonora as an MCP server in Plain with the URL shown. Plain’s support AI can then answer “has this account raised this before?”, “what did they say at the last QBR?”, “are they in a renewal?” from the whole relationship, read-only. The token is shown once, lasts a year, and is revoked when you disconnect. Your workspace needs Sonora’s MCP server enabled.

  • Plain’s requests to Sonora carry a token Sonora minted for your connection, and are verified against your workspace’s request-signing secret when the key can read it.
  • The API key and signing secret are encrypted at rest and never shown after connect.
  • Everything Sonora creates in your Plain workspace is removed when you disconnect.

From Settings → Integrations → Plain, click Disconnect. Sonora removes what it configured in Plain and forgets the key. Revoke the key in Plain as well: Settings → Machine Users → Sonora → API keys.

“The API key cannot receive threads yet” — the key is missing one of the permissions in the first group. The message lists them; add them to the key in Plain and connect again.

“Token only” under Request signing — the key lacks workspaceHmac:read, or the workspace has no signing secret yet. Grant the permission (and generate a secret under Settings → Request signing in Plain), then re-check.

“This key belongs to a different Plain workspace” — the key was rotated to a machine user in another workspace. Disconnect and connect again with a key from the right one.