Bring historical discussions into Comnto by either uploading a Disqus export or providing a JSON file that matches the Comnto import shape. This guide walks through the expected schema, mapping tips, and the end-to-end import flow.
Create a single JSON object with topics and comments arrays. Topics describe the threads you want to recreate, and comments reference those topics by topic_id.
Must match one of the topic id values. Comments referencing unknown topics are skipped.
author_name
string
Recommended
Display name shown beside the comment.
author_email
string
Recommended
Needed to match existing user accounts and to preserve gravatars. A placeholder address is fine if you cannot export real emails.
body
string (HTML)
Yes
Allowed tags: <p>, <strong>, <em>, <u>, <s>, <code>, <pre>, <a>, <br>, <span>. Anything else is stripped during sanitisation, so convert advanced formatting (lists, quotes, embeds) into one of the supported tags before exporting.
created_at
string (ISO 8601)
Recommended
Original publish date. Use UTC or include an explicit offset.
parent_id
string
Optional
Set to the source comment id to preserve reply chains. Leave empty for top-level comments.
Extract topics – Gather the unique thread identifiers, titles, and canonical URLs from your source platform. Normalise slugs so they match the identifiers you will render inside the widget later.
Link comments – Map each comment to its topic id. When your export lacks a topic reference, derive one from the article URL or slug to avoid mismatches.
Normalise timestamps – Convert all dates to ISO 8601 strings in UTC. Double-check that time zone offsets match the original data.
Preserve reply order – Include a stable parent_id for replies so nested threads show correctly after import.
Upload the file – In the Comnto dashboard, open Comments → Imports and upload either the Disqus XML export or your custom JSON file. Large imports may take several minutes to queue.
Monitor progress – The dashboard shows queued, running, and completed jobs.
Verify the result – Spot-check a few topics in the moderation UI and on a staging embed. Confirm that identifiers match the slugs you intend to use in production.
If you need assistance importing formats other than Disqus or JSON, share a sample export with support and they will advise on the quickest mapping approach.
Import skipped comments – Unsupported HTML tags are stripped during sanitisation; if the body becomes empty, or if a comment lacks a topic_id or references an unknown topic, the import omits it.
Replies appear as top-level comments – Keep each reply's original parent_id pointing to another comment in the payload, and sort comments oldest first so parents always precede their replies.
Duplicate topics after embedding – Match the JSON identifier to the widget's data-topic (or API topic) value; mismatches create separate threads.
Importing Comments
Bring historical discussions into Comnto by either uploading a Disqus export or providing a JSON file that matches the Comnto import shape. This guide walks through the expected schema, mapping tips, and the end-to-end import flow.
Supported Source Formats
.xml..jsonfiles and ignores unknown keys.JSON Structure Overview
Create a single JSON object with
topicsandcommentsarrays. Topics describe the threads you want to recreate, and comments reference those topics bytopic_id.Topic Fields
idtopic_id.identifiertitleurlcreated_atComment Fields
topic_ididvalues. Comments referencing unknown topics are skipped.author_nameauthor_emailbody<p>,<strong>,<em>,<u>,<s>,<code>,<pre>,<a>,<br>,<span>. Anything else is stripped during sanitisation, so convert advanced formatting (lists, quotes, embeds) into one of the supported tags before exporting.created_atparent_idExpanded Example
Preparing Your Export
parent_idfor replies so nested threads show correctly after import.Running the Import
If you need assistance importing formats other than Disqus or JSON, share a sample export with support and they will advise on the quickest mapping approach.
Validation Checklist
topic_idexists intopics.bodyonly contains safe tags; scripts and inline event handlers have been removed.Troubleshooting
topic_idor references an unknown topic, the import omits it.parent_idpointing to another comment in the payload, and sort comments oldest first so parents always precede their replies.identifierto the widget'sdata-topic(or APItopic) value; mismatches create separate threads.