Migration Playbook

Surveysparrow Ticket Management Front

Surveysparrow Ticket Management to Front: The Complete Migration Playbook

A 39-step runbook across six phases — track your progress, and open the right tool at every step.

0 / 39 steps complete 0%
TL;DR

Front has no native SurveySparrow importer. Full-fidelity migrations require API-led thread reconstruction, field mapping, and public/private comment separation.

There is no native migration path from SurveySparrow Ticket Management to Front — Front's built-in history importers only support Help Scout, Freshdesk, and Zendesk, and no third-party tool currently offers a pre-built SurveySparrow connector. The fundamental data model challenge is that SurveySparrow treats tickets as single structured records generated from survey responses (NPS, CSAT, form submissions), while Front models everything as threaded conversations composed of sequential messages with layered comments. Every migration requires extracting data via SurveySparrow's REST API or export tools, decomposing each ticket into at least one imported message with comments mapped separately, and loading via Front's Core API — making custom development work unavoidable.

Read this first

Pair-specific gotchas that catch teams out. Each one has cost somebody a weekend.

Front does not offer a native SurveySparrow importer

Front's history-import documentation lists only Help Scout, Freshdesk, and Zendesk. Plan this as a Core API migration from day one. (help.front.com)

SurveySparrow's ticket export includes ticket fields, assignee details, and requester

SurveySparrow's ticket export includes ticket fields, assignee details, and requester details — but not ticket comments or attachments. If you need comment history, you must use the Ticket Comments API (GET /v3/tickets/:id/comments) to extract them separately.

Front has no native priority field

SurveySparrow priorities must be converted to tags (e.g., priority:urgent, priority:high) or stored in a custom dropdown field. Decide this mapping before migration, not during.

Front returns x-ratelimit-remaining and retry-after headers on every response

Build your script to read these headers and back off on 429 responses. Creating multiple API tokens does not increase throughput — Front enforces limits per company, not per token. (dev.frontapp.com)

Threading mechanics

Front groups imported messages into the same conversation using thread_ref — a string you define. All messages sharing the same thread_ref value are threaded together. Set thread_ref to a consistent value like ss-thread-{ticket_id} for the seed message and all subsequent public comments. If you omit thread_ref, Front may create separate conversations for each imported message. The thread_ref does not need to match any existing identifier in Front; it is an arbitrary grouping key used only during import.

Front's comment endpoint (POST /conversations/:id/comments) does not accept a created_at parameter

All comments are timestamped at import time — historical internal note timestamps are lost. (dev.frontapp.com) Workaround: prepend the original timestamp to the comment body:

Front API edge case

When you update conversation custom fields, Front expects the full custom_fields object. Sending only the field you want to change will erase the others. Always read the current custom fields first, merge your updates, then send the complete payload. (dev.frontapp.com)

The runbook

Work top to bottom. Tick steps as you go — your progress is saved in this browser.

01 Discovery Establish why you are moving, what "done" means, and who signs off. 0/6

Objective A written scope with agreed success criteria, a named owner per workstream, and a budget approved by finance.

  1. Pull the real numbers out of Surveysparrow Ticket Management

    Support ops 1 day

    Export counts for tickets (open and closed separately), contacts, organisations, attachments, macros, triggers, automations, views and SLA policies. Note the oldest ticket date — history depth drives the whole timeline. Estimating from memory is the single most common cause of a blown migration window.

    Data Profiler Get real record counts instead of estimating from memory
  2. Decide what history actually moves

    Support lead 2 days

    Agree a cut-off with the support lead: all history, last 24 months, or open tickets plus a read-only archive. Every extra year of closed tickets adds API time and cost without adding much agent value. Get this in writing — it is the decision people relitigate mid-cutover.

    A "move everything" default is what turns a two-week migration into a two-month one.

    COI & ROI Calculator Build the 36-month business case you will need for sign-off
  3. Confirm Front can hold your support model

    Solution architect 2-3 days

    Walk your current workflow through Front: multi-brand, business hours, SLA targets, CSAT, side conversations, public vs internal notes, and any channel you depend on (voice, chat, WhatsApp, social). List anything with no native equivalent — those are project risks, not configuration details.

  4. Build the business case

    Project sponsor 1-2 days

    Model licence delta, migration effort, agent retraining, and the cost of staying put (Cost of Inaction). Executives approve a number, not a plan, and you will be asked for it again at the go/no-go.

    Helpdesk Migration Planner Turn ticket volume into a dated Surveysparrow Ticket Management → Front timeline
  5. Name owners and set the go/no-go date

    Project manager 1 day

    One named owner each for data, configuration, integrations, and agent enablement, plus a decision-maker who can call a rollback. Put the go/no-go meeting in calendars now, 48 hours before the freeze.

  6. Record count comparison

    Total tickets extracted vs. conversations created in Front (query by migrated-from-surveysparrow tag)

