Helpdesk migration

Migrate from Keeping to Intercom

Field-level mapping, validation, and rollback between Keeping and Intercom. We move data and schema; workflows are rebuilt natively in Intercom.

Keeping logo

Keeping

Source

Intercom

Destination

Intercom logo

Compatibility

60%

6 of 10

objects map 1:1 between Keeping and Intercom.

Complexity

CModerate

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Keeping to Intercom is a structural shift from a Slack-native ticketing layer to a standalone customer communications platform. Keeping operates entirely within Slack — tickets are threads, customers are the requesters, and Slack Channels serve as team routing. There is no Keeping database export; we reconstruct the customer record from ticket metadata during scoping. We migrate tickets as Intercom Conversations, ticket requesters as Contacts, and Keeping Slack Channels as Intercom Teams or assignment rules. Intercom's object model (Contacts, Companies, Conversations, Custom Objects) is richer but requires schema design decisions before any data moves. We do not migrate Keeping automations, Slack rules, or channel-based routing logic as code; we deliver a written inventory of these for the customer's admin to rebuild in Intercom Workflows.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Keeping logo

Keeping

What's pushing teams away

  • Multi-channel support is limited — teams that grow into web chat, social, or voice channels typically move to Zendesk, Freshdesk, or HelpScout for unified routing.
  • Reporting depth is shallow versus standalone helpdesks; analytics-driven teams find the Advanced tier dashboards limited.
  • Enterprise tier carries a 10-user minimum at $49/user/month — small teams that want SLA uptime guarantees must commit at a higher floor than competitors.
  • Gmail dependency means teams migrating off Gmail (to Outlook, Spike, or a domain helpdesk) lose the core integration value.
  • Public review footprint is thinner than Hiver, HelpScout, or Front, making peer comparison harder for procurement teams.

Choosing

Intercom logo

Intercom

What's pulling them in

  • Instant chat and message threading on websites and apps gives support teams a single inbox without context-switching, according to reviewers on Capterra and G2 who highlight fast response times as a primary benefit.
  • Fin AI handles repetitive inbound queries automatically, reducing agent workload measurably — G2 reviewers report fewer escalations and faster first-response times once Fin is configured.
  • Automation workflows (Outbound, Operator, and custom bots) allow teams to qualify leads and route tickets without manual intervention, appealing to growth-stage SaaS companies managing high ticket volumes.
  • Help center articles and self-service deflection are natively integrated, so knowledge base content and chat conversations live in the same workspace, simplifying reporting.
  • Multi-channel support (live chat, email, SMS, WhatsApp, Phone) consolidates customer touchpoints into one inbox, reducing the operational overhead of managing separate tools.

Object mapping

How Keeping objects map to Intercom

Each row shows how a Keeping object lands in Intercom, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Keeping

Ticket

maps to

Intercom

Conversation

1:1
Fully supported

Keeping Tickets map directly to Intercom Conversations. The Slack thread timestamp becomes the Intercom created_at on the Conversation. Thread messages migrate as Conversation Parts, with the message body, author (agent or customer), and timestamp preserved. Internal notes in Keeping (visible only to agents) migrate as internal Conversation Parts. Closed ticket status maps to Intercom Conversation state with the original close timestamp preserved. We extract the Slack thread ID as an external reference for audit purposes.

Keeping

Customer

maps to

Intercom

Contact

1:1
Fully supported

Keeping does not store a standalone customer record — the customer is inferred from the Slack thread requester. We reconstruct the Contact by extracting the requester's email, name, and any metadata (company name, plan tier, user ID) from every ticket they opened. Email becomes the Contact email field and dedupe key. Company name, if present in ticket metadata, becomes an Account in Intercom with a Contact-to-Account link. If no company data is present, contacts are created without an Account link and flagged for the customer to enrich post-migration.

Keeping

Slack Channel

maps to

Intercom

Inbox Team

lossy
Fully supported

