Recently we migrated our help docs over to Intercom Articles so we could take advantage of the very slick integrations it has with Intercom Messenger (which we absolutely love, and have been using to support our customers via chat / email for over 2 years now).
We had 3 main technical requirements for our Help Center:
Intercom has a great help doc on how to set up custom domains for Articles. It’s a pretty straight-forward process to add your domain and create a CNAME record in your DNS provider. But, this process doesn’t support HTTPS.
Intercom also explains how to configure SSL using Cloudflare and AWS (CloudFront). Super helpful if you’re already on those platforms, but this didn’t meet our third requirement of using Google Cloud.
I scoured the internet for steps on how to set this up and found nothing. So I set about to figure it out myself!
The biggest challenge was figuring out which Google Cloud product to use, because, well, Google Cloud’s product naming strategy is a bit convoluted. Once I determined we should use a global external HTTPS load balancer with an Internet NEG as an external backend, I was well on my way!
The architecture is just complicated enough that I found it useful to map out the flow through the various components.
You can follow these 6 quick steps to set up the system for your own Help Center.
(Okay - it’s actually a very involved process with many sub-steps, but we’ll walk you through every detail 😊 )
The Internet NEG connects the load balancer to Intercom Articles. Start by going to Network endpoint groups in your Google Cloud Console and click CREATE NETWORK ENDPOINT GROUP.
Fill in the fields as shown in the example below. The important detail is using “custom.intercom.help” as the fully qualified domain name (which I determined from Intercom’s CloudFront article).
Google Cloud Help Doc: Creating the NEG and internet endpoint
There are lots of steps to setting up a load balancer, and fortunately Google Cloud provides a decent “wizard” to walk you through the process. We’ll break down each step with all the details needed for proper configuration.
Go to Load balancing in your Google Cloud Console and click CREATE LOAD BALANCER.
Choose From Internet to my VMS or serverless services and Classic HTTP(S) Load Balancer and click CONTINUE.
Enter a name for the load balancer. I standardized how I named everything to help keep things straight: “intercom-help-” followed by the name of the particular object.
In the Backend configuration panel choose CREATE A BACKEND SERVICE.
Give the backend service a name, choose Internet network endpoint group as the type, and select intercom-help-neg (the NEG you created in step 1).
Make your choices for the remaining optional settings. I chose to Enable Cloud CDN, which noticeably decreased the load time of articles in our Help Center. After choosing your desired options click CREATE.
You can use the default settings (Simple host and path rule) for this section because you want all traffic that goes to the load balancer to be served by the backend service you just created.
Name the frontend and choose HTTPS as the protocol.
In the IP address field, choose CREATE IP ADDRESS.
Note: An Ephemeral IP will not work, because later you will enter the IP address in your DNS provider, so it needs to be permanent to properly map your subdomain to the load balancer.
Name the IP address and click RESERVE.
In the Certificate field choose to CREATE A NEW CERTIFICATE.
You can choose to upload a certificate if you’ve already purchased one somewhere else, or create a Google-managed certificate. I went with the managed option, because it’s free (included in the cost of the load balancer) and requires no effort on my part to set it up and keep it current. Either way, you’ll want to make sure the certificate is for the subdomain you plan to use for your Intercom Help Center.
Name your certificate, enter the domain, and click CREATE.
Check Enable HTTP to HTTPS redirect, which automatically creates an additional partial HTTP load balancer consisting of a URL map, a forwarding rule, and a target HTTP proxy. This partial HTTP load balancer uses the same IP address as your HTTPS load balancer and redirects HTTP requests to your load balancer's HTTPS frontend. It uses 301 Moved Permanently as the default redirect response code.
If you don’t check this box, then you can still manually set it up later.
Review everything you’ve set up and then click CREATE. It will take a few minutes for the load balancer to activate.
On the load balancer page you will notice a partial HTTP load balancer was automatically created for you that redirects traffic from HTTP to HTTPS. If you did not enable this option earlier, you can create the redirect yourself following these steps.
The load balancer you configured appears in the list now.
Click on it to review the settings, and copy the static IP address that was created.
Now you can connect your subdomain to the load balancer by creating an A record. Go to your DNS provider and create a new A record with your subdomain and the IP address you copied earlier.
It will probably take several minutes for the A record to propagate and become active. After it’s active, it will take another 10 minutes or so for the Google-managed SSL certificate to be provisioned (note: provisioning only starts once the A record has been set).
Once it’s provisioned the status will turn to Active.
Finally, go to your Intercom account -> Articles -> Settings and click on Set up the basics.
Here you can enter your custom subdomain and click Close.
Now test your custom domain and it should show your Intercom Help Center, served over HTTPS with a Google-managed SSL certificate.
Here’s what our Help Center at learn.gqueues.com looks like, with the certificate details:
At the time of this writing, Google Cloud charges 2.5 cents per hour for the Load Balancer, which comes to about $18 per month. You can view the latest pricing here to estimate your own costs.
It definitely takes some effort to set up and configure a load balancer on Google Cloud and connect it to Intercom. We’re very happy with the result though -- everything is managed in Google Cloud, the charges are added to our existing bill, and the CDN makes our help articles load faster!
Hopefully these steps save you the hours (days!) of effort it took me to figure it all out 😊