Surveysparrow Ticket Management → Front specifics

Outgrowing feedback-loop ticketing
SurveySparrow's ticket management was built to close the loop on survey responses — auto-creating tickets from NPS scores, CSAT dips, or form submissions. As support volume grows, teams need a platform designed for multi-channel, high-volume conversation management.
Channel consolidation
Front unifies email, SMS, WhatsApp, social media, and live chat into shared inboxes with per-teammate assignment, internal comments, and collaborative workflows. SurveySparrow's ticketing is primarily internal and email-based.
Collaboration model
Front's comment-on-conversation model lets teammates discuss a thread without internal notes cluttering the ticket view. SurveySparrow's collaboration is note-based and works differently at scale.

Don't move on until

  • Record counts confirmed for tickets, contacts, organisations and macros
  • Success criteria signed off by the support lead
  • Freeze window provisionally booked with the business
02 Data Audit Find out what is actually in the data before you try to move it. 0/6

Objective A profiled, cleaned export with every quality defect either fixed at source or explicitly accepted.

  1. Take a full Surveysparrow Ticket Management export and profile it

    Data engineer 1-2 days

    Export to CSV or JSON and profile every file: row counts, null rates per column, distinct values, and type consistency. Compare row counts against the API totals from Discovery — a gap here means your export is silently truncated, usually by pagination.

    Data Profiler Profile the Surveysparrow Ticket Management export for nulls, outliers and type drift
  2. Validate file structure before anyone writes a transform

    Data engineer 1 day

    Check delimiters, quoting, encoding (expect UTF-8, watch for BOMs and Latin-1), duplicate headers, and embedded newlines in ticket bodies. Ticket descriptions with raw newlines and commas break naive CSV parsers and silently shift columns.

    A single unescaped quote in one ticket body can shift every subsequent column without any error.

    CSV Validator Catch broken headers and ragged rows in the raw export
  3. Inventory PII and set retention

    Compliance / DPO 2 days

    Scan for emails, phone numbers, payment card fragments, national IDs and anything else regulated in ticket bodies and custom fields — support tickets are where customers paste things they should not. Decide what gets migrated, masked, or dropped, and record the legal basis.

    Ticket bodies and attachments routinely contain card and ID data that never appears in a structured field.

    PII & Compliance Scanner Find regulated fields before they land in a new system
  4. Quantify duplicates, orphans and dead references

    Support ops 1-2 days

    Count duplicate contacts (same email, different casing), tickets whose requester no longer exists, organisations with no members, and attachments whose parent ticket is gone. Fix these in Surveysparrow Ticket Management where you can — migrating them just moves the mess.

    Data Cleaner Strip empty rows, stray whitespace and dead columns
  5. Clean and normalise the export

    Data engineer 2 days

    Trim whitespace, drop empty rows and columns, normalise casing on emails and tags, and standardise every timestamp to UTC ISO 8601. Timezone drift is invisible at load time and shows up weeks later as SLA reports nobody can reconcile.

  6. Produce a masked copy for sandbox work

    Data engineer 0.5 day

    Generate a realistic but fake version of the export for testing and for any vendor who needs sample data. Loading real customer PII into a sandbox is a breach in most jurisdictions, and sandboxes are rarely covered by your DPA.

    PII Masker Generate a safe copy for sandbox and vendor testing

Don't move on until

  • Export parses cleanly with no ragged rows or encoding errors
  • PII inventory complete and retention decisions recorded
  • Duplicate and orphan records quantified and triaged
03 Field Mapping Turn two schemas into one signed-off mapping spec. 0/6

