entri.showEntri(config)

This method launches the Entri modal window. config is an object with the following properties:

PropertyTypeRequired?DefaultDescription
applicationIdstringYesN/AThe ID of your application (set in the dashboard)
dnsRecordsarray of DNSRecord objects (see below)YesN/AThe DNS records you wish to configure for your users (see below)
tokenstringYesN/AA JSON web token. Must be fetched in each session, see Token creation (JWT).
applicationUrlstringOnly when using Secure or PowerN/ASets the applicationUrl for Power. This is the specific application URL that you would like to render on the customer’s custom domain. Also known as an origin server or origin URL.
applicationNamestringNonullThe company name that will be shown in the initial screen’s welcome message.
defaultSubdomainstringNo""If you would like to pre fill the subdomain field with text then enter the desired sub domain here.
enableDkimbooleanNofalseIf your application requires users to set up DKIM through their email provider (and your app does not send emails directly), enable this. This is common for applications that provide email automation using an external service like Google Workspace or Microsoft 365.
forceManualSetupbooleanNofalseForces Entri to use the manual setup flow. If set to true then the prefilledDomain becomes required.
forceSubdomainbooleanNofalseIf your application requires subdomains, enable this
localestringNoenTo load Entri in a specific language. Supported languages include: en, es, pt, pt-br,pt-pt, fr, it, de, nl, pl, tr, ja.The pt locale defaults to Brazilian portuguese (pt-br).
hostRequiredbooleanNo, unless you use the {SUBDOMAIN} variabletrueIf the {SUBDOMAIN} variable is used but is null (no subdomain inputted by the user) then the {SUBDOMAIN} value will default to be www. See Dynamic configuration variables based on the user-inputted domain.
manualSetupDocumentationstringNo""Where you currently provide documentation on how to set up DNS. If users are trying to set up their DNS manually and need help, we will send them to this page. e.g. <https://example.com/dns-setup\>. This link is disabled when using the propertydisableManualSetupDocumentationLink:true in the whiteLabel’s configuration.
overrideSPFbooleanNofalseForces the SPF record override in case there is a pre-existent one instead of merging it. This feature is not supported by Cloudlare and Ionos providers.
powerbooleanNofalseEnables Entri Power. Requires adoption of Entri Power.
prefilledDomainstringNo, unless forceManualSetup is set to trueN/AA domain to pre-fill if you’ve collected it before the Entri modal, e.g. example.com
secureRootDomainbooleanNofalseCreates a certificate for the root domain and points its A records to Entri secure servers. Requires adoption of Entri Secure.
supportForSubdomainsbooleanNotrueIf your application allows subdomains, enable this
userIdstringNoN/AA unique ID so that you can match Entri webhook events to the user
wwwRedirectbooleanNofalseWhen feasible, Entri will automatically redirect site.com to www.site.com using the preferred method of the DNS provider. Certain providers prevent Entri from automatically setting this up. When that is the case, Entri shows a helper UI to the user that explains how to do this manually.
validateDmarcbooleanNofalseWhen set to true Entri will automatically check if there is an existing and valid DMARC record. If so, Entri will not update the DMARC record.

dnsRecords object

DNS records can be provided in two different ways, using a single array of records or an object with the array of records specified the domain and subdomain cases.

Record object specification

PropertyTypeRequired?Example
hoststringYeswww
ttlintegerYes300 (This is the minimum accepted value)
typestring (see below)YesCNAME (Check the Supported record types section below)
valuestringYesm.example.com
fallbackValuestringNov=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDg9/gR+3J0mmugLjhpYOfQK9ytkEKnXM0kVdpu0UoykSPK7ChD+nRxFJbN2cxtvu8GrCNQwPTKbC0jimaSi0V2j3JndnRrECuYCqeZYcRmw2lYs18QnmJRfCpweKoaGtv9zERCkeHwLcTaLkrSHrRDf58WgERg8x/4ipBPIyZufwIDAQAB
priorityintegerOnly for MX records10

Simple array

A single array of dns records. This is the easiest way to send Entri the set of records you want to configure for all on all domains with no subdomain/domain distinction.

{
  ...,
  dnsRecords: [
    {
      type: "CNAME",
      host: "shop",
      value: "myapp.com",
      ttl: 300,
    },
    {
      type: "TXT",
      host: "@",
      value: "123-example-txt-record",
      ttl: 300,
    }
  ]
}

Conditional records object

If you have different sets of records you need to configure depending on whether it is a domain or a subdomain, then this is the best option for you. You just need to include the two sets of records into separate objects, making use of the domain, subDomain and rootNS If the rootNS key is found within the conditional records object, it will have precedence over the other two. If the detected or manually-selected provider does not count with NS modifications support, then the domain/subDomain approach will be used instead.

Sample conditional records object:

