Disqus

Add Disqus comments to Webflow through a Code Embed so every CMS item gets its own thread, then sync comments into the CMS with Zapier, Make or the APIs.

→
↗
►
↓
←
↑
Install app
→
↗
►
↓
←
↑
View website
→
↗
►
↓
←
↑
View lesson
→
↗
►
↓
←
↑
A record settings
→
↗
►
↓
←
↑
CNAME record settings
Disqus

Site visitors can't leave comments on a Webflow site out of the box. The comments feature in Webflow is for your team: Workspace members, guests and reviewers leave feedback on the site and on Collection items. Readers of a blog built on the Webflow CMS have nowhere to reply under a post unless you add a third-party system. Disqus hosts that layer and loads it into any page through a JavaScript snippet.

Connecting Disqus through a Code Embed gives every CMS item its own moderated thread. Spam filtering and notifications run in the Disqus Admin. Disqus New Comment → Webflow Create Item workflows move comment data into the CMS, while a Make scenario can connect Webflow Watch Events → Disqus Create a thread, and the APIs can open a thread when you publish an item.

This setup is for content and marketing teams that publish from the Webflow CMS and want reader discussion under posts. Agencies and freelancers shipping client blogs use the same pattern. Documentation owners and course creators get threaded Q&A and a moderation queue without building either one.

How to integrate Disqus with Webflow

What is Disqus? Disqus is a hosted commenting platform that embeds comment threads under web pages through a JavaScript snippet. Its moderation panel includes automated rules, pre-moderation, banning and a toxicity filter built on Google's Perspective API. It also adds reactions, media embeds, email notifications and engagement analytics.

Teams pair the two when a Webflow site needs discussion under CMS content, and nobody has to build a comment or moderation system from scratch. Comments render inside the Disqus embed rather than in your page's HTML. Disqus says it has worked with search engines to keep comments crawlable but that indexing is ultimately out of its hands, so treat the integration as a reader-experience feature rather than an SEO lever.

There are three ways to connect them. The Code Embed element places the universal embed code on static pages or Collection page templates, with CMS fields bound into the config variables. Automation platforms such as Zapier, Make, viaSocket and n8n connect Disqus operations with Webflow triggers or actions, and Make can also run Webflow Watch Events → Disqus Create a thread. The Webflow and Disqus APIs give you full control over thread creation, comment sync and moderation, but need server-side development.

Add Disqus comments with Code Embed elements

Paste Disqus's universal embed code into a Code Embed to load a thread on any static page or Collection template. Custom code requires a paid plan (see the plan FAQ below). The element takes HTML, CSS and JavaScript up to 50,000 characters, but no <html>, <head> or <body> tags. Site-wide scripts such as the comment count loader go in head and body code. There's no Disqus app on the Webflow Marketplace, so the embed is the install.

To prepare the Disqus side:

  1. Register your site at the Disqus site registration page and choose a shortname. The shortname identifies your community and you can't change it after registration, per Disqus's shortname article.
  2. Confirm the shortname under Admin > Settings > General.
  3. Set a trusted domain under Admin > Setup > Advanced, per Disqus's trusted domains article. Enter example.com without www, a protocol or a path; the base domain covers its subdomains, per the installation troubleshooting guide. Disqus recommends a separate shortname for staging (see the FAQ below). If you test on yoursite.webflow.io with your live shortname instead, add that domain too. Disqus's Web Integration guide says to list every domain the embed loads on, "or else you'll block yourself."

Once the shortname is live, the Disqus Admin gives moderators these controls:

  • Bulk moderation: The moderation panel applies Approve, Delete and Spam to many comments at once, with pending-reason filters and Trust User or Ban User controls.
  • Email moderation: Moderators can approve, delete or mark a comment as spam by replying to its email notification with a single command word, without opening the site.
  • Reactions: Reactions switch on under Admin > Settings > Reactions, with a minimum of 2 and a maximum of 6.
  • Rich media: Commenters can embed media links from YouTube, Vimeo, X, Facebook, Instagram photos, Bluesky, Giphy, Imgur, Google Maps and SoundCloud.

Comment threads load asynchronously into the disqus_thread div, so the steps below only decide where that div sits and which identifier it sends.

Embed a single thread on a static page

A static page such as a changelog, an announcement or a landing page gets one thread tied to one identifier. The disqus_thread div sits above a script that loads embed.js from your shortname's subdomain. Disqus's configuration variables article recommends setting this.page.identifier even here, because the URL can change when you rename the page or change domains.

