Migration & Data Import

Switch to Krisp in minutes without losing your customer context.

Moving from Crisp, Intercom, Zendesk, Tidio, Freshdesk, or Shopify? Import your contacts, custom attributes, Help Center articles, and saved replies with the migration wizard in your dashboard - and, from Crisp, your past conversations and People profiles too - then swap one script tag when you are ready.

Included on every plan · CSV & JSON importer · Crisp conversations through Crisp’s API · Matched by email & external_id, never duplicated

Four-part migration

Everything that matters moves with your team.

Open the wizard from Settings → Integrations (Switch & migrate from another helpdesk), from Settings → Setup or from Contacts, and your workspace is ready before you flip the live chat switch.

1. Contacts & custom attributes

Upload any CSV or JSON export from your previous helpdesk. Krisp recognises the usual column names for email, name, phone, external_id, country, city, language and time zone, matches records by email or external_id, and keeps every other text column - company, tags, notes, plan - as a custom attribute on the contact.

  • Up to 5,000 contacts (and 1 MB) per upload, as many uploads as you need
  • Safe re-runs: existing contacts are merged, never duplicated
  • Phone, country and city in their own fields; up to 40 custom attributes per contact

2. Help Center articles & AI knowledge base

Import your existing FAQ and knowledge base articles from CSV or JSON - published ones answer in the widget’s Help tab and in AI replies at once - or point the Krisp website crawler at your public help center so the AI can answer from it.

  • Title, text, language and draft or published status kept; matched by title on a re-run
  • A crawler for public docs and FAQ pages, up to 35 pages a crawl
  • Ready for AI replies at once, with the source named under each reply in the inbox

3. Saved replies, macros & canned responses

Bring the slash commands your operators rely on every day. Import your macros and canned responses so typing /shipping, /refund, or /greeting in the Krisp composer brings up the same text on day one.

  • A leading slash is dropped and spacing tidied (names up to 40 characters)
  • A saved reply with the same name is updated, not duplicated; up to 200 per workspace
  • Ready in the composer whichever channel a conversation is on

4. Widget & channel cutover

Set up your widget colours and greeting, automations and order lookup before you go live - nothing shows on your site until the tag is on it. When your team is ready, replace your old chat snippet with Krisp’s single script tag; the common window.$crisp calls keep working.

  • window.$crisp.push(...) calls for email, nickname, phone, session data and opening or closing the chat
  • WhatsApp, Instagram, Messenger, Telegram and Discord connect under Settings → Channels on Growth and Scale
  • Test end-to-end on the built-in /demo page before going live
Step-by-step guides by platform

Choose where you are migrating from.

Select your current provider below for exact export instructions, field mappings, and cutover tips.

Switching from Crisp

Move from Crisp in 4 steps — including window.$crisp compatibility.

Krisp was designed so teams outgrowing Crisp’s per-workspace tiers or opaque AI add-ons can switch in an afternoon without rewriting their frontend user-identification code.

  1. Bring your conversations over Crisp’s API

    In the Migration Wizard, choose Crisp and 1. Crisp Chats & Telegram IDs (Direct Fetch), and paste your Crisp website ID with the API identifier and key from Crisp’s Settings → Workspace Settings → Advanced configuration. Only owners and admins can run it, and the key is never stored: it serves the run it was given for, so you give it again each time you continue, while the website ID and the identifier (sealed) are kept. Krisp only reads: every conversation with its messages, your People profiles, and the Telegram IDs of chats that came from Telegram - so once your Telegram bot is connected, those chats continue in the same thread.

  2. Let it run over as many days as it takes

    Crisp allows 10,000 API requests a day; Krisp stops at 9,000 and saves a checkpoint after every page. Press Stop / Pause Migration at any time and Continue Migration later - the next day, for a long history - to carry on from the next page. Nothing is imported twice, and a conversation’s segments become its tags.

  3. Import contacts, articles & shortcuts, and crawl your website

    Have a contacts CSV from Crisp (Contacts → Actions → Export CSV)? Upload it under 3. Contacts CSV / JSON. Use 4. Help Center Articles and 5. Saved Replies (/) for your Crisp Knowledge articles and shortcuts, and give your website address in Settings → Train the AI so Krisp crawls your site and keeps its pages’ HTML for AI chats.

  4. Swap the widget script tag

    Replace the client.crisp.chat/l.js script with your Krisp <script src="https://krisp.chat/api/widget/<your-slug>/embed.js" async></script> snippet from Settings → Setup. Existing calls like $crisp.push(["set", "user:email", [...]]); continue to work out of the box.