{
  ...,
  dnsRecords: {
    domain: [
      {
        type: "A",
        host: "@",
        value: "1.2.3.4",
        ttl: 300,
      },
      {
        type: "TXT",
        host: "@",
        value: "123-example-txt-record",
        ttl: 300,
      }
    ],
    subDomain: [
      {
        type: "CNAME",
        host: "shop",
        value: "myapp.com",
        ttl: 300,
      },
      {
        type: "TXT",
        host: "@",
        value: "123-example-txt-record",
        ttl: 300,
      }
    ],
    rootNS: [
      {
        type: "NS",
        host: "@",
        value: "ns1.sampleprovider.com",
        ttl: 300,
      },
      {
        type: "NS",
        host: "@",
        value: "ns2.sampleprovider.com",
        ttl: 300,
      }
    ]
}

Multi-domain flows

With Entri, you can configure as many domains as you need using the end user flow. In order to achieve it, you only need to use a similar dnsRecords structure as the conditional records, in combination with the array form of the prefilledDomain property.

This is a sample configuration for a multi-domain flow:

{
  //...
  prefilledDomain: ["firstDomain.com", "secondDomain.com"],
  dnsRecords: {
    "firstDomain.com": [
      {
        type: "A",
        host: "@",
        value: "1.2.3.4",
        ttl: 300,
      },
      {
        type: "TXT",
        host: "@",
        value: "123-example-txt-record",
        ttl: 300,
      }
    ],
    "secondDomain.com": [
      {
        type: "CNAME",
        host: "shop",
        value: "myapp.com",
        ttl: 300,
      },
      {
        type: "TXT",
        host: "@",
        value: "123-example-txt-record",
        ttl: 300,
      }
    ]
}

Dynamic configuration variables

You can insert dynamic variables into the dnsRecords section of your configuration object using syntax.

For example, if the user sets up blog.example.com, the following variables will be available:

Variable nameExample value
{DOMAIN}example.com
{SUBDOMAIN}blog
{SLD}example
{TLD}com
{emailProviderSPF}Google

Please note, all the variables are case-sensitive and must be inputted in all upper-case.

whiteLabel object

The whiteLabel property object allows you to further customize the Entri Modal UI. Please note you may need an Enterprise level account for these properties to be available. For questions about this, contact your account manager.

PropertyTypeRequired?DefaultDescription
hideEntriLogobooleanNofalseWhen true, hides all mentions of “Powered by Entri”
hideConfettibooleanNofalseWhen true, hides the confetti upon a successful domain configuration.
hideLinkSharingConfirmationbooleanNofalseRemoves the “I have shared the link” check from the sharing link feature modal.
logostringNonullThis needs to be an https URL. When inputted, it will remove the Entri logo and use your custom logo. We recommended an SVG or PNG file that is 1:1.
logoBackgroundColorstringNonullWhen present, this will set a background color for the logo mask. Useful if your logo uses a white color and has a transparent background.
removeLogoBorderbooleanNofalseWhen true, this will remove the rounded mask/border that is applied over your logo.
removeShareLoginbooleanNofalseWhen true, this will remove the sharing link functionality across the whole application.
skipCongratulationsScreenbooleanNofalsePrevents the application from showing the Congratulations screen and closes the modal automatically.
hideCompanyNamebooleanNofalseHides the company name across the flow.
hideProgressIndicatorbooleanNonullHides the progress indicator at the top of the modal
themeobjectNonullDescribed below (see theme Object)
iconsobjectNonullDescribed below (see icons Object)
customPropertiesobjectNonullDescribed below (see customProperties Object)
customCopyobjectNonullDescribed below (see customCopy Object)

theme Object

The theme object allows you to customize the foreground and background colors to match your app’s branding. Please note you may need an Enterprise level account for these properties to be available. For questions about this, contact your account manager.

Entri Connect Theme Options

PropertyTypeDefaultDescription
bgstringN/ABackground color. Please input a hex code.
fgstringN/AForeground color. Please input a hex code.
widthstringN/AModal’s width
linksstringN/ALinks color to override HTML’s default blue.
internalCustomAnimationstringnullThis enables a custom animation. Please refer to your account executive for more info.
buttonsobjectnullContains custom properties for the buttons across all screens
buttons.border.stylestringnullContains the border css styling e.g. solid 1px #000
buttons.border.radiusstringnullContains the border-radius css styling e.g. 5% or 10px
googleFontobjectnullAllows to set a custom GoogleFont and its properties
googleFont.familystringnullOverrides the Modal font-family
googleFont.variantstringnullfont-family normal text weight e.g. 400
googleFont.boldWeightstringnullfont-family bold text weight e.g. 600
titlesobjectnullDefine styling properties for the titles globally and per screen
titles.fontSizestringnullOverrides the font-size for all titles
titles.providerLoginobjectnullDefine styling properties for the Login Screen
titles.providerLogin.fontSizeobjectnullOverrides the font-size for the Login Screen
secondaryLinksobjectnullOverrides styling for secondary links
secondaryLinks.fontSizestringnullOverride the font-size for secondary links globally
hideCompanyLogobooleanfalseHides the customer’s logo on the initial screen (Does not apply to the multi-domain initial screen)

Entri Sell Theme Options

PropertyTypeDefaultDescription
primarystringN/AMain color used in your theme. It’s usually the most recognizable color in the interface. Example: "#012939"
onPrimarystringN/AColor used for text and icons that appear on top of the primary color. Example: "#ffffff"
secondarystringN/AColor that complements the primary color and is used for secondary UI elements. Example: "#012939"
onSecondarystringN/AColor used for text and icons that appear on top of the secondary color. Example: "#ffffff"
headerBackgroundstringN/ABackground color of the header. Accepts any valid CSS color code (e.g., hex, rgb). If not defined, it will default to the primary color value. Example: "#123456"
interactivestringN/AColor for interactive elements such as radio buttons. Accepts any valid CSS color code (e.g., hex, rgb). Example: "#ffcc00"
premiumBadgestringN/ABackground color of premium badge components. Accepts any valid CSS color code (e.g., hex, rgb). Example: "#00ffcc"
onPremiumBadgestringN/AText color on the premium badge. Accepts any valid CSS color code (e.g., hex, rgb). Example: "#ffffff"
priceBadgestringN/ABackground color of the price badge component. Accepts any valid CSS color code (e.g., hex, rgb). Example: "#ff6600"
onPriceBadgestringN/AText color on the price badge. Accepts any valid CSS color code (e.g., hex, rgb). Example: "#ffffff"
activatingstringN/ABackground color of the “Search Domain” button. Accepts any valid CSS color code (e.g., hex, rgb). Example: "#ff4500"
onActivatingstringN/AText color on the “Search Domain” button. Accepts any valid CSS color code (e.g., hex, rgb). Example: "#000000"

icons Object

The icons object allows you to customize the default icons used across the flow.

PropertyTypeDefaultDescription
iconsobjectnullContains the icons’ override details. These need to be set by your assigned Sales Engineer.
icons.initialStepobjectnullContains the Initial screen’s icons override details
icons.initialStep.secureIconstringnullIcon code to use as replacement for the “secure” part of the introduction section
icons.initialStep.easyIconstringnullIcon code to use as replacement for the “easy” part of the introduction section
icons.domainAnalysisobjectnullContains the Domains analysis’ icons override details
icons.domainAnalysis.stepInitialstringnullIcon code to use as replacement for the undone check in the Domain analysis screen
icons.domainAnalysis.stepInactivestringnullIcon code to use as replacement for the inactive check in the Domain analysis screen
icons.domainAnalysis.stepFinishedstringnullIcon code to use as replacement for the done check in the Domain analysis screen
icons.providerLoginobjectnullContains the Initial screen’s icons override details
icons.providerLogin.userstringnullIcon code to use as replacement for the user icon within the username input
icons.providerLogin.passwordstringnullIcon code to use as replacement for the password icon within the password input
icons.providerLogin.passwordEyeVisiblestringnullIcon code to use as replacement for the showing the password feature within the password input
icons.providerLogin.passwordEyeHiddenstringnullIcon code to use as replacement for the hiding the password feature within the password input

customProperties Object

The customProperties object allows you to set different behaviours related specifically to specific elements or a screen’s behavior.

PropertyTypeDefaultDescription
initialScreenobjectnullContains properties for the initial screen
initialScreen.showManualInstructionsCTAbooleanfalseEnables the go-to manual link in the initial screen. Closes the modal and adds the authenticateManuallyClicked: true key to the onEntriClose event.
initialScreen.disableScreenbooleanfalseDisables the the initial screen. If prefilledDomain is in use, then the user will land directly on the domain analysis screen. If no prefilledDomain is in use, then the user will land on the domain input screen.
errorScreenobjectnullContains properties for the error screen
errorScreen.genericErrorobjectnullContains properties for the Generic error screen specifically
errorScreen.genericError.imageobjectnullOverrides the default image/animation shown for Generic errors
errorScreen.sessionErrorobjectnullContains properties for the Session error screen specifically
errorScreen.sessionError.imageobjectnullOverrides the default image/animation shown for Session errors
existingRecordsobjectnullContains properties for the Existing records screen
existingRecords.disableScreenbooleanfalseDisables the Existing Records override prompt and confirms automatically
manualConfigurationobjectnullContains properties for the manual screen guide
manualConfiguration.disableScreenbooleanfalsePrevents the manual screen from being shown. Adds the manualScreenDisabled:true extra property to the onEntriClose event
providerLoginobjectnullContains properties for the provider login screen
providerLogin.showEntriToSbooleanfalseDisplays the terms of service on the Provider Login screen
providerLogin.disableExtendedLoginAnimationbooleanfalseDisables the extended login animation and leaves only the default one in place.
providerLogin.gotoManualLinkobjectnullSets visual changes to the social login icons on the provider login screen
providerLogin.gotoManualLink.disablebooleanfalseHides the go to manual text copy with
providerLogin.gotoManualLink.replacementTextobjectfalseReplaces the gotoManualLink default text
providerLogin.gotoManualLink.replacementText.{locale}stringfalseSets the social login icons’ replacement translation text for the specific locale.
providerLogin.forwardLink.hideLeftArrowbooleanfalseHides the >> icon at the left of the records-preview link.
providerLogin.forwardLink.styleObjectfalseAllows to include custom styling for to the forward to a colleague link. Each property has to be in added in camelCase format, eg. background: "#000", color: "white", padding: "0.5rem 1rem", borderRadius: "5px", textDecoration: "none", etc.
providerLogin.recordsPreview.hidebooleanfalseHides the records preview feature/link.
providerManualSelectionobjectnullContains properties for the provider manual selection screen
sharedFlow.backgroundObject or StringnullChanges all possible css background properties. Can be used as String, working as described in the background CSS property definition, or as an Object, making use of all possible background sub-properties using camelCase syntax keys, for example: background:{backgroundColor:"red"}
sharedFlow.hideDecorationsbooleanfalseDisables the default Entri background decorations on the shared flow

customCopy Object

The customCopy object allows you to customize certain texts along the flow, in order to match your brand’s tone or in case the default copy doesn’t exactly fit your use case. The default and only required locale (translation) needed to be used within the customCopy object is the EN locale. All missing translations will default to English.

Please note you may need an Enterprise level account for these properties to be available. For questions about this, contact your account manager.

PropertyTypeDefaultDescription
congratulationsobjectnullContains the override details for the Congratulations screen
congratulations.titleobjectnullOverrides the title on the Congratulations screen.
congratulations.title.${locale}stringnullSets the Congratulations title’s translation text for the specific locale. Accepts the {DOMAIN} replacement token. Accepts applying bold when using the following tags <strong></strong>.
congratulations.descriptionobjectnullOverrides the description on the congratulations screen.
congratulations.description.${locale}stringnullSets the Congratulations description’s translation text for the specific locale. Accepts applying bold when using the following tags <strong></strong>. Accepts a {USER} (described below) and {DOMAIN} placeholders.
congratulations.userstringnullThe user value to replace on the {USER} token in the congratulations.description
congratulations.sell.titleobjectnullOverrides the title on the Congratulations screen.
congratulations.sell.title.${locale}stringnullSets the Congratulations title’s translation text for the specific locale. Accepts the {DOMAIN} and {APPLICATION_NAME} replacement tokens. Accepts applying bold when using the following tags <strong></strong>.
congratulations.sell.descriptionobjectnullOverrides the description on Entri Sell congratulations screen.
congratulations.sell.description.${locale}stringnullSets the Congratulations description’s translation text for the specific locale. Accepts applying bold when using the following tags <strong></strong>. Accepts a {USER} (described below) and {APPLICATION_NAME} replacement tokens.
congratulations.sell.userstringnullThe user value to replace on the {USER} token in the congratulations.sell.description
congratulations.buttonstringnullOverrides the button’s text in the Congratulations screen.
congratulations.button.${locale}stringnullSets the Congratulations button call to action’s translation text for the specific locale. Accepts applying bold when using the following tags <strong></strong>.
domainAnalysisobjectnullContains the override details for the Domain analysis screen
domainAnalysis.titleobjectnullOverrides the title on the Domain analysis screen.
domainAnalysis.title.${locale}stringnullSets the Domain Analysis title’s translation text for the specific locale.
domainAnalysis.analyzingobjectnullOverrides the analysis in progress text on the Domain analysis screen.
domainAnalysis.analyzing.${locale}stringnullSets the analysis in progress translation text for the specific locale.
domainAnalysis.analyzedobjectnullOverrides the analysis done text on the Domain analysis screen.
domainAnalysis.analyzed.${locale}stringnullSets the analysis done translation text for the specific locale.
domainAnalysis.detectingobjectnullOverrides the detection in progress text on the Domain analysis screen.
domainAnalysis.detecting.${locale}stringnullSets the detection in progress translation text for the specific locale.
domainAnalysis.detectedobjectnullOverrides the detection done text on the Domain analysis screen.
domainAnalysis.detected.${locale}stringnullSets the detection done translation text for the specific locale.
domainAnalysis.gettingSetupReadyobjectnullOverrides the getting setup ready text on the Domain analysis screen.
domainAnalysis.gettingSetupReady.${locale}stringnullSets the getting setup ready in progress translation text for the specific locale.
domainAnalysis.setupIsReadyobjectnullOverrides the setup is ready text on the Domain analysis screen.
domainAnalysis.setupIsReady.${locale}stringnullSets the setup is ready translation text for the specific locale.
existingRecordsobjectnullContains the override details for the Override records confirmation screen.
existingRecords.titleobjectnullContains the translations for Overriding the title on the Override records confirmation screen.
existingRecords.title$.{locale}stringnullSets the Override-confirmation screen title’s translation text for the specific locale. Accepts the {DOMAIN} replacement token. Accepts applying bold when using the following tags <strong></strong>.
initialScreenobjectnullContains the override details for the Initial screen
initialScreen.titleobjectnullContains the translations for overriding the title on the initial screen.
initialScreen.title.${locale}stringnullSets the title’s translation text for the specific locale. (one of the available codes such as en,es,fr, etc., for example initialScreen.title.en). Accepts applying bold when using the following tags <strong></strong>. For Entri Sell, sets the title text that appears on the initial screen of the domain purchase flow, localized by language. Example: “Search for your domain”
initialScreen.marketingCopy.${locale}stringnullMarketing copy that appears below the domain input field, localized by language. Example: “Your website will look even better with a custom domain!” (Entri Sell only)
initialScreen.subTitleobjectnullContains the translations for overriding the subtitle on the initial screen
initialScreen.subTitle.${locale}stringnullSets the subtitle’s translation text for the specific locale.
initialScreen.secureobjectnullOverrides the texts in the “secure” section on the initial screen
initialScreen.secure.titleobjectnullContains the translations for overriding the “secure” title section on the initial screen.
initialScreen.secure.title.${locale}stringnullSets the secure title’s translation text for the specific locale.
initialScreen.secure.descriptionobjectnullContains the translations for overriding the “secure” description text section on the initial screen
initialScreen.secure.description.${locale}stringnullSets the secure description’s translation text for the specific locale.
initialScreen.easyobjectnullOverrides the texts in the “easy” section on the initial screen
initialScreen.easy.titleobjectnullContains the translations for overriding the “easy” title section on the initial screen
initialScreen.easy.title.${locale}stringnullSets the easy title’s translation text for the specific locale.
initialScreen.easy.descriptionobjectnullContains the translations for overriding the “easy” description section on the initial screen
initialScreen.easy.description.${locale}stringnullSets the easy description’s translation text for the specific locale.
login2FAobjectnullContains the override details for the login 2FA screen
login2FA.descriptionobjectnullOverrides the description on the login 2FA screen.
login2FA.description.genericobjectnullOverrides the description on the login 2FA screen with a generic text applied to all types of 2FA.
login2FA.description.generic.${locale}stringnullSets the Login 2FA description’s translation text for the specific locale (one of the available codes, such as en,es,fr, etc., for example initialScreen.title.en).
login2FA.description.smsobjectnullOverrides the description on the login 2FA for SMS 2fa auth
login2FA.description.sms.${locale}stringnullSets the Login 2FA description’s for SMS 2fa auth translation text for the specific locale (one of the available codes, such as en,es,fr, etc., for example initialScreen.title.en).
login2FA.description.emailobjectnullOverrides the description on the login 2FA for EMAIL 2fa auth
login2FA.description.email.${locale}stringnullSets the Login 2FA description’s for EMAIL 2fa auth translation text for the specific locale (one of the available codes, such as en,es,fr, etc., for example initialScreen.title.en).
login2FA.description.authenticatorAppobjectnullOverrides the description on the login 2FA for AUTHENTICATOR 2fa auth
login2FA.description.authenticatorApp.${locale}stringnullSets the Login 2FA description’s for AUTHENTICATOR 2fa auth translation text for the specific locale (one of the available codes, such as en,es,fr, etc., for example initialScreen.title.en).
manuallyScreenobjectnullContains the step-by-step-guide override details.
manuallyScreen.disableManualSetupDocumentationLinkbooleanfalseDisables the opening of the documentation URL provided in the manualSetupDocumentation configuration property. Commonly used in combination with in combination with the onEntriManualSetupDocumentationClick event to trigger a custom js function.
manuallyScreen.stepByStepGuideobjectnullOverrides the step-by-step-guide line of text on the manual configuration screen
manuallyScreen.stepByStepGuide.${locale}stringnullSets the step-by-step-guide translation text for the specific locale (one of the available codes, such as en,es,fr, etc., for example initialScreen.title.en). This field also supports links for triggering javascript functions only. These are helpful for triggering chatbots or other actions. You only need to enclose the call to action text inside the <link></link> tags to create an “empty” link, and then catch the onEntriManualSetupDocumentationClick event.
providerLoginobjectnullContains the override details for the Provider Login screen
providerLogin.messageobjectnullContains the translations for overriding the introductory message on the provider login screen.
providerLogin.message.${locale}stringnullSets the Provider Login’s introduction’s translation text for the specific locale (one of the available codes, such as en,es,fr, etc., for example initialScreen.title.en). Accepts the {PROVIDER} replacement token. Accepts applying bold when using the following tags <strong></strong>.
providerLogin.forwardLoginobjectnullContains translations for customizing the Forward login call to action..
providerLogin.forwardLogin.${locale}objectnullSets the Forward login translation text for the specific locale (one of the available codes, such as en,es,fr, etc., for example providerLogin.forwardLogin.en).
providerLogin.showPreviewobjectnullContains translations for customizing the text that shows the record previews.
providerLogin.showPreview.${locale}objectnullSets the Show preview translation text for the specific locale (one of the available codes, such as en,es,fr, etc., for example initialScreen.title.en).
providerLogin.hidePreviewobjectnullContains translations for customizing the text that hides the record previews.
providerLogin.hidePreview.${locale}objectnullSets the Hide preview translation text for the specific locale (one of the available codes, such as en,es,fr, etc., for example initialScreen.title.en).

Locales supported are one of form en, es, fr, etc. If no matching translation is found for the locale in use, then the Entri’s default text will be used. Please find the full list of supported locales in property’s documentation.

White label code example:

JavaScript
{
  "whiteLabel": {
    "hideEntriLogo": true,
    "hideConfetti": true,
    "logo": "LOGO_URL",
    "theme": {
      "fg": "#fff",
      "bg": "#fa7268"
    },
    "logoBackgroundColor": "#444444",
    "removeLogoBorder": true,
    "customCopy": {
      "initialScreen": {
        "title": {
          "en": "Custom title",
          "es": "Título custom"
        },
        "subtitle": {
          "en": "Custom subtitle",
          "es": "Subtítulo custom"
        }
      },
      "manuallyScreen": {
        "disableManualSetupDocumentationLink": true,
        "stepByStepGuide": {
          "en": "Follow our <link>step-by-step</link> guide",
          "es": "Sigue nuestra guía <link>paso-a-paso</link>"
        }
      }
    }
  }
}

Supported Record Types

TypeDescription
AHolds the IP address of a domain.
AAAAThe AAAA record is conceptually similar to the A record, but it allows you to specify the IPv6 address of the server, rather than the IPv4.
CNAMEForwards one domain or subdomain to another domain. Does not provide an IP address.
CAAUsed to provide additional confirmation for the Certification Authority (CA) when validating an SSL certificate.
MXDirects email to an email server.
TXTStores text strings. For special uses of the TXT record, see Handling DKIM, SPF, and DMARC records.
NSIndicates which DNS server is authoritative for that domain, it is the server that stores all DNS records for a domain, including A records, MX records, or CNAME records.

Secure root domains

This feature allows you to create a valid SSL certificate for the root domain, in a way that it can be used either as a redirect rule to the www subdomain or as a way to show the content directly. This feature, in all cases, will create 2 new A records with Entri’s IPs to the root domain’s dns configuration, and will use Entri as proxy to encrypt and forward the traffic to your application.

IMPORTANT: This feature requires to have Entri Secure or Entri Power enabled on your account.

Basic usage (wwwRedirect only)

This configuration may be used for securing the root domain (e.g. https://mydomain.com) and redirect it to www (eg. https://www.mydomain.com)

JSON
{
  applicationId: "12345",
  token: mySavedToken,
  secureRootDomain: true,
  wwwRedirect:true,
  dnsRecords: [...]
}

Advanced usage (display content)

This configuration may be used for securing the root domain (e.g. https://mydomain.com) and show the content directly on the root domain level, without redirections.

JSON
{
  applicationId: "12345",
  token: mySavedToken,
  secureRootDomain: true,
  wwwRedirect:true,
  dnsRecords: [
    {
      type: "A",
      host: "@",
      value: "{ENTRI_SERVERS}",
      ttl: 300,
      ssl: true,
      applicationUrl: "my.applicationurl.com" // [Optional] overrides the pre-configured applicationUrl
    },
    ... //Other records
  ]
}

Check Domain

The checkDomain function checks the DNS configuration for a specified domain and returns details about the current DNS provider. Depending on the provided DNS records, it includes information about the registrar, supported DNS features, and, if NS records are passed, the authoritative DNS provider managing the zone file. This helps users understand the domain’s setup and feature support.

entri.checkDomain(domain, config)

This asynchronous method checks if Entri supports automatic setup for a particular domain. It accepts two arguments:

ArgumentTypeRequired?Example
domainstring - a domain with no subdomainYesexample.com
configEntri configuration objectYesSee above

Important note: checkDomain function also requires you to provide the JWT authentication key within the configuration object. Refer to JWT authentication section for more information.

Sample usage:

JavaScript
const domainCheck = await entri.checkDomain("mydomain.com",
  {
    "applicationId": "myAppId",
    "token": "..."
    "dnsRecords": [
      {
        "host": "www",
        "ttl": 300,
        "type": "CNAME",
        "value": "cname.mydomain.com"
      },
      //... etc
    ],
    //...other optional configuration keys
  }
)

Check Domain as HTTP endpoint

You can also analyse the support for a domain with our http version of the checkDomain function.

POST https://api.goentri.com/checkdomain
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]"

Request body

JSON
{
  "domain": "ifpiggiescouldfly.com",
  "dnsRecords": [
      {
        "host": "shop",
        "type": "CNAME",
        "value": "exampledestination.com",
        "ttl": "300"
      }
    ]
}

Response

Please refer to CheckDomain response

Check Domain Response

This section describes the response structure for the API endpoint or JavaScript function that checks the DNS provider information for a given domain. Depending on the DNS records passed as parameters, the response will include details about the domain’s registrar or the authoritative DNS provider currently managing the zone file.

Example 1: Standard DNS Records (No NS Records)

When the request contains DNS records that are not NS (Name Server) records, the response will include information about the current DNS provider, such as the provider name, setup type, and feature support details.

Request:

{
  "applicationId": "myAppId", //Only JS function
  "token": "...", //Only JS function
  "domain": "ifpiggiescouldfly.com",
  "dnsRecords": [
    {
      "host": "shop",
      "type": "CNAME",
      "value": "exampledestination.com",
      "ttl": "300"
    }
  ]
}

Response:

{
    "provider": "GoDaddy",
    "setupType": "Automatic",
    "NSSupport": {
        "root": false,
        "subdomains": true
    },
    "wwwRedirect": false,
    "cnameFlattening": false,
    "wildcardSupport": true,
    "subdomainCnameNsOverride": true,
    "spfOverrideSupport": true,
    "expired": false
}

In this case, the authoritativeDnsProvider field is not included because NS records were not part of the request.

Example 2: Request with NS Records

If NS records are provided in the request, the response will also include information about the authoritative DNS provider managing the zone file.

Request:

{
  "applicationId": "myAppId", //Only JS function
  "token": "...", //Only JS function
  "domain": "ifpiggiescouldfly.com",
  "dnsRecords": [
    {
      "host": "@",
      "type": "NS",
      "value": "exampledestination.com",
      "ttl": "300"
    }
  ]
}

Response:

{
    "provider": "GoDaddy",
    "setupType": "Automatic",
    "NSSupport": {
        "root": false,
        "subdomains": true
    },
    "wwwRedirect": false,
    "cnameFlattening": false,
    "wildcardSupport": true,
    "subdomainCnameNsOverride": true,
    "authoritativeDnsProvider": {
        "provider": "GoDaddy",
        "setupType": "Automatic",
        "wwwRedirect": false,
        "cnameFlattening": false,
        "wildcardSupport": true,
        "subdomainCnameNsOverride": true
    },
    "expired": false
}

In this case, the authoritativeDnsProvider object is included because NS records were passed, providing details about the provider managing the zone file.

Response Parameters

  • provider: The current DNS provider for the domain, either based on common DNS records or NS records if provided.
  • setupType: Indicates whether automatic setup is supported for the DNS provider. If not, a manual setup flow will be presented.
  • NSSupport: Object that specifies whether the provider supports nameserver configurations at the root or subdomain levels:
    • root: true if root-level nameserver configuration is supported.
    • subdomains: true if subdomain-level nameserver configuration is supported.
  • wwwRedirect: Indicates whether the provider supports automatic root domain-to-www redirects.
  • cnameFlattening: Specifies whether the provider supports CNAME flattening (resolving CNAMEs at the root level).
  • wildcardSupport: Indicates if wildcard DNS entries (e.g., *.domain.com) are supported by the provider.
  • subdomainCnameNsOverride: If true, the provider will automatically remove a CNAME record when a subdomain nameserver with the same name is added.
  • expired: Boolean value indicating if the domain’s current DNS setup has expired.
  • authoritativeDnsProvider (only included when NS records are provided in the request):
    • provider: The authoritative DNS provider managing the zone file.
    • setupType: Indicates if automatic or manual setup is supported for the authoritative provider.
    • wwwRedirect: Whether root domain-to-www redirects are supported by the authoritative provider.
    • cnameFlattening: Whether the authoritative provider supports CNAME flattening.
    • wildcardSupport: If the authoritative provider supports wildcard DNS entries.
    • subdomainCnameNsOverride: If the authoritative provider automatically removes CNAME records when subdomain nameserver records are added.

This response format helps users understand the current DNS configuration and determine whether the provider supports certain advanced features like wildcard records, CNAME flattening, and subdomain overrides.

entri.purchaseDomain(config)

This method launches the Entri Sell modal. The config object includes the same set of properties as those specified in entri.showEntri(config), plus additional Sell-specific options:

PropertyTypeRequired?DefaultDescription
disableConnectbooleanNofalseIf true, the flow will only run the domain(s) purchase process, but no specific DNS records will be configured.
debugModebooleanNofalseFor testing purposes. It skips the actual domain purchase flow and checkout and takes the user back to the DNS records setup step. IMPORTANT!: This should only be used with pre-existing IONOS registered domains.
sellVersionstringYesv2Specifies the version of the domain purchase flow to use. Set this to "v3" to activate the latest version with enhanced features like theming, customization, and prefilled user data.
successCallbackUrlstringNoN/AThe URL where the user will be redirected after a successful domain purchase.
errorCallbackUrlstringNoN/AThe URL where the user will be redirected in case of an error during the domain purchase process.
dnsRecordsarrayYesN/AAn array of DNS records to configure for the purchased domain. Each record should include type, host, value, and ttl.
freeDomainbooleanNofalseThis feature allows you to offer your users their first domain at no cost. Should only be used on paid users on your platform. Please contact your account manager to enable this feature.
localestringNo"en"The language/locale used in the domain purchase flow.
mailUpsellbooleanNofalseIf set to true, an additional step offering mail inboxes is included as part of the domain purchase flow. This is an optional upsell and can be skipped manually by the user. This property allows you to introduce a mail inbox upsell step seamlessly into the domain purchasing experience while giving users the flexibility to opt out.
whiteLabelobjectNoN/ACustomizes the branding and appearance of the purchase flow. Includes options for setting the logo, theme colors, hiding logos, and customizing text on the initial screen.
whiteLabel.sell.flowTargetstringNo_parentThe target location where the purchase flow window will be displayed. If _blank is specified, the flow will open in a new browser tab.
whiteLabel.sell.overlayScreenHeightstringNo90%The percentage of the viewport height allocated to the search domain screen overlay.
whiteLabel.sell.partnerLogostringNoN/AThe URL of the partner’s logo, which will be displayed prominently in the cobranded header of the purchase flow.
whiteLabel.sell.partnerIconstringNoN/AThe URL of the partner’s icon, which will appear in the floating cart at the bottom of the page during the purchase flow.
whiteLabel.sell.partnerNamestringNoN/AThe name of the partner company to display within the purchase flow.
whiteLabel.sell.contactobjectNoN/APrefilled user data required for creating the domain. This includes fields like firstName, lastName, email, phone, address, zip, city, state, postalCode, and country.

This new purchaseDomain version includes all the latest theming options, cobranded elements, and new features such as sellVersion, successCallbackUrl, and errorCallbackUrl. Make sure to set the appropriate fields to customize the flow according to your needs.

Are you migrating to the latest Entri version or need more information? Please find the full details and migration steps on the Entri Sell V3 page.

Coming soon 🔥

Offer an email solution (Google Workspace, MSFT 365, IONOS Mail) as part of the Sell checkout flow To enable this, just pass offerEmailService:true as a key in your config.

Asynchronous DNS configurations (Entri Sell only)

You can make asynchronous DNS configurations after the initial Entri Sell flow has finished for up to 1 hour after the initial domain purchase (Not supported on debugMode=true flows). You will only need to use the following endpoint with the proper DNS records information:

POST https://api.goentri.com/connect/async
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]

Sample body:

JSON
{
  "applicationId": "clickfunnels",
  "domain": "domain.com",
  "subdomain": "www",
  "wwwRedirect": false,
  "dnsRecords": [
    {
      "value": "13.248.155.104",
      "host": "@",
      "ttl": 300,
      "type": "A"
    }
  ]
}

Properties:

TypePropertyRequired?DefaultDescription
stringapplicationIdYesN/AThe ID of your application (set in the dashboard)
stringdomainYesN/AThe domain that will have the DNS records configured, e.g. example.com
array of DNSRecord objects (check ref)dnsRecordsYesN/AThe DNS records you wish to configure for your users (check ref)
stringsubdomainNoN/AThe subdomain that will have the DNS records configured, e.g. www
booleanwwwRedirectNofalseIf true, Entri will automatically set the redirect from the bare domain to the www subdomain.

entri.close()

This method will force closing the modal and also trigger the onEntriClose() event with the last step details. Please refer to the onEntriClose for more information.

Browser callback events

The following events are useful for following up the user’s navigation and take action under certain circumstances, for example, leading the user to your manual setup guide in case you don’t want to use Entri’s.

onEntriClose Callback Event

This event gets triggered as soon as the modal is closed, giving you back useful information about the latest status of the flow.

Sample usage:

JavaScript
function handleOnEntriClose(event) {
  console.log('onEntriClose', event.detail);
}
window.addEventListener('onEntriClose', handleOnEntriClose, false);

Sample event.detail object response:

JSON
{
  domain: "example.com",
  success: true,
  setupType: "automatic",
  provider: "Provider name",
  lastStatus: "IN_PROGRESS",
  freeDomain: true, // Only applies to Entri Sell free domain flows
  error: { // Added to the event details if the user closed the app after an error screen.
    code: "ProviderError",
    title: "Social Login Not Supported",
    details: "You are trying to login with Social Account, please try logging in from [PROVIDER_NAME] Account"
  }
}

Event details object description

NameTypeDescription
domainstringDomain that the user entered. Can be null if the user exits before entering a domain.
successbooleanWas the setup of the domain completed?
setupTypestringType of DNS setup. Can be “automatic”, manual, sharedLogin, purchase or null if the user didn’t reach the set up stage. Additionally, semiautomatic may be returned if the user selected a provider manually that supports automatic set up.
providerstringProvider name used to configure the domain or “unknown” if it was not detected.
lastStatusstringlastStatus can be used if you want more information about where the user dropped off. Find all possible values below.
manualScreenDisabledbooleanDetermines if the modal was closed because the flow reached the Manual Screen and it was disabled using the whiteLabel.customProperties.manualConfiguration.disableScreen property.
freeDomainbooleanDetermines if the flow was for an Entri Sell free domain flow. Not included on other types of flow.
errorobjectAdded to the event details if the user closed the app after an error screen.
error.codestringExit error code
error.titlestringError title shown to the end user on the error screen
error.detailsstringError details shown to the end user on the error screen

Errors description available at the Possible error codes section.

lastStatus possible values

lastStatusDescription
INITIALInitial screen for Entri Connect, Secure and Power.
ENTER_DOMAINEnter your domain screen in case there’s no prefilledDomain
DOMAIN_ANALYSISThe domain is under the DNS analysis
DOMAIN_SETUPThe domain is on the DNS configuration step
IN_PROGRESSThe user exited the Entri modal while the DNS setup was in progress.
EXISTING_RECORDSThe user exited the Entri modal when prompted if they want to override an existing set of DNS records.
LOGINThe user exited the Entri modal flow during the login process (when prompted for their login credentials)
LOGIN_2FAThe user exited the Entri modal flow during the login process (when prompted for 2FA verification)
MANUAL_CONFIGURATIONThe user exited the Entri modal after manual DNS configuration instructions were presented.
PROVIDER_MANUAL_SELECTIONThe user entered the providers’ list for manual selection
EXIT_WITH_ERRORThe user exited the Entri modal after an error occurred.
DKIM_SETUPThe user exited the Entri modal after prompting
FINISHED_SUCCESSFULLYThe user has successfully configured their domain using the automatic flow.
FINISHED_SUCCESSFULLY_MANUALThe user has successfully configured their domain using the manual flow.

onEntriManualSetupDocumentationClick Event

This event is triggered when the user has clicked on the “Follow our step-by-step guide” link on the Manual configuration screen. It doesn’t include any additional information within the event.detail object. This is useful for triggering proprietary javavascript based solutions when the user needs help with configuring the manual flow, e.g. opening support chats, etc.

Sample usage:

JavaScript
function myCustomFunction(event) {
  //Custom code here e.g. open chat app
}
window.addEventListener('onEntriManualSetupDocumentationClick', myCustomFunction, false);

onEntriStepChange Event

This event is triggered each time a different screen is shown within the Entri configuration process. It serves the purpose of offering additional user journey insights, making it useful for implementing listeners and triggering third-party tracking system events when necessary.

Sample usage:

JavaScript
function myCustomFunction(event) {
	console.log('onEntriStepChange', event.detail);
}
window.addEventListener('onEntriStepChange', myCustomFunction, false);

Sample event.detail object response:

JSON
{
  domain: "example.com",
  provider: "Provider name",
  step: "ENTER_DOMAIN",
  user: "user-123456",
  error: { // Added to the event details if the user closed the app after an error screen.
    code: "ProviderError",
    title: "Social Login Not Supported",
    details: "You are trying to login with Social Account, please try logging in from [PROVIDER_NAME] Account"
  }
}

Event details object description

NameTypeDescription
domainstringDomain that the user entered. Can be null if the user exits before entering a domain.
providerstringProvider name used to configure the domain or “unknown” if it was not detected.
stepbooleanThe current step the user is visualizing
userstringThe userId sent over the initial configuration. Helpful for mapping users vs. flows.
errorobjectAdded to the event details if the user closed the app after an error screen.
error.codestringExit error code
error.titlestringError title shown to the end user on the error screen
error.detailsstringError details shown to the end user on the error screen

Errors description available at the Possible error codes section.

step possible values

lastStatusDescription
INITIALInitial screen for Entri Connect, Secure and Power.
ENTER_DOMAINEnter your domain screen in case there’s no prefilledDomain
DOMAIN_ANALYSISThe domain is under the DNS analysis
DOMAIN_SETUPThe domain is on the DNS configuration step
IN_PROGRESSThe user exited the Entri modal while the DNS setup was in progress.
EXISTING_RECORDSThe user exited the Entri modal when prompted if they want to override an existing set of DNS records.
LOGINThe user exited the Entri modal flow during the login process (when prompted for their login credentials)
LOGIN_2FAThe user exited the Entri modal flow during the login process (when prompted for 2FA verification)
MANUAL_CONFIGURATIONThe user exited the Entri modal after manual DNS configuration instructions were presented.
PROVIDER_MANUAL_SELECTIONThe user entered the providers’ list for manual selection
EXIT_WITH_ERRORThe user exited the Entri modal after an error occurred.
DKIM_SETUPThe user exited the Entri modal after prompting
FINISHED_SUCCESSFULLYThe user has successfully configured their domain using the automatic flow.
FINISHED_SUCCESSFULLY_MANUALThe user has successfully configured their domain using the manual flow.

Possible error codes

Below is a list of potential Entri modal errors. As a note, this list may not be exhaustive as some will be errors directly from the provider.

Error messageTitleDescription
AccessDeniedErrorInvalid PermissionsWe’re sorry an error occurred when trying to set up your domain. Please try again.
AuthCodeError2FA code invalid.Invalid code
EmailNotVerifiedErrorUnverified emailYou need to complete the email verification process in your provider account.
InvalidCredentialsErrorYou’ve exceeded the maximum number of login attemptsPlease reset your password or set up your domain manually.
InvalidDomainErrorDomain not foundWe found the domain in your {provider} account. However, your nameservers are pointed elsewhere. This means {provider} does not manage your DNS. Please try again with the service that manages your DNS settings.
InvalidNameserversDomain not foundWe couldn’t find the domain you entered in your provider account.
GenericErrorAn error occurred when trying to set up your domainWe’re sorry an error occurred when trying to set up your domain. Please try again.
PurchaseDomainErrorAn error occurred when trying to set up your purchase.Please refresh the page and try again.
RegistroDomainInTransitionDomain in transitionRegistro.br is transitioning your account to advanced DNS mode. This can take up to 5 minutes. Please try again in 5 minutes.
SessionErrorSession ErrorYour session has timed out. Please refresh the page and try again.
SpfRecordsLimitErrorAn error occurred when trying to set up your domainSPF record cannot have more than 10 domains
SpfRecordsLengthErrorAn error occurred when trying to set up your domainSPF record cannot be longer than 255 characters
UserInputTimeoutErrorYour session has timed outFor your security, your session has timed out. Please start over.
TimeoutErrorAn error occurred when trying to set up your domainWe’re sorry, the process took more time than expected to complete. Please try again.

Webhooks

Entri sends JSON data via webhook to notify your backend when events occur.

All webhook notifications will have the following header in the Request: "User-Agent": "Entri-Webhook".

This is the list of keys you will receive on a webhook notification:

JSON
{
  "id": "028b5078-8fed-4ffb-8e3e-3e6e6d8214b4",
  "user_id": "sample-user",
  "domain": "smallbusiness.com",
  "type": "domain.added",
  "propagation_status": "success",
  "dkim_status": "success",
  "redirection_status": "exempt",
  "ssl_status": "success",
  "setup_type": "automatic",
  "secure_status": "success", //Only for Entri Secure usage
  "power_status" : "success", //Only for Entri Power usage
  "cname_target": "my.saascompany.com", //Only for Entri Power and Secure usage
  "purchased_domains": ["domain1.com",...,"domainN.com"], //Only for Entri Sell usage
  "data": {
    "records_propagated": [
      {
        "type": "A",
        "host": "smallbusiness.com",
        "value": "54.153.2.220"
      },
      {
        "type": "CNAME",
        "host": "www",
        "value": "smallbusiness.com"
      }
    ],
    "records_non_propagated": [],
    "updated_objects": [
      "propagation_status",
      "ssl_status"
    ]
  }
}

The JSON object contains the following properties:

PropertyTypeDescription
idstringEntri’s ID for the webhook event
user_idstringThe user ID that your application can optionally send via the configuration object during setup (see the entri.showEntri method)
domainstringThe domain name set by your user
type[domain.purchased, domain.added, domain.propagation.timeout]The event type. Options:- domain.added- domain.timeout- domain.purchased
setup_type[automatic, manual]States if the dns record(s) was done in a manual or automatic way. Options:- automatic- manual
propagation_status[pending, success, failure, exempt]The DNS propagation status. Options:- success- pending- failure
dkim_status[pending, success, failure, exempt]Whether DKIM has been set up (see Handling DKIM, SPF, and DMARC Records). Options:- success- pending- failure- exempt (the feature is disabled)
redirection_status[pending, success, failure, exempt]If the wwwRedirect feature was enabled for your applicationId, then Entri will check to confirm the status of the url redirect.Options:- success- pending- failure- exempt (the feature is disabled)
data.records_propagatedarray of DNSRecord objectsSee above
data.records_non_propagatedarray of DNSRecord objectsSee above
updated_objectsarray of stringsThe object properties that have been updated since the last webhook event.
secure_status[pending, success, failure, exempt]Whether an SSL certificate has been provisioned (see Provisioning SSL Certificates). Options:- success- pending- failure- exempt (the feature is disabled)
power_status[pending, success, failure, exempt]Whether a domain has been powered (see Powering domains). Options:- success- pending- failure- exempt (the feature is disabled)
cname_targetstringAccount’s configured cname_target value for Entri Power and Secure or empty string if it doesn’t apply.
purchased_domainsarray of stringsList of purchased domains along the Entri Sell flow or empty array if not an Entri Sell flow.

Token creation (JWT)

To launch the Entri modal window in a session, you’ll need to fetch a JWT using the secret key and applicationId provided by the Entri dashboard. For security reasons and in order to not expose your secret in the browser, please make sure to fetch the JWT on the server-side of your application. The JWT expires after 60 minutes. You can use any networking library you’d like. Here’s an example using javascript:

JS
fetch('https://api.goentri.com/token', {
  method: 'POST',
  body: JSON.stringify({
    // These values come from the Entri dashboard
    applicationId: "12345",
    secret: "12345-67890"
  }),
})
.then(response => response.json())
.then(data => {
  console.log('Success:', data); // { "auth_token": "exampletoken..." }
})
.catch((error) => {
  console.error('Error:', error);
});

Enhancing Integration Security

To further enhance the security of your integration, you have the option to include the domain and/or dnsRecords in the JWT creation process. When these elements are added, Entri will validate them during execution, providing an additional layer of security.

POST https://api.goentri.com/token

Request body

JSON
{
    "applicationId": "{APPLICATION_ID}",
    "secret": "{SECRET}",
    "domain": "sampledomain.com",
    "freeDomain": true,
    "dnsRecords": [
        {
            "value": "samplevalue.com",
            "host": "@",
            "ttl": 300,
            "type": "CNAME"
        }
    ]
}

Parameters description

ParameterRequired?DefaultDescription
applicationIdYesN/AThe ID of your application (set in the dashboard)
domainYesN/AThe domain that will be configured
secretYesN/AClient secret, can be found in the Dashboard
dnsRecordsNoN/ARecords that will be configured on the domain
freeDomainNoN/AOnly applies to Entri Sell! Specifies a free or paid domain purchase.

Successful response (200 status)

JSON
{ "auth_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...." }

Secure API - SSL certificates

Check the domain’s eligibility

GET https://api.goentri.com/ssl?domain=www.example.com&rootDomain=false
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]"

Parameters description

ParameterRequired?DefaultDescription
domainYesN/AThe domain name to check
rootDomainNofalsetrue if checking the root domain’s eligibilityfalse if checking for the subdomain

Successful response (200 status)

JSON
{
  // Is the domain CNAMEed to the cname_target of the application?
  "eligible": true | false,

  // Is SSL provisioned?
  "sslStatus": "active" | "inactive",

  // Current cnameTarget set on the Dashboard
  "cnameTarget": URL | "",

  // Current cnameTarget value for the domain
  "applicationUrl": URL | ""
}

Possible error responses

Errors are returned as a {message: 'string'} object.

Error messageStatus
Domain provided couldn’t be resolved.400

Provision an SSL certificate

POST https://api.goentri.com/ssl
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]"