To embed the thread:

  1. Open the Add panel and drag a Code Embed to where the comments should appear.
  2. Paste the snippet below, replace EXAMPLE with your shortname, and set the three config values for this page.
  3. Click Save & Close and publish. A script shows as a placeholder in Webflow, so check the thread on the published page.

This is Disqus's universal embed code with the disqus_config block filled in:

<div id="disqus_thread"></div>
<script>
  var disqus_config = function () {
    this.page.url = 'https://www.example.com/changelog';
    this.page.identifier = 'changelog';
    this.page.title = 'Changelog';
  };
  (function() {
    var d = document, s = d.createElement('script');
    s.src = 'https://EXAMPLE.disqus.com/embed.js';
    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
  })();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>

this.page.url must be an absolute URL with the protocol. A relative URL may stop Disqus from loading at all.

Generate a unique thread for each Collection page

A Code Embed on a Collection page template renders on every item in that Collection. Dynamic data in embeds lets you bind CMS fields into the config variables. The binding shows as a placeholder token in the editor and resolves to the real value on the published page. Bind the identifier to a value that never changes after publishing. BRIX Templates, a third-party agency, uses a plain-text field called "Comment thread ID" for this. A slug can be edited later, and a URL-keyed thread then goes missing.

To set up per-item threads:

  1. Add a plain-text field to the Collection, for example "Comment thread ID". Give every item a value you never edit after publishing.
  2. Open the Pages panel > CMS Collection pages and select the Collection page template.
  3. Drag a Code Embed below the post body and paste the template snippet below.
  4. Click Edit code, delete COMMENT_THREAD_ID, place your cursor between the empty quotes, click the purple dot on that line and choose the Comment thread ID field. Repeat for SLUG with the Slug field and TITLE with the Name field.
  5. Click Save & Close and publish to the webflow.io staging subdomain using a staging shortname (see the staging FAQ below). Swap in your live shortname before publishing to the custom domain.

The template snippet uses placeholders where the CMS fields go:

<div id="disqus_thread"></div>
<script>
  var disqus_config = function () {
    this.page.url = 'https://www.example.com/blog/SLUG';
    this.page.identifier = 'COMMENT_THREAD_ID';
    this.page.title = 'TITLE';
  };
  (function() {
    var d = document, s = d.createElement('script');
    s.src = 'https://EXAMPLE.disqus.com/embed.js';
    s.setAttribute('data-timestamp', +new Date());
    (d.head || d.body).appendChild(s);
  })();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>

Each item now sends its own identifier and absolute URL, which is what Disqus's configuration variables article asks for.

Show comment counts in a Collection List

A blog index built with a Collection List can show a count such as 12 Comments under each card using Disqus's count script. The script finds elements carrying an identifier or URL and replaces their text with the live count. Disqus's comment count guide highly recommends identifier lookups over URL lookups, because URLs change. The Collection List therefore needs the same Comment thread ID field the template passes to this.page.identifier.

To add counts:

  1. Open Page settings on the blog index page and paste the count script below into the Before </body> tag field under Custom code. Change EXAMPLE to your shortname.
  2. Inside the Collection List item, add a Code Embed containing the count element below.
  3. Click Edit code, replace COMMENT_THREAD_ID with the Comment thread ID field through the purple dot, and publish.
  4. For count links instead of spans, append #disqus_thread to the article URL in each link and give every link some text, which the script replaces with the count.

The count script and the count element, from Disqus's guide:

<script id="dsq-count-scr" src="//EXAMPLE.disqus.com/count.js" async></script>

<span class="disqus-comment-count" data-disqus-identifier="COMMENT_THREAD_ID">0 Comments</span>

For cards that load after the page renders, call DISQUSWIDGETS.getCount({reset: true}); to refresh the counts.

Check ads, tracking and consent before you launch

Disqus is not a consent-free embed, and the free plan carries ads. Disqus's pricing and plans article describes the Basic plan as "Free, ads-supported with a Top ads placement required." The paid Plus plan adds the option to turn ads on and off. Disqus's privacy policy is direct about the model: "Advertising is the predominant way Disqus makes money." It says Disqus shares cookie IDs, IP addresses and browsing activity with third-party ad partners, including data collected on sites where its comments run.

