Last updated: February 18th 2020 ( Improve this guide )

Naming System Configuration

We can configure different naming systems in Embark. In this guide we’ll explore how this is done using the Ethereum Name Service.

Configuration basics

Embark checks our configuration in config/namesystem.js by default. A naming system configuration isn’t crucial to run Embark, so this only needs to be enabled when planing to use a naming system.

When using ENS as our provider, we can set the register section to pre-register sub-domains.

This feature is only available in the development environment:

module.exports = {
default: {
enabled: true,
available_providers: ['ens', 'ipns'],
provider: 'ens',
register: {
rootDomain: 'embark.eth',
subdomains: {
// List of subdomains.
// The key is the name (eg: status -> status.embark.eth)
// The value is the address to where the subdomain points
'status': '0x1a2f3b98e434c02363f3dac3174af93c1d690914'


  • rootDomain: The ENS domain. It gets registered using your default account
  • subdomains: Object were the key is the subdomain name and the value is the address to set to it

Special configurations


For subdomains, you can set the address as one of your contracts address using it’s name prefixed by a dollar sign ($).

subdomains: {
'contract': '$MyContract'

Now, assuming your rootDomain is embark.eth, contract.embark.eth will resolve to the deployed address of MyContract.


Similarly to $Contract, using $accounts let’s you set the subdomain address to one of your accounts address.

subdomains: {
'account': '$accounts[0]'

Now, assuming your rootDomain is embark.eth, account.embark.eth will resolve to address of your first (index 0) account (aka defaultAccount).