Request body

JSON
{
  "domain": "www.example.com",
  "applicationUrl": "my.applicationurl.com", /*Optional*/
  "redirectTo": "shops.example.com" /*Optional*/
}

Parameters description

ParameterRequired?DefaultDescription
domainYesN/AThe domain name to check
applicationUrlNoConfigured on Customer’s Dashboard.Overrides the pre-configured value set on the Dashboard.
redirectToNoN/AAllows you to create a custom redirect policy from the secured domain to any other domain or subdomain.

Successful response (200 status)

JSON
{ "message": "Success." }

Possible error responses

Errors are returned as a {message: 'string'} object.

Error messageStatus
There is already a valid certificate for this domain.502
Please review SSL eligibility status of this domain.502
Please complete step 1.502
Internal Server Error.502
ApplicationUrl is not reachable502

Renew an SSL certificate

PUT https://api.goentri.com/ssl
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]"

Request body

JSON
{ "domain": "www.example.com" }

Successful response (200 status)

json
{ "message": "Success." }

Possible error responses

Errors are returned as a {message: 'string'} object.

Error messageStatus
{detailed error message when renewing the domain}502

Deprovision an SSL certificate

DELETE https://api.goentri.com/ssl
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]"

Request body

JSON
{ "domain": "www.example.com" }

