Configure CNAME for Pendo Mobile

Last updated:

A Canonical Name record (abbreviated as CNAME record) is a type of resource record in the Domain Name System (DNS) used to specify that a domain name is an alias for another domain, which is the "canonical" domain.

The CNAME feature allows you to create hostnames under your own application’s domain, which are used in place of Pendo hostnames for sending events and downloading guide content. This helps ensure that events are collected and guides are served to end-users who are subject to ad-blocking software, firewalls, web filters, etc.

Configuration

You must provide a subdomain of your corporate domain, such as product.example.com (where ‘example’ is your corporate domain).

Pendo provides a set of required DNS entries that must be created. Examples are shown in this table:

Domain CNAME Description
product.example.com 1234567812345678-txt.example.pendo.io This record is used to validate to Google that Pendo can serve data.product.example.com via Google App Engine.
mobile.product.example.com 1234567812345678-data.example.pendo.io Based on your data center the record is an alias to either: data.pendo.io
data.eu.pendo.io
us1.data.pendo.io
data.jpn.pendo.io
_0123456789abcdef. content.product. example.com _fedcab987654321.acm-validations.aws This record is used to validate subdomain ownership to Amazon so that SSL certificates can be autogenerated.


The examples are placeholders. Pendo provides the actual set of DNS entries to be created. You need a unique content domain for each subscription where you have Pendo installed.

Once the DNS entries are configured, Pendo completes the infrastructure configuration that includes autogeneration of SSL certificates for the new hostnames.

Pendo updates the "data host" and "content host" in the subscription settings to point to mobile.product.example.com.

Enabling CNAME in Android

Add the following entries to the app’s Manifest.xml, inside the <application> tag:

example:
<meta-data android:name="pnd_device_url" android:value="https://mobile.product.example.com" />
<meta-data android:name="pnd_app_url" android:value="https://mobile.product.example.com/" />
<meta-data android:name="pnd_data_url" android:value="https://mobile.product.example.com/" />

Enabling CNAME in iOS

Add the following mapping to your info.plist:

<key>PNDCNames</key> 
<dict>
<key>PNDDeviceURL</key>
<string>https://mobile.product.example.com</string>

<key>PNDAppURL</key>
<string>https://mobile.product.example.com</string>

<key>PNDDataURL</key>
<string>https://mobile.product.example.com</string>
 

Important: When enabling CNAME in both Android and iOS, make sure the three URLs are directed to a single URL.

Frequently asked questions

Can I provide my own SSL certificates?

You can provide a single SSL certificate suitable for both the data and content hostnames or provide two separate certificates. There are two ways to handle certificate generation.

  1. Generate a key and CSR, obtain a certificate from your CA, and send us an encrypted archive containing the certificate chain and private key. Our default is to send PGP-encrypted files via keybase.io to a member of our OPS team, such as https://keybase.io/a13m. If you prefer your own approved secure file transfer mechanism, we can use that instead.

  2. Provide us a text file suitable for generating a CSR. Pendo generates a key and CSR, sends you the CSR, which you use to obtain a certificate from your CA. This eliminates the need to pass a private key between parties; the certificate chain is safe to send via plaintext email. The CSR input file looks like the following:
[ req ]
default_bits = 2048
prompt = no
encrypt_key = no
default_md = sha1
distinguished_name = dn
req_extensions = req_ext

[ dn ]
CN = data.product.example.com
O = Example, Inc.
L = Some City
ST = NC
C = US
0.OU= Engineering

[ req_ext ]
subjectAltName = DNS:data.product.example.com, DNS:content.product.example.com
Was this article helpful?
0 out of 0 found this helpful