Join the community today
Register Now

Domains DNS Cloudflare Cloudflare Domain Registrar Transfers Reduced My Costs By 37% !

Discussion in 'Domains, DNS, Email & SSL Certificates' started by eva2000, Nov 17, 2018.

Thread Status:
Not open for further replies.
  1. eva2000

    eva2000 Administrator Staff Member

    54,088
    12,177
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,735
    Local Time:
    12:56 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
    Privacy and security focused Cloudflare Domain Registrar with cost based pricing was announced during Cloudflare's 8th birthday week list of announcements and is currently in early access testing phase. I currently have 6x XYZ domain extensions up for renewal next month at Namecheap, so thought I'd test out Cloudflare Domain Registrar's domain transfer process and see how much I can save at cost based domain pricing for XYZ domains.

    For Cloudflare Domain Registrar documentation and FAQ outline check out the official docs here.

    Cloudflare Add New Sites



    For this domain registrar transfer process, I signed up a separate and new Cloudflare account. You don't need to sign up a new Cloudflare account, you can use your existing account if you want. I just prefer Cloudflare free Universal SSL certificates listed domains to be grouped by specific Cloudflare account's associated nameservers.

    To meet Cloudflare Domain Registrar requirements, need to first have the intended domains being transferred running using Cloudflare's own DNS nameservers before initiating the domain registrar transfer process. I used Cloudflare's API to bulk add the intended domains to my newly signed up Cloudflare account's global API key. You could of course just do manual add site process for Cloudflare account too but it would be more time consuming if you have dozens or hundreds of domains to add compared to using Cloudflare API to bulk add all domains.

    To do this I'd need access to SSH terminal of a server or local computer and first export Cloudflare API key and user variables and install jq package. This was done on CentOS 7 server
    Code (Text):
    yum -y install jq
    export CF_API_EMAIL=you@example.com
    export CF_API_KEY=abc123def456ghi789
    

    Then setup domains.txt file with one domain per line for domains you intend to setup initially for Cloudflare account
    Code (Text):
    touch domains.txt
    

    add to domains.txt file one per line, the intended domains you want to transfer to Cloudflare Domain Registrar
    Code (Text):
    domain1.xyz
    domain2.xyz
    domain3.xyz
    domain4.xyz
    domain5.xyz
    domain6.xyz
    

    Add domains in domain.txt to your Cloudflare account via CF API and populate json output into result.txt text file
    Code (Text):
    for domain in $(cat domains.txt); do \
      curl -sX POST -H "X-Auth-Key: $CF_API_KEY" -H "X-Auth-Email: $CF_API_EMAIL" \
      -H "Content-Type: application/json" \
      "https://api.cloudflare.com/client/v4/zones" \
      --data '{"name":"'$domain'","jump_start":true}' | tee -a result.txt; done
    

    You will be able to see pretty json output for populated result.txt file using command
    Code (Text):
    cat result.txt | jq
    

    You will be able to inspect and extract the Cloudflare DNS nameservers via the result.txt file contents. The outputted DNS nameservers are the ones you need to update with their existing domain registrars for each intended domain you want to transfer to Cloudflare Domain Registrar for this Cloudflare account. Example further below is of using Namesilo's API to bulk update domains' nameservers.
    Code (Text):
    cat result.txt | jq -r ".result.name_servers[]" | head -n2
    

    Example output for the above command
    Code (Text):
    cat result.txt | jq -r ".result.name_servers[]" | head -n2
    arch.ns.cloudflare.com
    nelly.ns.cloudflare.com
    

    You will also be able to use the result.txt info to extract the Cloudflare zoneid and domain name if for your records if you intend to further use the Cloudflare API to work with specific domains as you need the zoneid
    Code (Text):
    cat result.txt | jq -r '.result | "\(.id) \(.name)"'
    

    so something like this will be outputted
    Code (Text):
    cat result.txt | jq -r '.result | "\(.id) \(.name)"'
    yourzoneid1 domain1.xyz
    yourzoneid2 domain2.xyz
    yourzoneid3 domain3.xyz
    yourzoneid4 domain4.xyz
    yourzoneid5 domain5.xyz
    yourzoneid6 domain6.xyz
    


    Cloudflare Domain Registrar Transfer Process



    Now wait for each domain's listing in your Cloudflare account to go from nameserver pending to Active status - you may need to wait up to 24hrs for Cloudflare to detect the DNS nameserver changes for each domain you intend to transfer over. Once updated, you will see the listed domains marked as = Active

    cf-account-listed-domains-01.png

    If you have been granted early access to Cloudflare Domain Registrar, you will see on Cloudflare Account Home page a top navigation link to the far right for = Domain Registration. This is where you initiate your domain transfer request process.

    The usual process for domain transfers is that you unlock your intended domains from existing domain registrar and obtain an EPP authorisation code first. You can see specific instructions for common domain registrars at Transfer Instructions - Cloudflare Registrar.


    For my particular case of transferring domains from NameCheap to Cloudflare Domain Registrar, I followed instructions outlined at Namecheap - Cloudflare Registrar.

    For my 6x XYZ domains, cost based pricing is US$8.00 per domain with US$0.18 ICAAN fee per domain, so total cost is US$8.18x6 = US$49.08. Remember to add a payment method to be able to proceed.

    Note, the page mentions you can turn off auto-renew on the Overview page - but it seems to be missing for me right now. Cloudflare says this feature is currently in staging slated for release next week :)

    cf-domains-registrar-transfer-01.png

    Next is to confirm the domains and go to next step to enter EPP authorisation codes you obtained from your existing domain registrar.

    cf-domains-registrar-transfer-02.png
    cf-domains-registrar-transfer-03.png

    Then after confirming the authorization codes, you will need to enter in contact information to confirm and finalize the domain transfers to Cloudflare Domain Registrar. Note you can't leave Organization field blank as the confirm and finalize button is greyed out until that field is populated. For that I just added my first and last name.

    cf-domains-registrar-transfer-04.png

    Once you click confirm and finalize transfer you will get to the completion page

    cf-domains-registrar-transfer-05.png

    and then receive separate emails for each domain you're transferring confirming the domain transfer request and the domain transfer initiated processes

    cf-domain-transfer-requested-email-01.png

    cf-domain-transfer-initiated-email-01.png

    Now to wait for the form of authorization emails to come in via your domain's existing domain registrar contact email address for you to approve the initiated domain transfer to Cloudflare Domain Registrar.

    On the Domain Registration page it will show status of transfer but confusing text is for
    When in fact we're waiting on this form of authorization emails and clicking the approval links.

    cf-domain-transfer-status-01-pub.png

    Cloudflare Domain Registrar Transfer Process Completion



    I approved all 6x form of authorization email's approval links and already domains are starting to receive the Domain Transfer Complete emails :)

    cf-domain-transfer-complete-01.png

    Cloudflare domain overview page has a Domain Registrar status and shows the registrar, expiration date

    cf-domain-transfer-complete-domain-overview-01.png

    Some transferred domains' Overview page lists expiration date as invalid - apparently there can be delays in updating that for display. But you can check actual whois record for the domain to confirm the expiration date.

    cf-invalid-date.png

    You can verify if your transferred domains' whois info is redacted by Cloudflare via whois command in SSH terminal. If you used the Cloudflare API steps above to add domains listed in domains.txt file via curl command, you can also easily use that domains.txt file to run whois checks against whois.cloudflare.com nameservers.
    Code (Text):
    cat domains.txt | while read d; do whois -h whois.cloudflare.com $d; done
    

    This will run whois query against each domain listed in domains.txt file - example output
    Code (Text):
    [Querying whois.cloudflare.com]
    [whois.cloudflare.com]
    Domain Name: DOMAIN1.XYZ
    Registry Domain ID:
    Registrar WHOIS Server: whois.cloudflare.com
    Registrar URL: https://www.cloudflare.com
    Updated Date: 2018-11-17T06:00:23Z
    Creation Date: 2018-11-17T03:38:44Z
    Registrar Abuse Contact Email: registrar-abuse@cloudflare.com
    Registrar Abuse Contact Phone: +1.4153197517
    Registrar Registration Expiration Date:
    Registrar: Cloudflare, Inc.
    Registrar IANA ID: 1910
    Registry Registrant ID:
    Registrant Name: DATA REDACTED
    Registrant Organization: DATA REDACTED
    Registrant Street: DATA REDACTED
    Registrant City: DATA REDACTED
    Registrant State/Province: DATA REDACTED
    Registrant Postal Code: DATA REDACTED
    Registrant Country: DATA REDACTED
    Registrant Phone: DATA REDACTED
    Registrant Phone Ext: DATA REDACTED
    Registrant Fax: DATA REDACTED
    Registrant Fax Ext: DATA REDACTED
    Registrant Email: DATA REDACTED
    Registry Admin ID:
    Admin Name: DATA REDACTED
    Admin Organization: DATA REDACTED
    Admin Street: DATA REDACTED
    Admin City: DATA REDACTED
    Admin State/Province: DATA REDACTED
    Admin Postal Code: DATA REDACTED
    Admin Country: DATA REDACTED
    Admin Phone: DATA REDACTED
    Admin Phone Ext: DATA REDACTED
    Admin Fax: DATA REDACTED
    Admin Fax Ext: DATA REDACTED
    Admin Email: DATA REDACTED
    Registry Tech ID:
    Tech Name: DATA REDACTED
    Tech Organization: DATA REDACTED
    Tech Street: DATA REDACTED
    Tech City: DATA REDACTED
    Tech State/Province: DATA REDACTED
    Tech Postal Code: DATA REDACTED
    Tech Country: DATA REDACTED
    Tech Phone: DATA REDACTED
    Tech Phone Ext: DATA REDACTED
    Tech Fax: DATA REDACTED
    Tech Fax Ext: DATA REDACTED
    Tech Email: DATA REDACTED
    Registry Billing ID:
    Billing Name: DATA REDACTED
    Billing Organization: DATA REDACTED
    Billing Street: DATA REDACTED
    Billing City: DATA REDACTED
    Billing State/Province: DATA REDACTED
    Billing Postal Code: DATA REDACTED
    Billing Country: DATA REDACTED
    Billing Phone: DATA REDACTED
    Billing Phone Ext: DATA REDACTED
    Billing Fax: DATA REDACTED
    Billing Fax Ext: DATA REDACTED
    Billing Email: DATA REDACTED
    
    URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net
    
    For more information on Whois status codes, please visit https://icann.org/epp
    
    Cloudflare provides more than 10 million domains with the tools to give their global users a faster, more secure, and more reliable internet experience.
    
    NOTICE:
    
    Data in the CloudFlare Registrar WHOIS database is provided to you by CloudFlare
    under the terms and conditions at https://www.cloudflare.com/domain-registration-agreement/
    
    By submitting this query, you agree to abide by these terms.
    
    Register your domain name at https://www.cloudflare.com/registrar/
    


    Cloudflare Domain Registrar Costs versus Namecheap Costs



    How does this pricing compared to renewal at NameCheap ? XYZ domain renewal pricing is US$12.88 + US$0.18 = US$13.06 per domain x 6 = US$78.36. So Cloudflare Domain Registrar's XYZ domain cost pricing reduces my domain renewal costs by US$29.28 per year for those 6x XYZ domains. That's a savings of just over 37% !

    namecheap-renew-costs-01.png

    Notes
    • Cloudflare Registrar does not currently support email forwarding. If you require email forwarding from your registrar, you will need to use a third-party forwarding service and configure your MX record in the Cloudflare DNS setting for the domain.
    • FYI, full disclosure though, I am now a Cloudflare MVP one of the first group of people to be invited into the new MVP program that Cloudflare is developing so I get special perks and access to new and upcoming Cloudflare products and some input into features/requests and alpha/beta testing :) However, all domain transfer costs above are paid by me fully.
     
    Last edited: Nov 17, 2018
  2. eva2000

    eva2000 Administrator Staff Member

    54,088
    12,177
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,735
    Local Time:
    12:56 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+

    Cloudflare Domain Registrar Transfer Out Unlock & Editing WHOIS Info



    Some Cloudflare users have commented on the lack of ability to edit Cloudflare Domain Registrar WHOIS and to transfer out/unlock their domains on Cloudflare. Cloudflare will only show the transfer out/unlock after 60 days from initial domain transfer as per registrar rules. So I checked my above listed example domain transfers as they are now past the 60 day mark after initial transfer to Cloudflare Domain Registrar from Namecheap.

    Yup you can now unlock and transfer out your domain away from Cloudflare Domain Registrar if you want after 60 days from transferring in. You can also edit your WHOIS info too :)

    cloudflare-domain-registrar-transfer-out-01.png

    cloudflare-domain-registrar-edit-whois-01.png
     
  3. eva2000

    eva2000 Administrator Staff Member

    54,088
    12,177
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,735
    Local Time:
    12:56 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+

    Namesilo.com to Cloudflare Domain Registrar Transfers Via APIs



    The above Cloudflare bulk domain addition via Cloudflare API prior to domain registrar transfer instructions are handy to have when you have dozens or hundreds of domains to transfer. However, you still need to bulk update on loosing domain registrar end a few settings to unlock domains, retrieve EPP codes and update Cloudflare name servers prior to being able to transfer domains to Cloudflare Domain Registrar.

    Below is my latest attempt to transfer dozens of domains from Namesilo.com to Cloudflare Domain Registrar via Namesilo API end to bulk update domains to unlock domains, retrieve EPP codes, disable auto-renewal and update Cloudflare name servers prior

    First this is to enable Namesilo API and whitelist your server IP you intend to run below API curl commands from so that you are able to run Namesilo API commands.

    namesilo-api-get-01.png

    Second is retrieve and set Namesilo API key in variable in SSH command/session called nskey. This nskey variable is valid only for the SSH session. If you log out and log back in, you need to set it again by typing the below line.
    Code (Text):
    nskey=your_namesilo_apikey
    

    Install yq command to be able to prettify and parse Namesilo's xml generated API output. The yq install also includes command xq which allows parsing xml output from API responses
    Code (Text):
    pip install yq
    

    Example to list all domains on in your Namesilo account via api would get the following API response output piped through xq command
    Code (Text):
    curl -s "https://www.namesilo.com/api/listDomains?version=1&type=xml&key=$nskey" | xq .
    {
      "namesilo": {
        "request": {
          "operation": "listDomains",
          "ip": "xxx.xxx.xxx.xxx"
        },
        "reply": {
          "code": "300",
          "detail": "success",
          "domains": {
            "domain": [
              "domain.com",
              "domain.net"
            ]
          }
        }
      }
    }
    

    To just list domains you can manipulate xq filter
    Code (Text):
    curl -s "https://www.namesilo.com/api/listDomains?version=1&type=xml&key=$nskey" | xq -r '.namesilo.reply.domains.domain[]'
    
    domain.com
    domain.net
    

    With the Namesilo API verified as working, we need to bulk unlock domains, retrieve EPP codes and update nameservers to Cloudflare bulk API derived nameservers outlined in above 1st post.
    Code (Text):
    cat result.txt | jq -r ".result.name_servers[]" | head -n2
    arch.ns.cloudflare.com
    nelly.ns.cloudflare.com
    

    You would of already created and populated the domains.txt file from above steps in 1st post
    Code (Text):
    cd /root/tools
    mkdir cfdomains
    cd cfdomains
    touch domains.txt
    

    domains.txt would contain all domains (one per line) you intend to update from Namesilo which are already added to Cloudflare account via API but not yet transferred domain registrar wise.

    Now to domain unlock https://www.namesilo.com/api_reference.php#domainUnlock
    Code (Text):
    for domain in $(cat domains.txt); do curl -s "https://www.namesilo.com/api/domainUnlock?version=1&type=xml&key=$nskey&domain=$domain" | tee -a unlock-result.txt; done
    

    domain disable autorenewal https://www.namesilo.com/api_reference.php#removeAutoRenewal
    Code (Text):
    for domain in $(cat domains.txt); do curl -s "https://www.namesilo.com/api/removeAutoRenewal?version=1&type=xml&key=$nskey&domain=$domain" | tee -a noautorenewal-result.txt; done
    

    change nameservers https://www.namesilo.com/api_reference.php#changeNameServers

    set nsone and nstwo variables to the Cloudflare namservers needed to activate/add your domains to Cloudflare account.
    Code (Text):
    nsone=arch.ns.cloudflare.com
    nstwo=nelly.ns.cloudflare.com
    

    Code (Text):
    for domain in $(cat domains.txt); do curl -s "https://www.namesilo.com/api/changeNameServers?version=1&type=xml&key=$nskey&domain=$domain&ns1=$nsone&ns2=$nstwo" | tee -a nameserver-update-result.txt; done
    

    retrieve EPP codes https://www.namesilo.com/api_reference.php#retrieveAuthCode which will be sent to domain's admin email contact
    Code (Text):
    for domain in $(cat domains.txt); do curl -s "https://www.namesilo.com/api/retrieveAuthCode?version=1&type=xml&key=$nskey&domain=$domain" | tee -a epp-result.txt; done
    

    After this, you will receive lots of Namesilo emails especially if you have Domain Defender Alerts enabled. Some of the emails will be confirmation of actions for unlocking domains, retrieving EPP codes, disabling auto-renewal and updating nameservers in bulk via Namesilo API.

    At this stage after you have done Cloudflare bulk API add from 1st post along with Namesilo API bulk changes outlined in this post, you should have Cloudflare dashboard listing all your newly added domains as active in Cloudflare account. You will be then ready to do the domain registrar transfers from Namesilo to Cloudflare. Very handy if you have dozens, hundreds or thousands of domains you need to add to Cloudflare account + transfer from Namesilo to Cloudflare Domain Registrar :)

    The list of bulk domains added to my Cloudflare account from Namesilo prior to Cloudflare domain registrar transfer which I will be doing soon as domains up for renewal soon.

    cf-added-domains-prior-to-registrar-transfer-01.png

    Total cost saved from transferring the most recent above set of domains from Namesilo to Cloudflare Domain Registrar is US$31.80/yr ! :D
     
    Last edited: Feb 21, 2019
  4. eva2000

    eva2000 Administrator Staff Member

    54,088
    12,177
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,735
    Local Time:
    12:56 AM
    Nginx 1.27.x
    MariaDB 10.x/11.4+
Thread Status:
Not open for further replies.