message.comDevelopers

Migrate from Zendesk Chat to message.com

Zendesk Chat (formerly Zopim) is a per-agent live chat tool, often bolted onto Zendesk Support. message.com replaces it with a unified inbox that also covers tickets and phone, with no per-seat pricing. The migration is mostly a widget snippet swap.

What stays the same

  • Snippet-based install. One async script tag.
  • Identify pattern. Both expose a JavaScript object for visitor identity.
  • Triggers / proactive messages. Zendesk "triggers" map to message.com proactive messages. See Send proactive messages.

What is different

  • No per-agent pricing. Add the team without paying per seat.
  • Unified inbox. Chat, email tickets, and phone calls in one queue. Zendesk routes those to Support, Talk, and Chat as separate products.
  • AI included. Smart Hold, AI Receptionist, agent assist in the base plan rather than as Zendesk AI add-ons.
  • Single API surface. One workspace, one auth model. Zendesk requires separate API tokens for Support vs Chat.

1. Export Zendesk Chat data

  1. Sign in to Zendesk admin as an account owner.
  2. Chat data export. From the Chat dashboard, open Settings → Account → Export. Pick the date range; receive a download link.
  3. End-user export. If you also use Zendesk Support, go to Admin Center → People → Users and export as CSV.
  4. Triggers and shortcuts. Copy or screenshot the active ones. They will need to be recreated.

2. Set up message.com

  1. Sign up at app.message.com/register.
  2. Complete onboarding. Pick chat as the first channel; add tickets and phone if you use them.
  3. Copy the install snippet.

3. Import contacts

Upload the Zendesk end-users CSV under Settings → Visitors → Import. Map columns:

  • Zendesk email → message.com email.
  • Zendesk name → message.com name.
  • Zendesk id → message.com externalId (prefix with zendesk:).
  • Any user fields → custom attributes.

4. Swap the snippet

Remove the Zopim / Zendesk Web Widget snippet. Paste:

HTML
<script>
  (function(d,s,o){
    var j=d.createElement(s);j.async=1;j.src='https://app.message.com/widget.js';
    j.dataset.workspace=o;
    d.head.appendChild(j);
  })(document,'script','YOUR_WORKSPACE_ID');
</script>

5. Re-implement identify and triggers

  • Replace $zopim.livechat.setName/setEmail calls with Message.identify({ email, name, userId }).
  • Recreate Zendesk triggers as proactive messages. See Send proactive messages.

Cutover checklist

  • Staging install verified: launcher loads, identify fires, test chat round trips.
  • CSP allowlist updated (app.message.com on script-src + connect-src).
  • Mobile tested on both iOS Safari and Android Chrome.
  • Triggers recreated as proactive messages.
  • Saved replies (Zendesk shortcuts) recreated.
  • Dual-load for one week; monitor inbound on both sides.
  • Remove the Zopim snippet from production.
  • Downgrade or cancel Zendesk Chat (and Zendesk Talk if migrating phone).
  • Archive the Zendesk export bundle.

Common pitfalls

  • Zendesk Web Widget (Classic) vs Messaging. Two different Zendesk products on the customer side. Make sure you remove the right snippet.
  • Support + Chat coupling. If you used Zendesk Support too, decide whether to migrate the ticket side separately or in parallel. message.com's unified inbox handles both.
  • Bulk reassignment. Open Zendesk conversations stay in Zendesk. message.com starts fresh. Decide a freeze date and communicate to customers.
  • Custom apps in Zendesk Marketplace. Find equivalents or rebuild small integrations. See OAuth apps (planned).