Skip to content

CRM Sync (Twenty)

Client meetings are worth nothing to the rest of your company if they only live in Plan AI. This integration pushes each meeting into Twenty, the open-source CRM, so whoever opens the client's record next sees what was said — without asking you.

Twenty is normally self-hosted, so unlike every other integration the API host is per workspace. You supply both the URL and the key.

What lands in the CRM

One meeting produces three things on the company record:

What it isWhy separate
NoteDate, attendees, summary, key points, and a link to the meeting document when one was generatedReadable in five seconds from the timeline
FileThe full transcript, .md, one line per speaker turnThe raw words, for when the summary isn't enough
Timeline entryThe note, stamped at the real meeting timePuts the meeting in the right chronological place

The split is deliberate. A wall of raw transcript pasted into a CRM timeline is unreadable, so the note stays a summary and the transcript rides along as an attachment you open only when you need it.

The timeline entry exists for a subtler reason: a note is dated when Plan AI pushes it, which can be hours after the call. Left alone, the CRM would tell the wrong story about when things happened. The timeline entry carries its own timestamp, so the meeting sits where it actually occurred.

The document link is public

The meeting document is linked with its share URL, which opens without signing in — that's what makes it useful to a client reading the CRM. It only appears when you asked for a document to be generated; the note says nothing about one otherwise.

The link is added when the document is ready, which is usually a moment after the note itself, since the document takes longer to produce than the note does. The project digest is deliberately not linked: it re-synthesises every meeting in the project, and a per-meeting note in a client's CRM is the wrong place to publish that.

Calendar events

Twenty can also hold the meeting as a calendar event, and Plan AI does not create one. An event only shows its title when it belongs to a calendar channel, channels only exist for a connected Google or Microsoft account, and none can be created through the API — so an event we wrote would appear on the company as a row marked "Not shared", with the time but no title. A masked row is worse than no row.

Connecting your instance

  1. In Twenty, go to Settings → API & Webhooks and create an API key.
  2. In Plan AI, open Settings → Integrations and find the Twenty card.
  3. Enter your instance URL (for example https://crm.yourcompany.com) and paste the key.

The URL must be https. Plan AI verifies the credentials by listing one company before saving, so a wrong key fails immediately instead of silently at the first meeting.

Choosing the destination company

The company is chosen per meeting, on the save screen, right next to the "Send to Twenty" toggle — available in the desktop recorder, the mobile app and the web dashboard.

This is per meeting rather than per project on purpose: the same person attends calls with several different clients in a single day, so the destination belongs to the meeting, not to whatever project the recording happens to sit in.

If a project is linked to a company, that link pre-fills the picker so recurring client work is one less click. You can always override it.

No company, no note

If the toggle is on but no company is selected, nothing is pushed and the meeting is marked Skipped with the reason shown on the transcript. It is not a silent failure — check the integration badges on the meeting.

When two people record the same meeting

If you and a colleague both record the same client call, the client's CRM must not end up with two notes about one conversation.

Plan AI decides whether two recordings describe the same real-world meeting by comparing their capture windows — generous about overlap, because two people rarely hit record at the same second and someone always joins late, but strict about how far apart they started, so back-to-back calls with the same client don't collapse into one.

The second recording is linked to the note the first one produced, and it does not upload a second copy of the transcript or add a second timeline entry. Its transcript in Plan AI shows "a teammate already sent this meeting to Twenty".

If the two recordings really were different meetings with the same client on the same day, Plan AI creates a separate note rather than merging them.

Sending a meeting by hand

Any meeting can be pushed manually from its transcript view, on both web and mobile — useful when a meeting was skipped because no company was picked, or when the push failed.

Only the first push creates the file and the timeline entry. A meeting that already has a note in the CRM won't get a second one.

When something goes wrong

The note is created first and is the only step that can fail the push. If the transcript file or the timeline entry fails, the note is already in the CRM and correctly linked, the push still counts as a success, and the error is reported to your error tracker. Losing the note over a failed attachment would be a bad trade.

Every outcome — sent, skipped, failed — appears as a badge on the meeting, with the reason.