Successful response (200 status)

JSON
{ "message": "Success." }

Possible error responses

Errors are returned as a {message: 'string'} object.

Error messageStatus
Domain not valid502
{detailed error message when deleting the SSL certificate of the domain}502

Power API - Custom domains

Check the domain’s eligibility

GET https://api.goentri.com/power?domain=www.example.com&rootDomain=false
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]"

Parameters description

ParameterRequired?DefaultDescription
domainYesN/AThe domain name to check
rootDomainNofalsetrue if checking the root domain’s eligibilityfalse if checking for the subdomain

Successful response (200 status)

JSON
{
  // Is the domain CNAMEed to the cname_target of the application?
  "eligible": true | false,

  // Is the domain already powered?
  "powerStatus": "active" | "inactive",

  // Current cnameTarget set on the Dashboard
  "cnameTarget": URL | "",

  // Current cnameTarget value for the domain
  "applicationUrl": URL | "",

  //Paths with granted access to the root of the Application URL
  "powerRootPathAccess": [] | ["/path1", "/path2",..., "pathN"]
}

Possible error responses

Errors are returned as a {message: 'string'} object.

Error messageStatus
Domain provided couldn’t be resolved.400

Power a new domain

POST https://api.goentri.com/power
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]"

Request body

JSON
{
  "domain": "www.example.com",
  "applicationUrl": "my.applicationurl.com",
  "powerRootPathAccess: ['/path1', '/path2',..., '/pathN'] //optional
}

