Skip to content
Plain Help Center home
InboxAsk a human

Building your own ticket importer

If your support history lives somewhere Plain doesn't have a one-click importer for, you can bring it across yourself with a short script built on the Plain API.

importers.png

When to Use This

Plain has one-click importers for Zendesk, Freshdesk, Intercom, and Help Scout. If you're coming from one of those, use the importer and skip this page.

A custom import is the route for everything else: a less common support tool, a shared inbox, an internal ticketing system, or a spreadsheet of past conversations you still want your team to be able to search.

What Comes Across

A custom import gives you the same foundations as the one-click importers:

  • Your conversation history, as threads with their messages, replies, and internal notes

  • Original timestamps, on every thread and every message, so your archive reflects when things actually happened

  • The right authors, with inbound messages attributed to the customer and replies attributed to the teammate who sent them

  • Attachments, uploaded to Plain and attached to the messages they belong to

  • Thread details you decide to map across, including title, status, priority, labels, assignee, and a link back to the original ticket

Imported threads don't trigger SLAs, auto-responses, or workflows. Bringing in years of history is quiet, and nothing goes out to your customers.

What's Involved

You'll write a script that reads conversations out of your current tool and creates them in Plain. In outline:

  1. Create an API key with permission to import threads

  2. Make sure the customers you're importing for exist in Plain

  3. For each ticket, create the thread with its original date and details

  4. Add that thread's messages, in batches, with attachments where you have them

  5. Check the result for each item so you can retry anything that didn't land

Two things make this safer than it sounds. Each thread is imported against the reference it had in your old tool, so running the script twice skips anything already in Plain instead of creating duplicates. And you can start with a handful of tickets, check how they look in Plain, then run the rest.

Before You Start

Read Importing threads in the developer docs. It has the full technical detail: the API reference, the permissions you'll need, how messages and attachments are structured, and examples of each call.

It's worth planning the import as part of your wider move. Migrating from another tool covers the order most teams work in and what you'll rebuild in Plain rather than import.

If you'd like a hand scoping the script or a review before you run it at full volume, email help@plain.com.