Objective A reviewed field-level mapping covering every object, with an explicit decision for every field that has no target.

  1. Generate the first-pass Surveysparrow Ticket Management → Front field map

    Solution architect 2 days

    Start from an automated match on both schemas, then review every row by hand. Automated matching gets the obvious 70% right and is confidently wrong on the rest — especially anything named "type", "status" or "custom_field_1".

    Schema Mapper Opens pre-loaded with the Surveysparrow Ticket Management → Front field pair
  2. Map status, priority and channel values, not just field names

    Support lead 1-2 days

    Enumerate every value in each picklist on both sides and map them explicitly. Value-level mismatches are the defect class that survives all the way to production because the field itself mapped fine — a ticket that should be "Pending" arriving as "Open" reopens SLA clocks.

    Statuses with no target equivalent (on-hold, pending-customer) need a policy decision, not a best guess.

  3. Decide how custom fields land

    Solution architect 2 days

    Create the target custom fields first, matching type exactly (a dropdown mapped to free text can never be mapped back). Where Front has no equivalent, decide between a new custom field, a tag, or a note appended to the ticket body — and record which.

  4. Resolve identity and threading

    Data engineer 1 day

    Decide how source IDs are preserved — most platforms will not let you set the primary key, so keep the original ID in a custom field. Without it, reconciliation becomes fuzzy matching and every future support question about an old ticket is unanswerable.

    Losing the original ticket ID makes reconciliation and rollback effectively impossible.

  5. Plan attachments, inline images and threading order

    Data engineer 1-2 days

    Confirm size limits, allowed MIME types, and whether inline images survive as attachments or need rehosting. Decide the comment ordering and author attribution rules: comments loaded out of order, or all attributed to the API user, destroy the conversation history agents rely on.

  6. Freeze and sign off the mapping spec

    Project manager 1 day

    Version the spec, walk the support lead through it row by row, and get explicit sign-off. Any change after this point goes through change control — mid-flight mapping edits are how partial loads happen.

Don't move on until

  • Every source field is mapped, deliberately dropped, or parked in a custom field
  • Status, priority and channel value maps agreed with the support lead
  • Mapping spec version-controlled and signed off
04 Test Migration Prove the pipeline on a small, representative slice. 0/6

Objective A pilot load into a Front sandbox that reconciles cleanly and has been reviewed by real agents.

  1. Stand up a Front sandbox that matches production config

    Solution architect 2-3 days

    Create the custom fields, groups, brands, business hours and SLA policies first. A pilot into a default sandbox tests nothing, because the failures you care about are all configuration mismatches.

  2. Pick a deliberately nasty pilot sample

    Data engineer 0.5 day

    Take 500-1000 records chosen for difficulty, not convenience: the longest ticket threads, tickets with the most attachments, non-Latin character sets, merged and split tickets, deleted requesters, and every status value. A clean random sample proves only that easy records are easy.

  3. Run the load with masked data and instrument everything

    Data engineer 1-2 days

    Log every API request and response with its source record ID. When 40 records fail out of 10,000 you need to know exactly which ones and why, without re-running the whole batch.

    PII Masker Never load real customer PII into a sandbox
  4. Measure real throughput against the rate limit

    Data engineer 1 day

    Record achieved records-per-hour under Front's actual rate limits, including retries and backoff. Extrapolate to the full volume: if the maths says the full load exceeds your freeze window, you fix that now, not on cutover night.

    Published rate limits are ceilings, not throughput. Assume real-world rates are meaningfully lower once retries and backoff are counted.

  5. Reconcile the pilot and triage every failure

    Data engineer 1-2 days

    Diff source against target on record counts and field-level values. Every discrepancy gets a root cause and a fix — "probably fine" at pilot scale becomes thousands of broken records at full scale.

    Migration Validation Tool Diff the pilot batch against source before scaling up
  6. Put real agents in front of the pilot data

    Support lead 2 days

    Have two or three agents work sample tickets end to end in the sandbox. They find the things reconciliation cannot see: unreadable threading, missing context, macros that no longer make sense. Fix the mapping, then re-run.

Don't move on until

  • Pilot batch reconciles to 100% on record counts
  • Agents have reviewed sample tickets and confirmed they are workable
  • Measured throughput extrapolates to a viable full-load window
