How do I import Disqus comments to VeloCMS comments?
Export Disqus XML, map comment threads to VeloCMS post slugs, preserve author attribution, run spam filtering, and get your discussion history live.
Years of reader discussion are genuinely valuable. Migrating comments from Disqus to VeloCMS's native comment system lets you own that conversation history, avoid Disqus's ad-supported model, and load pages faster (Disqus adds a significant JavaScript payload). The process is more involved than a post import, but it's doable.
Step 1 — Export from Disqus
Log in to Disqus, go to your forum's Moderation → Export (under the Tools menu). Disqus emails you a download link for a gzip-compressed XML file within a few hours. Larger forums can take up to 24 hours. The XML follows a modified WXF (WordPress extended RSS) format with Disqus-specific namespace extensions. A comment block looks roughly like this:
<item>
<title>Post Title</title>
<link>https://yourdomain.com/post-slug</link>
<dsq:thread_identifier>post-slug</dsq:thread_identifier>
<wp:comment>
<wp:comment_author>Jane Smith</wp:comment_author>
<wp:comment_author_email>[email protected]</wp:comment_author_email>
<wp:comment_date_gmt>2025-06-10 14:22:00</wp:comment_date_gmt>
<wp:comment_content>This is a great article!</wp:comment_content>
<wp:comment_approved>1</wp:comment_approved>
<wp:comment_parent>0</wp:comment_parent>
</wp:comment>
</item>Step 2 — Parse and map to VeloCMS posts
In VeloCMS admin, go to Admin → Tools → Import → Disqus XML and upload the .gz file. VeloCMS reads the thread_identifier (which is your post slug) and matches each comment thread to the correct VeloCMS post. For comments to map successfully, your VeloCMS post slugs need to match the Disqus thread identifiers exactly. If you changed slugs during migration, use the mapping table in the importer to manually match old thread identifiers to new VeloCMS post slugs.
The most common import failure is a slug mismatch: the Disqus thread identifier (post-slug) doesn't match the VeloCMS post slug (post-slug-updated). Review Admin → Posts → Slugs before importing comments. Fix any slug mismatches first — it's much harder to remap after import.
Step 3 — Author attribution
Disqus stores comment authors as either 'guests' (name + optional email) or 'Disqus users' (with a Disqus profile URL and avatar). VeloCMS imports all comments as guest comments — there's no way to automatically convert Disqus user identities to VeloCMS member accounts. Author names and email addresses carry over. If a commenter had a Disqus avatar, VeloCMS generates a Gravatar URL from their email (md5-hashed per Gravatar spec) and uses that as a fallback avatar.
Step 4 — Spam filtering on import
Disqus marks spam comments in the export as wp:comment_approved = spam. VeloCMS's importer skips these by default — they're not imported at all. Comments marked as deleted (wp:comment_approved = deleted) are also skipped. Only approved comments (wp:comment_approved = 1) import. If you want to review spam comments before the decision, check the 'Import flagged comments as pending' option in the importer, then review them in Admin → Comments → Pending.
Step 5 — Threaded comment structure
Disqus comments are threaded with wp:comment_parent pointing to the parent comment's ID. VeloCMS preserves this nesting up to 3 levels deep. Deeper nesting (Disqus supports unlimited depth, which some comment sections use heavily) is flattened at the 3rd level — replies to 4th-level comments become 3rd-level replies. In practice, very few comment sections have meaningful conversation beyond 3 levels.
Step 6 — Verify the import
After the import completes, the importer shows a summary: total comments processed, imported, skipped (spam), and failed (slug mismatch). Click through your top 5 most-commented posts and verify the comment threads display correctly with proper nesting and author names. Check that comment dates show correctly — Disqus exports dates in UTC; VeloCMS displays them in the blog's configured timezone.
Step 7 — Disable Disqus after verification
Once you've verified the import looks good, disable the Disqus embed on your old CMS and make sure VeloCMS's native comment widget is active. VeloCMS comments load client-side without the 500KB+ JavaScript bundle that Disqus loads — your page speed improves noticeably. Enable comment notifications in Admin → Settings → Comments so you get email alerts for new comments.
Frequently asked questions
- Can I import comments from other platforms (WordPress native comments, Hyvor Talk)? WordPress native comments import from the same WXR file as posts — VeloCMS reads them automatically during a WXR import. Hyvor Talk exports a similar XML format; contact support for assistance.
- What about comment voting / likes from Disqus? Vote counts from Disqus aren't included in the export. VeloCMS doesn't currently have comment voting anyway.
- Can Disqus commenters log in with their existing Disqus accounts? No — once you switch to VeloCMS native comments, new comments use VeloCMS member login or guest posting (name + email). Existing commenters' historical comments still show their names.
- Is there a way to moderate imported comments? Yes — Admin → Comments shows all comments with approve/reject/delete actions. You can bulk-select and delete any imported comments you don't want.
- Will my comment count from Disqus carry over to the post's 'X comments' indicator? Yes — the comment count in VeloCMS is calculated live from the imported comment records, so your posts will show the correct historical count immediately after import.