Ha Bui
Ha Bui  -  CMS
Aug 24, 2022
visibility 3127
star star star star star
(3 votes)

How to integrate TinyMCE cloud plugin with EPiServer

Hi everyone,

Recently, we got many questions regarding How to integrate the TinyMCE external cloud plugin (SpellCheckerPro for instance) with EPiServer CMS and EPiServer.CMS.TinyMCE add-on.

Did you try that before? And got a headache with kind of below errors?

Don't worry! No more headaches with the recent release of EPiServer TinyMCE!

For the SpellCheckerPro plugin then few lines of the configuration below will help you easy to integrate with EPiServer CMS:

  1. Prerequisites
    TinyMCE cloud API Key
  2. EPiServer TinyMCE Initialization
    context.Services.Configure<TinyMceConfiguration>(config =>
                {
                    config.Default()
                        .AddExternalPlugin("tinymcespellchecker", "https://cdn.tiny.cloud/1/<YOUR_API_KEY>/tinymce/4.9.11-104/plugins/tinymcespellchecker/plugin.min.js")
                        .AddEpiserverSupport()
                        .Toolbar("spellchecker language spellcheckdialog")
                        .AddSetting("spellchecker_rpc_url", "https://spelling.tiny.cloud")
                        .AddSetting("spellchecker_api_key", "<YOUR_API_KEY>");
                }

    Note: Because EPiServer CMS TinyMCE is using TinyMCE v4 so please choose the correct version of the SpellCheckerPro plugin. Otherwise, it won't work as expected!

  3. Screenshots

Easy right? I hope that helped you!

Aug 24, 2022

Comments

Gaurav Bhatia
Gaurav Bhatia Aug 29, 2022 07:08 AM

Thanks for posting this!

I have one question: why do we need to mention the "spellchecker_rpc_url" setting? I think its already referenced in the plugin itself (https://cdn.tiny.cloud/1/<YOUR_API_KEY>/tinymce/4.9.11-104/plugins/tinymcespellchecker/plugin.min.js).

error Please login to comment.
Latest blogs
Composition Over Inheritance: Why Your Content Contract Is Not a Base Class

Inside the structural conformance pattern in SaaS CMS — from server-side inheritance to pipeline governance. A contract in Optimizely SaaS CMS is...

Vipin Banka | Sep 19, 2026

Optimizely Opti ID Integration: Why the API Key Was Missing from the DXP Management Portal

While working on an Optimizely CMS 12 Opti ID integration recently, we ran into an issue that initially appeared to be related to SSO authenticatio...

Madhu | Sep 18, 2026 |

Extending a Contract: What You Can Override

Contracts share fields across content types — but not every field setting can be overridden. Push the same contract onto several components, and CM...

Chirag Khanna | Sep 18, 2026 |

Building a Blazor Server UI Inside the Optimizely CMS 13 Admin Shell

What I learned shipping a Blazor Server UI inside Optimizely CMS 13 — Razor components in a NuGet package, the Blazor hub next to MapContent(),...

Stanisław Szołkowski | Sep 17, 2026 |