05 Cutover Execute the switch inside a controlled, reversible window. 0/9

Objective All in-scope data live in Front, agents working in the new system, and a rollback path that stayed available throughout.

  1. Pre-load history before the freeze

    Data engineer 3-10 days

    Load closed tickets and contacts days or weeks ahead while Surveysparrow Ticket Management stays live. Only open tickets and the final delta need to move inside the freeze — this is the single biggest lever on window length.

    Helpdesk Migration Planner Size the freeze window from Front's real API limits
  2. Publish the runbook with times, owners and abort criteria

    Project manager 1 day

    A timed sequence: freeze start, final export, delta load, channel switch, smoke test, go/no-go, agent switch. Name who does each step and the explicit condition that triggers a rollback. Decide the abort criteria before the night, when nobody wants to be the one to call it.

  3. Freeze Surveysparrow Ticket Management and take the final delta

    Support ops 2-4 hours

    Stop new ticket creation, let agents finish in-flight replies, then export everything changed since the pre-load. Announce the freeze to the whole business, not just support — someone always tries to raise a ticket during it.

    Tickets created during an unenforced freeze land in the old system and are the most common source of permanently lost data.

  4. Load the delta and open tickets

    Data engineer 2-6 hours

    Run the delta load, then reconcile counts before touching any channel. Do not repoint email until the delta has verified — an inbound ticket arriving mid-load is far harder to untangle than a few extra minutes of freeze.

    Migration Validation Tool Confirm the final delta landed before you reopen
  5. Repoint channels and verify with live traffic

    IT / integrations 2-4 hours

    Switch email forwarding and MX or connector settings, update chat widgets and web forms, and re-authorise integrations. Then send real test tickets through every channel and confirm each lands, routes and triggers the right automation.

    Email forwarding changes can take up to a full DNS TTL to propagate — check the TTL days in advance and lower it if needed.

    Cron Expression Builder Schedule the delta syncs that run through the freeze
  6. Run the go/no-go and switch the agents

    Project sponsor 1-2 hours

    Walk the exit criteria with the decision-maker, call it explicitly, then move agents over with a named person on hand for the first few hours. Keep Surveysparrow Ticket Management read-only rather than cancelled — cancelling the old contract on day one removes your only fallback.

  7. Delete imported conversations

    via API (batch delete using the external_id prefix to identify migrated records — search for tag migrated-from-surveysparrow and delete matching conversations)

  8. Use a dedicated migration inbox

    if something goes wrong, archive or delete the entire inbox without affecting production data

  9. Keep SurveySparrow active

    until validation is complete — don't cancel your SurveySparrow subscription until you've confirmed all data landed correctly in Front

Don't move on until

  • Full historical load complete and counts matched
  • Inbound channels repointed and verified with live test tickets
  • Rollback decision point passed explicitly, not by default
06 Validation Prove the migration is complete, then close it out. 0/6

Objective Documented evidence that data, workflow and reporting all survived, and a signed acceptance.

  1. Run the full reconciliation

    Data engineer 1-2 days

    Compare source and target on every object: total counts, counts by status, counts by group, attachment counts, and field-level spot checks on a random sample. Produce one report you can hand to an auditor.

    Migration Validation Tool Reconcile Surveysparrow Ticket Management and Front record-for-record
  2. Verify field completeness, not just record counts

    Data engineer 1 day

    Re-profile the loaded data and compare null rates per field against the source profile. Matching record counts with a field that silently arrived empty is the failure mode counts alone will never catch.

    Data Profiler Prove field completeness held up through the load
  3. Rebuild reporting and compare against baselines

    Support ops 2-3 days

    Recreate your core dashboards — volume, first response time, resolution time, CSAT — and compare to pre-migration figures for the same period. Explain every variance; a changed SLA calculation is a real finding, not a rounding error.

    SLA and first-response metrics are usually recalculated from the loaded timestamps, so they will differ if any timestamp mapping was approximate.

  4. Test the workflow layer end to end

    Support ops 2 days

    Fire every trigger, automation, SLA escalation, macro and notification with a live ticket. Workflow does not migrate — it gets rebuilt — so it is untested until someone has actually watched it run.

  5. Confirm compliance and produce the audit trail

    Compliance / DPO 1 day

    Re-scan the loaded data for regulated fields, confirm retention and deletion policies are configured in Front, and file the evidence with your PII decisions from the audit phase.

    PII & Compliance Scanner Produce the compliance evidence your auditor will ask for
  6. Sign off, then decommission on a schedule

    Project sponsor 1 day

    Get written acceptance against the Discovery success criteria. Keep Surveysparrow Ticket Management read-only for an agreed period (30-90 days is typical), take a final archive export, and only then cancel. Diarise the decommission date so it does not quietly renew.

