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
- Sign in to Zendesk admin as an account owner.
- Chat data export. From the Chat dashboard, open Settings → Account → Export. Pick the date range; receive a download link.
- End-user export. If you also use Zendesk Support, go to Admin Center → People → Users and export as CSV.
- Triggers and shortcuts. Copy or screenshot the active ones. They will need to be recreated.
2. Set up message.com
- Sign up at app.message.com/register.
- Complete onboarding. Pick chat as the first channel; add tickets and phone if you use them.
- Copy the install snippet.
3. Import contacts
Upload the Zendesk end-users CSV under Settings → Visitors → Import. Map columns:
- Zendesk
email→ message.comemail. - Zendesk
name→ message.comname. - Zendesk
id→ message.comexternalId(prefix withzendesk:). - 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/setEmailcalls withMessage.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.comonscript-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).