Keeping Slack Channels map to Intercom Inbox Teams. We extract the full list of Keeping Slack Channels during scoping and map each to a corresponding Intercom Team. Channel membership (who has access to which channel in Slack) maps to Inbox Team membership in Intercom. If Keeping used channel naming conventions for routing (e.g., #support-tier1, #support-tier2), we create corresponding Teams and configure routing rules in Intercom during schema setup.

Keeping

Ticket Assignee

maps to

Intercom

Admin (Teammate)

1:1
Fully supported

Keeping assigns tickets by Slack user (who responded in the thread). We extract the assignee from the first agent response in each thread and map to an Intercom Admin by email lookup. If the assignee has no Intercom account, they go to a reconciliation queue for the customer to provision before migration. Slack bots and automated responders (e.g., Slackbot) without a human owner are flagged as unmapped and excluded from assignee mapping.

Keeping

Ticket Status

maps to

Intercom

Conversation State + Snoozed Until

1:1
Fully supported

Keeping ticket open/closed state maps to Intercom Conversation state (open, closed, snoozed). If Keeping used a multi-status workflow (e.g., pending customer, resolved, escalated), we map those to Intercom Conversation states and create a custom conversation attribute to carry the original Keeping status label for audit. Snooze timestamps from any snooze feature in Keeping migrate as Intercom Snoozed Until timestamps.

Keeping

Customer Tags

maps to

Intercom

Contact Tags

1:1
Fully supported

If Keeping tickets contained tags (applied manually or by automation), these migrate as Intercom Contact Tags. We extract unique tags across all tickets, create the corresponding tags in Intercom, and apply them to the relevant Contact records. Tags that are purely ticket-level (not customer-level) are applied to the Conversation as tags. The customer chooses during scoping whether to apply tags to Contacts, Conversations, or both.

Keeping

Slack Message Attachments

maps to

Intercom

Conversation Part Attachments

lossy
Fully supported

Slack message attachments (images, PDFs, files) within Keeping threads migrate as Intercom Conversation Part attachments. We flag unsupported file types (.exe, .sys, .scr, .shb, .wsf and others restricted by Intercom) as unmapped and excluded. If Keeping used Slack message reactions as a proxy for satisfaction voting, we do not migrate reactions — satisfaction ratings require Intercom CSAT configuration post-migration. Image attachments within the thread migrate if under Intercom's supported size limits.

Keeping

Ticket Priority

maps to

Intercom

Custom Conversation Attribute

lossy
Fully supported

If Keeping used priority labels (urgent, high, normal, low) as part of ticket metadata or Slack thread subject prefixes, we create a custom conversation attribute in Intercom called keeping_original_priority__c and populate it from the ticket data. This preserves the original priority for reporting without forcing a priority system redesign during migration.

Keeping

Custom Ticket Fields

maps to

Intercom

Custom Contact or Conversation Attributes

lossy
Fully supported

Keeping supports custom fields on tickets (e.g., product area, plan tier, bug severity). We audit all custom fields during scoping, create matching custom attributes in Intercom (as Contact attributes if the field is customer-scoped, or Conversation attributes if ticket-scoped), and populate them during migration. Field type mapping follows Intercom's supported attribute types: text, number, boolean, date, single-select, and multi-select.

Keeping

Company Data

maps to

Intercom

Account

1:1
Fully supported

Keeping has no native Company object; company data, if present, lives in ticket metadata (e.g., the customer's company name in a Slack thread or a custom field). We extract unique company names from ticket records, create Intercom Accounts for each, and link the corresponding Contacts. Accounts without a company name in ticket metadata are created as placeholder records or left unlinked based on the customer's preference during scoping. Account creation must precede Contact creation to satisfy the Account-Contact lookup relationship.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Keeping logo

Keeping gotchas

High

Data lives in Gmail, not Keeping — extraction needs Gmail API

High

Internal notes do not appear in Gmail

Medium

Enterprise tier has a 10-user minimum at $49/user/month

Medium

No public API surface beyond the Chrome extension

Intercom logo

Intercom gotchas

High

S3 JSON export omits conversation transcripts

High

Workspace isolation prevents workflow migration

Medium

Fin AI resolution fees compound with automation success

Medium

Two-year conversation history limit on historical export

Low

Private app rate limits share workspace quota

Pair-specific challenges

  • Keeping has no standalone database export

    Keeping stores all ticket and customer data inside Slack as threaded messages — there is no Keeping admin panel export, no API endpoint for bulk data extraction, and no CSV dump of historical tickets. We extract data by iterating Slack channels that correspond to Keeping ticket queues, parsing message threads, identifying the first customer message (the ticket opener), capturing agent responses, and reconstructing timestamps from Slack message metadata. This extraction method requires a scoping audit of every Slack channel used for support, and any Slack messages deleted or beyond Slack's data retention window are unrecoverable. Teams should audit their Slack workspace before migration scoping to determine how many historical channels exist and how far back message history is retained.

  • Customer records must be reconstructed from ticket metadata

    Keeping does not create a standalone customer record when a ticket is opened — the customer is the requester in the Slack thread. We extract the requester profile (email, display name, Slack user ID) from each unique ticket opener and build Contact records from that extraction. If customers emailed Keeping from multiple channels or changed their Slack display name between tickets, they may appear as duplicate Contacts after migration. We deduplicate by email address and flag duplicates for the customer to merge post-migration. Any customer data beyond email and name (company, plan tier, lifecycle stage) must come from custom ticket fields or Slack message content, which requires content parsing rather than structured field extraction.

  • Keeping automations and Slack rules do not migrate

    Keeping automations — any routing rules, auto-assignment logic, or channel-based routing built with Slack workflow builders — are not structured data that can be extracted and imported into Intercom. We deliver a written inventory of every Keeping automation and Slack rule with its trigger, conditions, and actions, along with a recommended Intercom Workflow equivalent. Intercom Workflows use a different model (conversation triggers, assignment conditions, teammate rules, and time-based actions) and must be rebuilt by the customer's admin or an Intercom partner. Channel naming conventions used for routing in Keeping (e.g., #tier1-support, #tier2-support) must be recreated as Inbox Teams and routing rules in Intercom.

  • Intercom attachment restrictions may exclude some Slack files

    Intercom blocks certain file types as attachments due to security restrictions, including .exe, .sys, .scr, .shb, .wsf, and others. Any file attachments from Keeping Slack threads that fall into these restricted types will not import into Intercom Conversations. We audit attachment types during scoping and flag restricted files as excluded with a manifest provided to the customer. Teams should review any attachments in historical Slack threads before migration to identify which file types are present. Standard document types (PDF, PNG, JPG, DOCX, XLSX) import without issue.

  • Intercom seat minimums and per-resolution pricing create cost surprises

    Intercom pricing combines per-seat subscriptions ($29 to $132 per seat per month) with Fin AI per-resolution fees ($0.99 each). Teams coming from Keeping's flat monthly pricing are often unprepared for the compounding cost at scale. Additionally, Intercom's Advanced and Expert plans include lite seats (20 and 50 respectively) but require full-seat purchases for agents who need inbox access. We include a pricing impact analysis in the migration scope document, calculating the estimated Intercom cost based on the customer's migrated agent count and projected conversation volume. Teams with fewer than three agents on Keeping may find the minimum seat cost ($87 per month on Essential) higher than their current Keeping plan.

Migration approach

Six steps for a successful Keeping to Intercom data migration

  1. Slack workspace audit and channel inventory

    We audit the source Slack workspace to identify every channel used for Keeping ticket queues. We capture channel names, member lists, creation dates, and message retention status. We run a sample extraction from three representative channels (one low-volume, one medium-volume, one high-volume) to validate extraction methodology, estimate record counts, and identify any data quality issues (deleted messages, truncated threads, missing requester emails). The audit output is a written scope document with record count estimates, channel-to-team mapping recommendations, and a data quality report flagging any Slack messages beyond retention.

  2. Customer and ticket reconstruction from Slack threads

    We parse the extracted Slack thread data to identify the first customer message in each thread (the ticket opener), capture all subsequent agent and customer messages, extract the assignee from the first agent response, and reconstruct timestamps from Slack message metadata. We deduplicate customers by email and group their tickets. Any tickets without an identifiable requester email (anonymous Slack users or threads started by a bot) are flagged as unmapped and escalated to the customer for resolution before migration. This step produces a structured dataset ready for Intercom API import.

  3. Intercom schema design and team mapping

    We design the destination Intercom workspace schema before any data moves. This includes creating Inbox Teams mapped from Keeping Slack Channels, provisioning Admins matched to Keeping agents by email, creating custom Contact attributes for any customer metadata extracted from tickets (plan tier, company name, original ticket priority), and creating custom Conversation attributes for ticket-level custom fields. We create a test workspace in Intercom (or use an existing sandbox if available on the customer's plan) to validate schema before production migration.

  4. Data mapping and transformation

    We define the field-level mapping between the reconstructed Keeping dataset and Intercom objects: Contacts from ticket requesters, Accounts from company names in ticket metadata, Conversations from ticket threads, Conversation Parts from individual messages, and Tags from any labels used in Keeping. We apply the Customer and Ticket status split (open/closed) to Intercom Conversation state. We validate the mapping with a 50-record sample migration into the Intercom test workspace and reconcile against the source data before proceeding to full migration.

  5. Production migration with reconciliation

    We run production migration in dependency order: Accounts first (if any), then Contacts, then Conversations with Conversation Parts attached. Team assignment migrates from the channel-to-team mapping defined during scoping. We run row-count reconciliation at each phase and a 25-record spot-check comparing migrated Intercom records against the source Slack thread data. Any records that fail validation (missing required fields, unmapped assignees, attachment failures) go to a fix queue. We disable Intercom workflows and automations before migration to prevent pre-populated rules from altering migrated conversation states.

  6. Cutover, handoff, and automation inventory delivery

    We freeze the Keeping workspace (no new ticket creation or Slack routing) during cutover. We run a final delta migration of any tickets created or modified during the migration window. We then enable Intercom as the system of record and deliver the Automation Inventory document to the customer's admin, listing every Keeping automation and Slack rule with a recommended Intercom Workflow equivalent. We support a 72-hour hypercare window to resolve reconciliation issues. We do not rebuild Keeping automations or Slack rules in Intercom as part of the migration scope.

Platform deep dives

Context on both ends of the pair

Keeping logo

Keeping

Source

Strengths

  • Gmail-native — works inside the tool teams already use.
  • Per-seat pricing starting at $12/user/month is competitive for small teams.
  • Collision detection, internal notes, assignment, and tags add ticket discipline to Gmail.
  • Native integrations with ClickUp, Shopify, HubSpot, and Zapier.
  • SOC2 compliance.

Weaknesses

  • Limited multi-channel support (email-only via Gmail).
  • Reporting depth shallower than standalone helpdesks.
  • Enterprise tier requires 10-user minimum.
  • No public REST API documented.
  • Tied to Gmail — migrating off Gmail breaks the value prop.
Intercom logo

Intercom

Destination

Strengths

  • Integrated AI agent (Fin) for automated resolution with per-resolution billing that rewards high automation rates.
  • Multi-channel inbox consolidating live chat, email, SMS, WhatsApp, and Phone into a single threaded view.
  • Native help center with articles, collections, and self-service deflection capabilities.
  • Workflow automation for routing, qualification, and proactive outbound messaging across channels.
  • Strong API ecosystem with 10,000 req/min rate limits for private apps enabling high-throughput migration pipelines.

Weaknesses

  • Pricing model compounds with seat count, AI resolution fees, channel costs, and multiple add-ons, making total cost hard to predict.
  • Workspace-level isolation prevents moving workflows or content between environments, requiring manual rebuilds.
  • S3 JSON export deliberately excludes conversation transcripts, necessitating REST API calls for full message history.
  • Outages are reported as frequent enough to be a concern for always-on support operations.
  • Setup complexity means teams often require internal guidance or professional services to configure bots and automation correctly.

Complexity grading

How hard is this migration?

Moderate Helpdesk migration. 5 of 7 objects need a mapping; the rest are 1:1.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Keeping and Intercom.

  • Object compatibility

    C

    5 of 7 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Keeping: Not publicly documented.

  • Data volume sensitivity

    B

    Keeping doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Keeping to Intercom migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Keeping to Intercom data migrations

Answers to the questions buyers ask most during Keeping to Intercom migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Keeping to Intercom migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Migrations under 5,000 tickets and 2,000 customers land between two and four weeks. The shorter timeline assumes a well-audited Slack workspace with clear channel-to-team mapping and no complex custom field dependencies. Migrations with large historical thread archives (over 20,000 messages), multiple Slack workspaces, custom object requirements, or customer deduplication complexity move to six to ten weeks because of extraction scoping, reconstruction validation, and Intercom schema design time.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Keeping.
Land in Intercom, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day