Surveysparrow Ticket Management → Front specifics

Field-level spot checks
Sample 50 records across different statuses, priorities, and custom field combinations
Comment verification
Confirm comments are attached to the correct conversation, are in correct chronological order, and public/private separation is correct
Attachment verification
Download and open at least 10 attachments from Front to confirm integrity
Tag verification
Confirm priority, status, and source tags are applied correctly
Timestamp verification
Compare created_at dates between SurveySparrow and Front for 20+ conversations to confirm timezone handling is correct

Don't move on until

  • Full reconciliation report attached to the project record
  • Reporting baselines match pre-migration figures within agreed tolerance
  • Formal acceptance signed and archive retention scheduled

Field mapping reference

The field-by-field mapping for each object. Use this as the starting point for your mapping spec.

SurveySparrow Object Equivalent 12 fields
Surveysparrow Ticket Management fieldFront fieldNotes
Ticket Conversation (imported message) 1 ticket = 1 conversation with 1+ messages
Ticket description / public comments Imported messages Prefer description_html when available
Private comments Comments on conversation Requires separate API call per comment
Contact (requester) Conversation sender / Front Contact Create or match contacts by email
Agent (assignee) Conversation assignee (teammate) Map by email; must exist in Front first
Team Inbox or Tag No direct equivalent; use inbox routing or tags
Custom Fields Conversation custom fields Limited types in Front; may require transformation
Priority Tag or custom field Front has no native priority field
Status Conversation status Map Closed/Resolved → Archived; Open → Open
SLA timestamps Dropped Rebuild SLA rules natively in Front
Parent-child tickets Custom fields + tag No like-for-like hierarchy in Front
Survey/source metadata (NPS, CSAT) Custom fields or tags Store survey ID, submission ID, score for traceability
SurveySparrow Front 16 fields
Surveysparrow Ticket Management fieldFront fieldNotes
id external_id Use as ss-ticket-{id} for idempotency
subject subject on imported message Direct map
description_html body on imported message Pass through; Front renders HTML
description body (fallback) Use if description_html is empty
requester.email sender.handle Must be a valid email
requester.name sender.name Direct map
agent.email Assignee (via teammate_id) Must pre-exist in Front
team.name Inbox ID or tag Map teams to Front inboxes
status.name Conversation status Closed/Resolved → Archived
priority.name Tag: priority:high, etc. Front has no native priority field
created_at created_at (Unix timestamp) Parse as UTC, convert to epoch seconds
updated_at N/A (informational) Log for validation
custom_fields.* Conversation custom fields Create matching fields in Front first
template_id Tag: template:{name} Preserve as tag for context
source Tag: source:{type} Preserve survey origin context
nps_score / CSAT score Custom field Requires custom field setup in Front
Create Cus m Fields in Front 8 fields
Surveysparrow Ticket Management fieldFront fieldNotes
text string Direct map
number number Direct map
dropdown enum Create enum values in Front first
date datetime Convert to ISO 8601
checkbox boolean Direct map
multi_select string Serialize as comma-separated values
formula string Compute and store as text
conditional string Flatten to resolved value

Risk matrix

Per-object risk for this pair. Plan extra validation around anything marked high.

