sumwerk

Docs Guide · updated September 21, 2026

Connect Plain

Plain stays the place where support conversations are answered. Connecting it to sumwerk does two things:

  • In sumwerk, every customer’s timeline shows their support conversations (title, the latest message, open or solved, priority, who handles it, a link into Plain) next to notes, calls, emails and the MRR ledger. A new conversation is an event, so an automation can, for example, give the customer’s owner a task when a customer with high MRR writes in.
  • In Plain, a card next to each thread shows what the person’s company pays, whether money is at risk, who owns the customer, and a link to the customer in sumwerk.

sumwerk only ever reads from Plain.

What you need

An owner of your sumwerk account, and in Plain someone who may create API keys and see the workspace settings (an admin). About ten minutes.

1. Create an API key in Plain

Plain → Settings → Machine users → Add machine user (name it sumwerk) → Add API key. Give it permission to read and nothing else:

  • thread:read
  • customer:read
  • company:read
  • workspace:read
  • user:read (for the name of the person handling a thread)
  • labelType:read

Copy the key.

2. Copy the request-signing secret

Plain → Settings → Request signing. Copy the secret. Plain signs everything it sends with it, and sumwerk refuses anything that is not signed.

3. Enter both in sumwerk

sumwerk → Account → Integrations → Plain. Paste the API key and the request-signing secret, press Connect Plain. sumwerk checks the key, reads all conversations once (a few minutes for some thousand threads) and then every hour. Both values are stored encrypted and never shown again.

After saving, the page shows two addresses. They contain a long random token that stands for your account; treat them like a password.

4. Webhook: keep the timeline current within seconds

Plain → Settings → Webhooks → Add webhook target. URL: the webhook target address from sumwerk. Events: all thread events (created, status changed, assignment, labels, priority, email and chat received and sent). Without a webhook everything still arrives, up to an hour later.

5. Customer card: your numbers inside Plain

Plain → Settings → Customer cards → Add customer card. Title sumwerk, key sumwerk, URL: the customer card address from sumwerk, default time to live 15 minutes. Open any thread: the card shows status, MRR, customer since, owner, revenue at risk, open tasks and a button to the customer in sumwerk.

How a conversation finds its customer

By the email address it was written from: first among the people of your customers, then among the customers’ own addresses. If several customers have that person, the one that pays most. A conversation from an unknown address is kept and matched the moment that person is added to a customer (Account → Integrations shows how many are waiting).

Automations

Two triggers: a support conversation is opened and a support conversation is closed. With conditions such as MRR above an amount, a tag or an owner, and actions such as a task for the owner or a webhook to Slack.

If something goes wrong

What you see Why, and what to do
“Plain did not accept this API key” The key was mistyped, revoked, or belongs to another workspace
“Last attempt failed: …permission…” The machine user lacks one of the read permissions above
Conversations arrive only once an hour The webhook is missing, or its events do not include the thread events
Plain shows “could not load” on the card The request-signing secret in sumwerk is missing or old, or the card key is not sumwerk
Many conversations “without a customer” The people who write in are not yet people of a customer in sumwerk. Let your product send them (POST /api/v1/customers/:id/contacts)

Disconnecting

Account → Integrations → Disconnect forgets the key and the secret. Conversations read so far stay on the timelines. Remove the webhook target and the card in Plain, and delete the machine user.

Connect Stripe and check your own numbers

A restricted, read-only key is all it takes. The first import runs in a few minutes; every number you see opens into the customers and Stripe references behind it.

Start free