The code matches the policy. We read the embed.js Disqus serves for its documented EXAMPLE shortname in October 2026. Its per-site config carries Taboola ad placement URLs, and the script holds code that can set year-long first-party cookies on your domain, load a LiveConnect identity tag from d-code.liadm.com, and start a VigLink link-affiliation client. Most of that runs only when the comment frame tells it to, and the script reads an IAB TCF or GPP consent signal from your page when a consent platform exposes one. Disqus's documents don't say whether turning ads off also stops the identity and affiliate code, so check the network panel on your own published page.

Treat the comment embed like an ad tag in your consent setup and hold it until a visitor accepts the matching categories, using a consent platform such as Cookiebot. Webflow's consent management endpoints won't do this for you: they apply only to Webflow Analyze and Optimize.

Connect with Zapier, Make, or other automation tools

Zapier, Make, viaSocket and n8n each publish a Disqus + Webflow pair page. Archiving comments as CMS items lets editors review discussion alongside posts in the CMS. You build the trigger and action yourself on each platform. The n8n Disqus node exposes four read operations on the Forum resource and has no trigger.

The workflows that fit this pairing:

  • Comment archive: Disqus New Comment → Webflow Create Item or Webflow Create Live Item (Zapier, viaSocket) archives each comment as a CMS item, and in Make the pairing is Disqus Watch comments → Webflow Create an Item.
  • Flagged-comment log: Disqus New Flagged Comment → Webflow Create Item on Zapier logs flagged comments to a Collection. Set the action's Is Draft field to true, because Zapier creates non-draft items by default.
  • Thread on publish: Webflow Watch Events → Disqus Create a thread can be configured in Make by combining the listed Webflow trigger and Disqus action, such as for a CMS item publish.
  • Forum reads in n8n: n8n can run Webflow Collection Item Created → Disqus Forum read operations for threads or posts, and its HTTP Request node reaches other endpoints.

viaSocket lists Disqus New Comment and New Flagged Comment triggers with Webflow Create Item and Create Live Item actions, but no Disqus thread-creation action. Make is the only platform listed here that provides both the Webflow Watch Events and Disqus Create a thread modules. Each archived comment uses one CMS item.

Build with the Webflow and Disqus APIs

The API path covers what the embed and the automation platforms can't. Examples include pre-creating threads with your own identifiers, archiving comments into the CMS on a schedule, and moderating from your own back end. Disqus's Using the API guide calls its API a supplemental data source that won't replace the comments embed. Everything below runs on a server or serverless function, because custom code supports only HTML, CSS and JavaScript.

Four parts of the two APIs do the work:

  • Disqus threads and posts: The Disqus Web API 3.0 handles threads, posts, forums and users, including posts/list for reading comments and threads/create for opening threads.
  • Disqus moderation: The posts/approve, posts/remove and posts/spam endpoints let your back end moderate comments without opening the Disqus Admin.
  • Webflow Data API: Webflow's Data API handles CMS collections and items, with staged and live create, update and publish operations.
  • Webflow webhooks: Webflow webhooks send real-time events such as collection_item_published and site_publish to an endpoint you control.

Disqus and Webflow use different authentication. Disqus's requests reference describes two keys: a public key sent as api_key for browser calls from a domain on the application's domain list, and a secret key sent as api_secret for server-side calls. posts/approve and posts/spam require you to be a moderator on the forum, and the OAuth admin scope grants forum moderation capabilities per the permissions reference. Webflow calls use a bearer token from a Site token or an OAuth app.

Create a Disqus thread when a CMS item publishes

A webhook on collection_item_published lets your endpoint open the Disqus thread before any reader lands on the page, with the exact identifier, URL and title you choose. The event's payload object carries id, siteId, collectionId and fieldData with name and slug. Pre-creating is optional, because the embed creates a thread on first load using this.page.title. It gives you control over the slug and title Disqus stores.

