Solved PluginID / ModuleID

Upto now I haven't had the need to create new plugin IDs since the introduction of the new forum. All I did was convert existing plugins to R20. Using the classic API I kept using the originally obtained plugin IDs, but used some made-up module ID for the projectdefinition.

Now that I am needing new plugin IDs, I am wondering what to do.
The plugin ID generation page on the new forum mentions the following:
The suggested MAXON API domain space, based on your profile, is: use.yourdomain.C4DS.*

In my projectdefinition files I made up the moduleID as com.c4ds.<plugin-name>
based on the examples from the SDK which use net.maxonexample.cinema4dsdk

If the asterisk mentioned in the suggested domain space is placeholder for the pluginname, then I end up with 4 labels in the module ID. Or should "use.yourdomain" be seen as a single label and not 2?
Not sure what to do here.

Hi Daniel, thanks for reaching us on this issue.

With regard to the generation of IDs for plugins or maxon registries the way to go is easy:

  • Standard IDs can be generated easily by providing a label and clicking on Get PluginID.
  • Maxon IDs instead are created assembling a string containing a reverse domain and the identifier you choose.

In the case of a new Maxon ID in order to grant as much as possible the uniqueness of the ID, it's highly recommended that you own the domain from which you extract the reverse notation.

Let's depict a use case with regard to this last scenario:

  • Mr. Developer is a freelance (but this also applies to a company) owning registered domain;
  • Mr. Developer has then registered an account on plugincafe and has set in his profile Website:
  • Then he wants to register a new maxon ID and as soon as he hits the pluginID creation page he's provided with
  • Mr. Developer will then use xyz.uvw.<identifier01>, xyz.uvw.<identifier02> and so on, paying attention to avoid conflicts.

Alternatively Mr. Developer doesn't own a domain and has NOT set a website in his profile. Then he will be provided with the standard suggestion
0_1547479302158_a35472c1-a069-4a13-8633-da244ef14dd6-image.png in order to use in his code use.yourdomain.mrdeveloper.<identifier01>, use.yourdomain.mrdeveloper.<identifier02> and so on, paying attention, even in this case, to avoid duplicated IDs.

Hoping this helps to understand the whole picture, feel free to come back with any further question.


OK, thanks for the examples.
This explains a lot.
Guess I was confused by the "use.yourdomain" to represent 2 labels of a domain space, but actually is just one: "be" in my case, should I have a domainspace registered in Belgium. Right?

Oh, wait ... now I get it (I think).
Assuming "" you indeed do have a 2-label domain.
Just for the record, the reverse domainspace name would it then be:<identifier01>


Or am I all wrong ... again?

Hi Daniel,

having a registered domain it's not mandatory but it's indeed suggested in case your plugins are supposed to be sold.

Assuming you own, your suggested reverse domain to use to generate maxon IDs is*, which then will allow you to generate,, and so on...

The most important thing a developer should put attention to is to do the best to avoid potentially ID duplication and a good way to start doing it is to own a domain.

Best, Riccardo

Hi Riccardo!

Could you explain how the reverse-domain assembled IDs are used? I could not find any ressources for that.
In a different post you mentioned that the traditional plugin IDs will eventually be replaced by reverse-domain assembled ID.
Is there even a point in registering plugin IDs anymore, or should one use the new style?
And how would one go about doing that?


Hi Boony2000, thanks for joining the discussion.

With regard to how reverse-domain IDs are used I recommend you to read the Custom ID sub-section in the Plugin Development section of C++ API Documentation.

Custom IDs are relevant only in the context of taking advantage of the MAXON API and have nothing to do with plugin registration which STILL requires the old-known numerical IDs delivered here.

Looking forward further comments if something is still unclear, give best.

Thanks Riccardo, I will look into that.