ObjectRiskNotes
Tickets (as Conversations) medium Core ticket data can be migrated via the imported_messages endpoint with original timestamps preserved, but the structural translation from record to threaded conversation requires careful transformation logic.
Ticket Comments high Comments are not included in SurveySparrow's standard export and must be extracted individually per ticket via the Ticket Comments API, adding significant API call overhead and complexity.
Contacts low Requester contact data (name, email) maps straightforwardly to Front contacts, and Front's CSV contact import supports up to 30,000 rows per upload.
Attachments high Attachments are excluded from SurveySparrow's export files and must be downloaded individually via API, then re-uploaded to Front via multipart/form-data on imported messages.
Custom Fields medium SurveySparrow custom fields can be extracted via API, but Front's conversation custom fields support limited data types, requiring validation that each field type has a compatible equivalent.
Agent Assignments low Agent assignment data is available in both the export and API, and maps directly to Front's conversation assignee field, provided agent accounts are pre-created in Front.
Status and Priority medium SurveySparrow's numeric status and priority objects have no direct equivalents in Front's simpler Open/Archived/Deleted model, requiring lossy mapping to tags or custom fields.
SLA Data high SurveySparrow SLA fields like first_response_due and resolution_due cannot be migrated into Front's SLA rules, which must be rebuilt from scratch as native Front rule configurations.
Team Routing medium SurveySparrow's team-based ticket routing must be translated to Front's inbox or tag-based routing model, requiring pre-configuration of inbox structures and potentially new workflow rules.
Parent-Child Ticket Hierarchies high Front has no native parent-child conversation structure, so these relationships will be lost unless approximated through tags, links in conversation bodies, or external documentation.

The hard parts

What makes this specific migration difficult, beyond the mechanics.

Ticket-to-Conversation Model Translation

SurveySparrow tickets are single structured records with metadata fields, while Front conversations are sequences of threaded messages, requiring each ticket to be decomposed into at least one imported message with internal notes mapped to Front comments.

No Native Import Path

Front's history-import feature only supports Help Scout, Freshdesk, and Zendesk, and no third-party migration tool offers a SurveySparrow connector, forcing a fully custom API-based migration approach.

Comments Excluded from Exports

SurveySparrow's standard ticket export (Excel/JSON) includes ticket-level fields but omits ticket comments and attachments entirely, requiring separate API calls to the Ticket Comments endpoint for full data extraction.

Priority and Status Mapping

SurveySparrow uses numeric status and priority objects on tickets, while Front has only Open/Archived/Deleted states and no native priority field, requiring custom mapping to Front tags or custom fields.

Rate Limit Constraints Both Sides

Front enforces a default rate limit of 50 requests per minute per company, and SurveySparrow's rate limits vary by plan tier and are not publicly documented, requiring careful throttling logic in any migration script.

Parent-Child Ticket Relationships Lost

SurveySparrow supports parent-child ticket hierarchies in its UI, but Front has no native equivalent, meaning these relational structures must be flattened or approximated using tags and links.

Tools used in this playbook

All free, all run entirely in your browser — nothing is uploaded.

FAQ

Can I migrate SurveySparrow tickets to Front using a built-in importer?

No. Front has no native SurveySparrow importer — its documented history imports cover only Help Scout, Freshdesk, and Zendesk. No third-party migration tool currently offers a pre-built SurveySparrow connector either. You must extract data via SurveySparrow's REST API or file export, transform it, and import using Front's imported_messages API endpoint.

Does SurveySparrow ticket export include comments and attachments?

No. SurveySparrow's built-in ticket export (Settings → Export Data) includes ticket fields, assignee details, and requester details in Excel or JSON format, but not ticket comments or attachments. You need the Ticket Comments API endpoint (GET /v3/tickets/:id/comments) to extract those separately.

How do I handle public vs. private comments during migration?

SurveySparrow ticket comments carry a private flag. Public comments must become Front messages (imported via the imported_messages endpoint), while private comments must become Front conversation comments. If you flatten both into one type, you either lose customer history or leak internal notes.

What are Front's API rate limits for importing messages?

Front's default API rate limit is 50 requests per minute, enforced per company (not per token). Tier 2 endpoints like imported_messages allow 5 requests per resource per second. Front returns x-ratelimit-remaining and retry-after headers on every response. Creating multiple tokens does not increase throughput.

How long does a SurveySparrow to Front migration take?

For a small dataset (under 1,000 tickets), expect 1–3 days including setup, test migration, and validation. For 5,000+ tickets with comments and attachments, plan for 5–10 business days. At Front's default 50 req/min, 5,000 tickets with 2 comments each requires roughly 5 hours of API time before accounting for retries and other operations.

Or skip all of this and let us handle it

Book a 30-minute call and we'll scope your migration in a single session.