To implement this:

  1. Register an API application to receive your Public and Secret keys, following Disqus's API application guide. Applications can't be moved between Disqus accounts later.
  2. Register the webhook with POST https://api.webflow.com/v2/sites/{site_id}/webhooks and a body of {"triggerType": "collection_item_published", "url": "https://your-endpoint.example.com/disqus"}. The create webhook reference lists the sites:write scope.
  3. On each delivery, verify the signature as Webflow's webhooks guide describes. Build the string timestamp + ":" + JSON.stringify(request_body) using x-webflow-timestamp, compute an HMAC-SHA256 and compare it to x-webflow-signature. An OAuth app signs with its client secret, and a webhook created with a site token after April 14, 2025 has its own secret key. Reject requests whose timestamp is more than 5 minutes old.
  4. Read fieldData.name, fieldData.slug and your Comment thread ID field from the payload. If the field isn't present, fetch the item with GET /collections/{collection_id}/items/{item_id}.
  5. Call POST https://disqus.com/api/3.0/threads/create.json, which requires authentication. Set forum to your shortname and title from fieldData.name, both required. Set identifier from the Comment thread ID field, url built from the slug and slug from fieldData.slug. The threads/create reference caps identifier at 300 characters, url at 500 and slug at 200.
  6. Return HTTP 200. Any other response triggers up to three more retries at 10-minute intervals.

threads/create is marked Beta and "subject to change". Wrap the call in error handling and treat a failed create as non-fatal, because the embed still creates the thread on first load.

Sync Disqus comments into a Webflow CMS Collection

Disqus limits webhooks to Business clients, with one per site, and says they "can only be created by the WordPress plugin", so a Webflow site can't receive comment events directly. Polling posts/list on a schedule is the practical alternative, and server-side calls authenticate with your secret key as api_secret. It accepts since as a Unix timestamp or ISO datetime and pages results with a cursor object. Each post includes id, message, raw_message, createdAt, author, thread, isApproved, isSpam and isFlagged.

To implement this:

  1. Call GET https://disqus.com/api/3.0/posts/list.json?forum=SHORTNAME&since=LAST_RUN&order=asc&limit=100&api_secret=SECRET_KEY from a scheduled function. order defaults to desc, so set asc explicitly. include defaults to approved; pass include=unapproved for the pending queue, which may need moderator authentication.
  2. Follow cursor.next while cursor.hasNext is true, and store the latest createdAt as the next since value.
  3. Dedupe against existing items with GET https://api.webflow.com/v2/collections/{collection_id}/items, which returns up to 100 records per request, or keep a local map of Disqus post IDs.
  4. Write new comments with POST https://api.webflow.com/v2/collections/{collection_id}/items/live. The body needs fieldData with name and slug plus your comment fields, mapped from each post's message, author, createdAt and thread. Live items publish immediately. For staged items, post to /collections/{collection_id}/items/insert, which creates drafts, then call POST /collections/{collection_id}/items/publish with the itemIds; that call returns 202 with publishedItemIds and errors.
  5. For edits, call PATCH https://api.webflow.com/v2/collections/{collection_id}/items with up to 100 items per request, each carrying its Webflow id. Each archived comment uses one CMS item, so a busy forum can reach your plan's item limit quickly.

Run the sync on a schedule that matches your comment volume, and keep the Disqus Admin as the place where moderation decisions happen.

What you can build with the Disqus Webflow integration

Most builds start with the Code Embed on a Collection template and add a sync or a count layer on top:

  • Per-post blog comments with index counts: A Code Embed on the blog post Collection page template gives every article its own thread, and a count element in the index Collection List shows a count such as 8 Comments under each card.
  • Documentation Q&A: Help-article Collection pages carry a thread where customers ask questions and other users answer. Moderators work the "Contains a link" pending-reason filter to review link-heavy comments.
  • Course discussion pages: Lesson Collection pages each get a stable thread keyed to a Comment thread ID field, so threads don't split when a lesson slug changes.
  • Flagged-comment review queue: A Zapier workflow runs Disqus New Flagged Comment → Webflow Create Item, and editors review the logged list in the CMS before acting in the Disqus Admin.

Start with our CMS API guide to script the archive side. If you manage the site from an AI client, the Webflow MCP server can add the Comment thread ID field to a Collection and fill it across existing items before you paste the embed.

