Skip to content

Custom Domain Setup

Use your own custom domain for download pages to create a fully branded customer experience.

What is custom domain:

Replace: yourshop.myshopify.com/apps/alvadigitaldownloads
With: downloads.yourshop.com
or: files.yourshop.com
or: get.yourshop.com

Benefits:

✓ Professional branding
✓ Customer trust
✓ Better SEO
✓ Consistent experience
✓ Custom SSL certificate
✓ Email deliverability

Before setting up:

☑ Own a domain (yourshop.com)
☑ Access to DNS settings
☑ SSL certificate (Let's Encrypt free)
☑ Professional or Enterprise plan
☑ Technical knowledge (basic DNS)

DNS providers supported:

✓ Cloudflare
✓ Google Domains
✓ GoDaddy
✓ Namecheap
✓ AWS Route 53
✓ All major DNS providers

Popular choices:

downloads.yourshop.com

Pros: Clear purpose, easy to remember
Use: Download pages, file access

files.yourshop.com

Pros: Short, professional
Use: File hosting, downloads

get.yourshop.com

Pros: Action-oriented, modern
Use: Product downloads

members.yourshop.com

Pros: Exclusive feel
Use: Member-only content

Best practices:

✓ Keep it short (1-2 words)
✓ Related to downloads/files
✓ Easy to spell
✓ Memorable
❌ Avoid long subdomains
❌ Don't use numbers/hyphens
❌ Not generic (app.yourshop.com)

CNAME record setup:

Step 1: Get Alva DNS target

Settings → Advanced → Custom Domain
Domain: downloads.yourshop.com
[Verify Domain]
DNS target provided:
alva-downloads.global.ssl.fastly.net

Step 2: Add CNAME in DNS provider

Cloudflare example:

DNS → Add record
Type: CNAME
Name: downloads
Target: alva-downloads.global.ssl.fastly.net
Proxy status: ☐ Proxied (DNS only)
TTL: Auto
[Save]

Google Domains example:

DNS → Custom records → Manage custom records
Host name: downloads
Type: CNAME
TTL: 3600
Data: alva-downloads.global.ssl.fastly.net
[Add]

GoDaddy example:

DNS Management → Add → CNAME
Host: downloads
Points to: alva-downloads.global.ssl.fastly.net
TTL: 1 Hour
[Save]

Wait for propagation:

Propagation time: 15 minutes - 48 hours
Typical: 1-4 hours
Fastest: 15-30 minutes (with low TTL)
Check propagation:
https://www.whatsmydns.net/
Enter: downloads.yourshop.com
Type: CNAME
Result: Should show alva-downloads.global.ssl.fastly.net

Let’s Encrypt (free):

Auto-provisioning:

After DNS configured:
1. Alva detects DNS record
2. Automatically requests SSL certificate
3. Let's Encrypt validates domain
4. Certificate installed
5. HTTPS enabled
Time: 5-30 minutes
Cost: Free
Renewal: Automatic (every 90 days)

Verify SSL:

Visit: https://downloads.yourshop.com
Check: Lock icon in browser
Certificate: Valid, issued by Let's Encrypt
Expiry: Shows expiration date

Use your own certificate:

Upload custom cert:

Settings → Custom Domain → SSL Certificate
☑ Use custom SSL certificate
Certificate: [Upload .crt file]
Private key: [Upload .key file]
Chain: [Upload chain.crt] (optional)
[Upload Certificate]
Use case: EV certificates, wildcard certs

Confirm setup:

Verification steps:

Settings → Custom Domain → Verify
Checks:
✓ DNS record exists
✓ Points to correct target
✓ SSL certificate valid
✓ HTTPS accessible
✓ No redirect loops
Status: ✓ Verified

Troubleshooting verification:

Common issues:

❌ DNS not propagated yet
Solution: Wait 1-24 hours, retry
❌ CNAME points to wrong target
Solution: Update DNS record
❌ SSL certificate pending
Solution: Wait 5-30 minutes for auto-provision
❌ Cloudflare proxy enabled
Solution: Disable proxy (DNS only)

Switch to custom domain:

Automatic update:

Settings → Custom Domain → Download Links
● Use custom domain for all download links
○ Use default domain
New download links:
Before: yourshop.myshopify.com/apps/alvadigitaldownloads/download?key=...
After: downloads.yourshop.com/download?key=...
Existing links: Automatically redirect

Update email templates:

Email configuration:

Settings → Email Settings → Templates
☑ Use custom domain in emails
Download button URL:
Old: https://yourshop.myshopify.com/apps/...
New: https://downloads.yourshop.com/download?key=...
Benefits:
• Professional appearance
• Branded experience
• Better email deliverability

Customize appearance:

Logo and branding:

Settings → Custom Domain → Branding
Logo: [Upload logo for custom domain]
Favicon: [Upload .ico file]
Primary color: #007AFF
Background: Custom background image
Apply: Custom domain pages only

Advanced customization:

Custom styles:

/* Custom CSS for downloads.yourshop.com */
.download-page {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
font-family: 'Montserrat', sans-serif;
}
.download-header {
background: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.download-button {
background: #007AFF;
color: white;
padding: 15px 40px;
border-radius: 8px;
font-weight: 600;
transition: transform 0.2s;
}
.download-button:hover {
transform: scale(1.05);
}

Use subdirectory instead:

Not recommended but possible:

yourshop.com/downloads/
vs
downloads.yourshop.com
Requires:
• Reverse proxy setup
• More complex configuration
• Server-side redirect rules
Recommendation: Use subdomain (easier)

Different domains for different purposes:

Multi-domain setup:

downloads.yourshop.com → Main download page
members.yourshop.com → Member-only content
premium.yourshop.com → Premium products
Configuration:
Map products to specific domains
Different branding per domain
Separate analytics

Optimize for search:

Meta tags:

Settings → Custom Domain → SEO
Title: {product_name} - Download | Your Shop
Description: Download your {product_name} instantly. Access your files anytime.
Keywords: digital download, {product_name}, instant access
Open Graph:
og:title, og:description, og:image
Twitter Card tags

Search engine indexing:

Robots.txt:

User-agent: *
Allow: /download
Disallow: /api
Disallow: /admin
Sitemap: https://downloads.yourshop.com/sitemap.xml

Sitemap generation:

Settings → Custom Domain → SEO → Generate Sitemap
☑ Auto-generate sitemap
Include: Product download pages
Update: Daily
Access: downloads.yourshop.com/sitemap.xml

Analytics setup:

Google Analytics:

Settings → Custom Domain → Analytics
Google Analytics ID: UA-XXXXXXXXX-X or G-XXXXXXXXXX
Track:
☑ Page views (download pages)
☑ Download events
☑ Conversion events
☑ Custom dimensions (product, customer)
Domain: downloads.yourshop.com

Advanced tracking:

// Custom tracking code
<script>
// Track download initiation
document.querySelectorAll('.download-button').forEach(btn => {
btn.addEventListener('click', function() {
gtag('event', 'download_click', {
'event_category': 'Downloads',
'event_label': this.dataset.filename,
'custom_domain': 'downloads.yourshop.com'
});
});
});
</script>

Email authentication:

SPF record:

Add to yourshop.com DNS:
Type: TXT
Name: @
Value: v=spf1 include:spf.alvaapps.com ~all
Purpose: Authorize Alva to send emails
Benefit: Better deliverability

DKIM record:

Get from: Settings → Email → Authentication
Add to DNS: TXT record
Purpose: Email signature verification

Send from custom domain:

Email configuration:

Settings → Email → From Address
From: downloads@yourshop.com
(instead of: noreply@shopify.com)
Requires:
• SPF record configured
• DKIM record configured
• Domain verified
Benefit: Professional, trusted sender

Optimize delivery:

CDN settings:

Settings → Custom Domain → Performance
☑ Enable CDN caching
Cache duration: 1 hour (download pages)
Edge locations: Global (300+ locations)
☑ Enable compression (Gzip, Brotli)
☑ HTTP/2 enabled
☑ Early Hints enabled
Result: Fast global access

Cache configuration:

Cache headers:

Download pages:
Cache-Control: public, max-age=3600
Static assets (CSS, JS, images):
Cache-Control: public, max-age=31536000
Download links (presigned):
Cache-Control: private, no-cache

Monitor custom domain:

Health checks:

Settings → Custom Domain → Monitoring
Checks:
✓ DNS resolution
✓ SSL certificate validity
✓ HTTPS accessibility
✓ Response time
✓ Uptime
Frequency: Every 5 minutes
Alerts: Email if issues detected

Certificate monitoring:

Auto-renewal: 30 days before expiry
Backup alert: 7 days before expiry (if renewal fails)
Emergency alert: 1 day before expiry
Notification: Email to shop owner
Action: Auto-renew via Let's Encrypt

Common problems:

CNAME not resolving:

Problem: Domain doesn't resolve
Check:
1. DNS record exists
2. Points to correct target
3. Not proxied (Cloudflare)
4. TTL allows updates
5. Propagation complete
Tool: dig downloads.yourshop.com

Fix SSL issues:

Error: "Your connection is not private"
Causes:
• Certificate not yet provisioned (wait 30 min)
• DNS not pointing correctly
• Mixed content (HTTP + HTTPS)
Solutions:
1. Verify DNS correct
2. Wait for SSL provisioning
3. Force HTTPS on all assets
4. Clear browser cache

Fix infinite redirects:

Problem: Page keeps redirecting
Causes:
• Cloudflare proxy enabled (should be DNS only)
• Incorrect redirect rules
• Mixed HTTP/HTTPS
Solution:
1. Disable Cloudflare proxy
2. Check redirect settings
3. Use HTTPS consistently

Migration steps:

Gradual migration:

Week 1: Setup custom domain, test
Week 2: Enable for new orders only
Week 3: Update email templates
Week 4: Redirect all old links
Week 5: Full migration complete
Old links: Continue working (auto-redirect)
New links: Use custom domain

Update external systems:

Checklist:

☐ Update webhook URLs
☐ Update API endpoint references
☐ Update email templates
☐ Update marketing materials
☐ Update help documentation
☐ Notify customers (if needed)

Force HTTPS:

✓ Enable HSTS (HTTP Strict Transport Security)
✓ Redirect HTTP to HTTPS
✓ Use secure cookies
Settings → Custom Domain → Security
☑ Force HTTPS
☑ Enable HSTS
HSTS max-age: 31536000 (1 year)

Regular checks:

Weekly:
☐ Check SSL certificate expiry
☐ Verify DNS still correct
☐ Test download links
☐ Monitor performance
Monthly:
☐ Review analytics
☐ Check uptime
☐ Test from different locations

Backup strategy:

✓ Keep default domain working
✓ Auto-fallback if custom domain down
✓ Monitor health proactively
✓ Have rollback plan
If custom domain fails:
→ Auto-redirect to default domain
→ Email notifications sent
→ Downloads still work

Customer communication:

When launching custom domain:
• Announce in email newsletter
• Update website footer
• Add to order confirmation
• Update social media
Message:
"We've improved our download experience!
Access your files at downloads.yourshop.com"

Pre-launch testing:

☐ Test from multiple browsers
☐ Test on mobile devices
☐ Test from different countries/ISPs
☐ Verify SSL certificate
☐ Check email links work
☐ Test API integrations
☐ Load test download pages