Crisp to Krisp column mapping
Crisp CSV column      Krisp Contact field
--------------------  -------------------------
email                 email (primary dedupe key)
nickname              name
phone                 phone
user_id               external_id
country, city         country, city
company               custom attribute
segments              custom attribute
notepad               custom attribute
* (any other column)  custom attribute <key>

Keep your existing $crisp JS calls

If your web app already identifies logged-in users with window.$crisp.push(["set", "user:email", [user.email]]) or ["set", "session:data", [[["plan", "pro"]]]], Krisp’s loader answers window.$crisp itself, so that code keeps working once the tag is swapped. It handles set for user:email, user:nickname, user:phone and session:data, and do for chat:open, chat:close, chat:toggle, chat:show and chat:hide.

Switching from Intercom

Escape per-seat and $0.99/resolution Fin billing without losing CRM context.

Intercom exports rich people attributes and Help Center articles. Krisp imports the people and the articles—and lets you bring your own OpenAI, Anthropic, or Gemini key so you pay raw token cost instead of per-resolution fees.

  1. Export People & Leads from Intercom

    In Intercom, go to Contacts → All Users / Leads → Export → Export all columns as CSV.

  2. Upload to the Krisp Migration Wizard

    Krisp maps User ID to external_id and Name, Email and Phone to their fields, and keeps Company, Tags and SaaS attributes such as plan, MRR or signup date as custom attributes. Last-seen dates are left out.

  3. Crawl or import Intercom Articles

    Either upload a JSON/CSV export of your Intercom Articles in the wizard or paste your Intercom Help Center URL into Settings → Train the AI to crawl up to 35 of its pages for the AI.

  4. Import Intercom Macros

    Upload your Intercom macros CSV/JSON under 5. Saved Replies (/) so your operators keep every canned response.

Intercom CSV / JSON field mapping
Intercom Export       Krisp Contact field
--------------------  -------------------------
Email                 email
Name                  name
User ID               external_id
Phone                 phone
Company               custom attribute
Tags                  custom attribute
custom_attributes.*   custom attributes
Switching from Zendesk

Move from heavyweight ticketing to real-time conversational support.

Import your Zendesk Support users, organizations, Guide articles, and Support macros in minutes.

  1. Export Customers from Zendesk

    In Zendesk Admin Center or Lists, export your end-users as CSV or JSON, or pull GET /api/v2/users.json and paste the users array it returns.

  2. Import Users & Organizations

    Drop the file into Krisp’s migration wizard under Zendesk. External IDs map to external_id; organization names, tags and user notes are kept as custom attributes on each contact.

  3. Import Zendesk Guide & Macros

    Upload your Zendesk Guide articles JSON/CSV and Zendesk Macros export under 4. Help Center Articles and 5. Saved Replies (/), or crawl your Zendesk Guide help center URL directly.

Zendesk field mapping
Zendesk Export        Krisp Contact field
--------------------  -------------------------
email                 email
name                  name
external_id           external_id
phone                 phone
organization          custom attribute
tags                  custom attribute
notes / details       custom attribute
Switching from Tidio

Swap Tidio Lyro quotas for AI on your own key, capped where you choose.

Bring your Tidio subscribers, visitor properties, and canned responses directly into Krisp.

  1. Export Contacts from Tidio

    In Tidio, open Customers → All Contacts → Export to CSV.

  2. Upload to Krisp

    First and last name columns are automatically combined into name, phone numbers, countries and cities go to their own fields, and tags and custom visitor properties are kept as custom attributes on each contact profile.

  3. Migrate Canned Responses & FAQ

    Import your Tidio Canned Responses under 5. Saved Replies (/) and point the Krisp crawler at your store FAQ page so AI Autopilot can answer product and shipping questions immediately.

Tidio CSV field mapping
Tidio CSV column      Krisp Contact field
--------------------  -------------------------
email                 email
first_name, last_name name (auto-combined)
phone                 phone
country / city        country, city
tags                  custom attribute
Switching from Freshdesk / Freshchat

Consolidate Freshdesk contacts, solutions, and canned responses.

Move your customer directory and solution articles into one fast, unified inbox.

  1. Export Contacts from Freshdesk

    In Freshdesk, navigate to Contacts → Export and select all contact fields as CSV.

  2. Import Contacts, Solutions & Canned Responses

    Upload your contacts CSV, Freshdesk Solutions export, and Canned Responses under 3. Contacts CSV / JSON, 4. Help Center Articles and 5. Saved Replies (/) in the Krisp Migration Wizard.