Frequently asked questions

  • You need a Core, Growth, Agency or Freelancer Workspace, or an active Site plan. The Disqus embed counts as custom code, and both the Code Embed and the head and body custom code articles list those plans. The free Starter Workspace isn't among them. If you later downgrade a Site plan and your Workspace isn't on a paid plan, the embed stays on the published site, but you can't view or edit it until you're back on a paid Site plan, per the plan downgrade article.

  • Usually because several pages were attached to one Disqus thread when it was created. Disqus calls this identifier conflict. Disqus's identifier conflict article lists three causes: the same this.page.identifier or this.page.url on different pages, previewing pages before publishing, and loading the embed on a copied page before changing the variables. On Collection page templates, the identifier is often a literal string where a bound CMS field should be. Open the Code Embed and confirm the purple field token sits inside the identifier and URL values. Disqus's fix is to set a unique URL and a unique identifier on each affected page, which creates a new thread for each one.

  • It can, but Disqus recommends a separate shortname for staging. Its staging best practices use staging-gotham versus gotham as the example. They say not to reference the live shortname on preview, staging or development sites. One Code Embed publishes to both domains. With a staging shortname, you swap the shortname in the embed before publishing to the custom domain. The Webflow staging subdomain exists for this kind of custom-code test. You can publish to it without pushing to the custom domain. If you test with your live shortname and use trusted domains, add yoursite.webflow.io under Admin > Setup > Advanced. Disqus doesn't document *.webflow.io handling.

  • The rest of the page finishes loading before Disqus. The Disqus common questions page says Disqus loads asynchronously after the rest of the site has finished. Performance tests can still report it as slow. Per the performance test article, the realtime notification connection to event.js closes after 30 seconds and reopens. Test tools misread that as a long request, and Disqus says visitors see no loading impact. By default, 50 comments load on desktop and 20 on mobile, per the appearance customizations article. A Load More Comments button adds the rest in batches of the same size. Third-party integrations and embedded content can slow page loads (see the site speed guide). Place the embed below the article body.

  • Yes, through an automation platform or a scheduled poll, because you can't create a Disqus webhook for a Webflow site. The Disqus webhooks article restricts webhooks to Business clients and says only the WordPress plugin can create them. Without code, a Zapier workflow can run Disqus New Comment → Webflow Create Item or Webflow Create Live Item. Make supports Disqus Watch comments → Webflow Create an Item, and viaSocket lists Disqus New Comment → Webflow Create Item. For a code path, start with the posts/list reference and the Create Live Items endpoint. Then page with cursors as the API section above describes.

Disqus
Disqus
Joined in

Description

Add Disqus comment threads to Webflow static pages and CMS Collection pages with a Code Embed element. Use Disqus New Comment → Webflow Create Item in Zapier or configure Make with Webflow Watch Events → Disqus Create a thread; build custom workflows with the Disqus API and Webflow Data API.

→
↗
►
↓
←
↑
Install app

This integration page is provided for informational and convenience purposes only.


Other Customer engagement integrations

Other Customer engagement integrations

HelpDesk

HelpDesk

Connect HelpDesk with Webflow to turn form submissions into trackable support tickets with automated routing, agent assignment, and status tracking.

Customer engagement
Learn more
Pensil

Pensil

Embed Pensil community forums, live sessions, and discussion boards directly in your Webflow site.

Customer engagement
Learn more
Customer.io

Customer.io

Connect Customer.io, a customer engagement platform, with Webflow to turn form submissions and page visits into behavioral triggers for automated email, SMS, and in-app messaging campaigns.

Customer engagement
Learn more
Copilot

Copilot

Connect Microsoft Copilot Studio, a platform for building and deploying custom AI agents, with Webflow to add conversational chat interfaces for support, lead qualification, and FAQ automation.

Customer engagement
Learn more
ChatGPT

ChatGPT

Manage your Webflow site from ChatGPT through the Webflow MCP server, or build a custom OpenAI workflow into your site.

Customer engagement
Learn more
Discord

Discord

Connect Discord, a communications platform built around servers and channels, with Webflow to route form submissions, orders, and CMS events into channels or embed live server activity on a page using widgets, automation platforms, or APIs.

Customer engagement
Learn more
WhatsApp

WhatsApp

Connect WhatsApp, Meta's business messaging platform, with Webflow to add chat buttons, trigger automated messages from form submissions and orders, and build real-time customer communication into any page.

Customer engagement
Learn more
YourGPT Chatbot

YourGPT Chatbot

Connect YourGPT Chatbot, a no-code AI support platform, with Webflow to deploy an AI agent that answers questions and captures leads using the app or embeds.

Customer engagement
Learn more
FullContext

FullContext

FullContext provides an embeddable JavaScript solution that handles conversational interfaces through a single code snippet, eliminating the need to build chat infrastructure or maintain form validation logic.

Customer engagement
Learn more

Related integrations

No items found.

Get started for free

Try Webflow for as long as you like with our free Starter plan. Purchase a paid Site plan to publish, host, and unlock additional features.

Get started — it’s free