Successful response (200 status)

JSON
{ "message": "Success." }

Possible error responses

Errors are returned as a {message: 'string'} object.

Error messageStatus
This domain has been already powered.502
Please review Power eligibility status of this domain.502
Please complete step 1.502
Internal Server Error.502

Update an already powered domain

PUT https://api.goentri.com/power
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]"

Request body

JSON
{
  "domain": "www.example.com",
  "applicationUrl": "my.applicationurl.com",
  "powerRootPathAccess: ['/path1', '/path2',..., '/pathN'] //Optional
}

Successful response (200 status)

JSON
{ "message": "Success." }

Possible error responses

Errors are returned as a {message: 'string'} object.

Error messageStatus
{detailed error message when powering again the domain}502

Remove a powered domain

DELETE https://api.goentri.com/power Header "Authorization: [JWT authorization]" Header "applicationId: [yourApplicationID]"

Request body

JSON
{ "domain": "www.example.com" }

Successful response (200 status)

JSON
{ "message": "Success." }

Possible error responses

Errors are returned as a {message: 'string'} object.

Error messageStatus
Domain not valid502
detailed error message when deleting the SSL certificate of the domain502

Entri Connect

POST https://api.goentri.com/sharing/connect
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]"

Request body

JSON
{
   "applicationId":"yourApplicationID",
   "config":{
      "prefilledDomain": "mydomain.com",
      "dnsRecords":[
         {
            "type":"CNAME",
            "host":"www",
            "value":"test.com",
            "ttl":300
         }
      ]
   }
}
//All the rest of possible configuration options, see https://developers.entri.com/api-reference#entrishowentriconfig for more details.

Successful response (200 status)

JSON
{
    "link": "https://app.goentri.com/share/dd339cf05f2646539e79251f8e62f0c5",
    "job_id": "9c128fe4-63cd-4ec4-9ae8-8a9d06c0e6de"
}

Entri Sell

POST https://api.goentri.com/sharing/sell
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]"

Request body

JSON
{
   "applicationId":"yourApplicationID",
   "config":{
      "prefilledDomain": "mydomain.com",
      "dnsRecords":[
         {
            "type":"CNAME",
            "host":"www",
            "value":"test.com",
            "ttl":300
         }
      ]
   }
}
  //All the rest of possible configuration options, see https://developers.entri.com/api-reference#entrishowentriconfig for more details.

Provider Health

Returns the status of all the providers for an application ID that Entri supports.

GET https://api.goentri.com/providers_health
Header "Authorization: [JWT authorization]"
Header "applicationId: [yourApplicationID]"

Response body

JSON
{
  "message": "success",
  "data": [
    {
      "provider": "IONOS",
      "enabled": true
    },
    {
      "provider": "Enom",
      "enabled": true
    },
    {
      "provider": "Amazon Route 53",
      "enabled": true
    },
    ...
  ]
}