Freshdesk CSV field mapping
Freshdesk CSV column  Krisp Contact field
--------------------  -------------------------
Email                 email
Full Name / Name      name
Mobile / Phone        phone
Work Phone            custom attribute
Company Name          custom attribute
Unique External ID    custom attribute
Tags                  custom attribute
Shopify, WooCommerce & Custom CSV

Import store customers and connect live HMAC order lookup.

Running an e-commerce store? Import your customer list from Shopify or WooCommerce, then connect the signed order lookup to your own server so a customer who pastes an order number gets its details in the chat, once your server has confirmed the purchase email.

  1. Export Customers from Shopify Admin

    In Shopify Admin, go to Customers → Export → CSV for Excel, Numbers, or other spreadsheet programs.

  2. Import Customer Profiles

    Upload the Shopify CSV in the Krisp Migration Wizard. Total Spent, Total Orders, Accepts Email Marketing, and address fields are stored as searchable custom CRM attributes.

  3. Connect Live Order Lookup

    Under Settings → Order lookup, pick the Shopify (#100234) or WooCommerce preset, enter your endpoint and send a test request. The Shopify Orders plugin only spots order numbers so a thread can be routed; it makes no call to Shopify yet.

Shopify Customer CSV mapping
Shopify CSV column    Krisp Contact field
--------------------  -------------------------
Email                 email
First Name, Last Name name (auto-combined)
Phone                 phone
Default Address Co.   custom attribute
Tags                  custom attribute
Note                  custom attribute
Total Spent / Orders  custom attributes
Other formats

Bring chats from a Telegram bot or another live chat.

Conversations kept somewhere the wizard has no button for can come over as a JSON file in Krisp’s own format.

  1. Get the specification

    In the Migration Wizard, choose 2. Other Formats (Chats & Telegram JSON) and press Download Spec (.md) or Copy Spec (.md) for your developer.

  2. Export conversations and messages

    Each conversation needs its own ID, the customer’s name and where it came from; each message an ID, who wrote it, its text and its time. For Telegram chats, include the numeric telegram_id so your connected bot can reply in the same thread.

  3. Upload or paste the .json file

    The wizard sends it in batches of 25 conversations. Messages are matched by their IDs, so running the same file again adds nothing twice.

Other formats - conversation JSON
{
  "conversations": [
    {
      "session_id": "conv_1001",
      "state": "resolved",
      "meta": {
        "origin": "telegram",
        "nickname": "Dana",
        "data": { "telegram_id": "123456789" }
      },
      "messages": [
        { "fingerprint": "m1", "from": "user",
          "content": "Is my licence still valid?",
          "timestamp": "2026-10-08T11:29:00.000Z" },
        { "fingerprint": "m2", "from": "operator",
          "user": { "nickname": "Sam" },
          "content": "Yes - until March.",
          "timestamp": "2026-10-08T11:31:00.000Z" }
      ]
    }
  ]
}
Preparing your own files

The formats the importer accepts.

Exporting from an internal database or a custom script? Shape the file as below and upload or paste it in the wizard. The endpoints behind it answer a signed-in teammate only - an API key from Settings → API keys is refused - so imports always run from the dashboard.

POST /api/contacts/import

Takes CSV text ({"source": "crisp", "csv": "..."}) or a JSON array of contacts ({"source": "intercom", "contacts": [...]}), up to 5,000 a batch. Matches by email, then external_id, and merges custom attributes into the contact already there.

POST /api/articles/import

Creates or updates up to 500 Help Center articles from CSV or JSON (title, content or body, and status: published or draft, published by default), matched by title. Published articles answer in the widget’s Help tab and in AI replies at once.

POST /api/shortcuts/import

Creates or updates up to 200 saved replies from CSV or JSON (name or shortcut, and content), matched by name; a leading slash is dropped.

Contacts JSON — what the wizard sends to /api/contacts/import
{
  "source": "intercom",
  "contacts": [
    {
      "email": "alex@acme.io",
      "name": "Alex Rivera",
      "phone": "+1 555 0100",
      "external_id": "usr_9481",
      "company": "Acme Corp",
      "tags": "vip, annual",
      "custom_attributes": { "plan": "enterprise", "mrr": 490 }
    }
  ]
}

Ready to move your workspace over?

Create a workspace, open the interactive Migration Wizard, and test your imported contacts, articles, and macros before swapping a single line of production code.