Overview
The CNAME feature allows you to create hostnames under your own application’s domain which will be used in place of Pendo hostnames for both 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.
What does CNAME stand for?
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.
Configuration
You will provide a subdomain of your corporate domain, such as product.example.com
(where ‘example’ is your corporate domain).
Pendo will provide a set of required DNS entries that must be created. They will look something like:
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-data.product.example.com | 1234567812345678-data.example.pendo.io | This record is an alias to app.pendo.io. |
mobile-device.product. example.com | 1234567812345678-mobile-device.example.pendo.io | This record is an alias to a custom CDN configuration for your Pendo subscription. |
_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 above examples are placeholders, Pendo will provide the actual set of DNS entries to be created. You will need a unique content domain for each subscription
you have Pendo installed in.
Once the DNS entries are configured, Pendo will complete the infrastructure configuration which includes autogeneration of SSL certificates for the new hostnames.
Pendo will update the "data host" and "content host" in the subscription settings to point mobile-data.product.example.com
and mobile-device.product.example.com
, respectively.
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://device_url.acme.com/" />
<meta-data android:name="pnd_app_url" android:value="https://app_url.acme.com/" />
<meta-data android:name="pnd_data_url" android:value="https://data_url.acme.com/" />
Enabling CNAME in iOS
Add the following mapping to your info.plist
<key>PNDCNames</key>
<dict>
<key>PNDDeviceURL</key>
<string>https://device_url.acme.com</string>
<key>PNDAppURL</key>
<string>https://app_url.acme.com</string>
<key>PNDDataURL</key>
<string>https://data_url.acme.com</string>
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 the certificate generation.
-
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.
- 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