Use this guide with Domains Hosting Software for 5 to 50 Websites Workflow: Why Bunny.net Simplifies Multi-Sit and bunny.net Review for Client Workflows: Speed-First CDN Built for Multi-Site Teams when you want the next decision step.
Set up Bunny.net to serve client assets from multiple zones with per-project billing isolation. You'll configure pull zones, storage zones, and billing groups to track costs per client while maintaining centralized management across 5 to 50 sites.
Requirements Checklist
| Requirement | Have It? | Where to Get It |
|---|---|---|
| Bunny.net account with billing enabled | ☐ | Create account at Bunny.net |
| Client domain DNS access | ☐ | Client's domain registrar or DNS provider |
| Asset inventory list (images, CSS, JS, videos) | ☐ | Export from current hosting or CMS |
| Monthly bandwidth estimate per client | ☐ | Current hosting analytics or server logs |
| API access for automation (optional) | ☐ | Bunny.net dashboard → Account Settings → API Keys |
| Payment method for pay-as-you-go billing | ☐ | Credit card or PayPal in Bunny.net billing section |
Expected System State When Complete
After completing this setup, your Bunny.net account will have:
- Pull zones configured: One pull zone per client site, each with unique hostnames like cdn-clientname.b-cdn.net
- Storage zones active: Separate storage zones for clients needing direct uploads, organized by client name
- Custom domains connected: Client CNAMEs pointing to Bunny.net endpoints with SSL certificates auto-provisioned
- Billing isolation ready: Tagged zones for per-client cost tracking in the billing dashboard
- Cache rules applied: Standard TTL settings for CSS (30 days), JS (30 days), images (90 days), and HTML (10 minutes)
- Monitoring enabled: Real-time bandwidth graphs and cache hit ratios visible per zone
Your clients will experience 40-70% faster asset loading compared to origin-only hosting, with costs typically running $0.01-0.03 per GB depending on geographic distribution. Marketing teams managing multiple campaign landing pages will see consistent performance across all properties, while revenue teams can track CDN costs directly against client contracts.
Pro tip: Start with one test client site before migrating all 5 to 50 sites. Pick a low-traffic site first to verify your workflow, then scale the same configuration pattern to remaining clients.
This configuration supports teams managing 5 to 50 websites who need predictable performance without complex enterprise CDN contracts. If you're managing fewer than 5 sites, the per-zone overhead might not justify the setup time. For teams managing more than 50 sites, consider Bunny.net's volume pricing or dedicated account management.
Start Free Bunny.net Account SetupSteps 1 to 3: Initial Setup and Organization
Step 1: Structure Your Account for Multiple Clients
Start by creating separate Pull Zones for each client domain. This isolation prevents cross-contamination of cache rules and simplifies billing allocation. Navigate to the CDN section and click "Add Pull Zone" for your first client.
Name each zone with a clear client identifier — something like "clientname-production" works better than generic labels. You'll thank yourself when managing 30+ zones simultaneously. Configure the origin URL to point to your client's current hosting, whether that's a managed WordPress host, VPS, or static site deployment.
Enable these critical settings immediately:
- Perma-Cache for static assets (reduces origin hits by 70-90%)
- WebP optimization if clients lack image processing
- Brotli compression for all text-based files
Verification check: Test the Pull Zone by accessing it through the temporary bunny.net URL before adding custom domains. Check response headers for "X-Cache: HIT" to confirm proper caching behavior.
Step 2: Implement Client-Specific Edge Rules
Edge Rules transform bunny.net from a simple CDN into a powerful traffic controller. Each client typically needs different security and performance configurations.
Marketing teams benefit from geo-blocking rules that exclude bot-heavy regions. Set up country blocks through Edge Rules rather than firewall settings — this preserves legitimate crawler access while filtering junk traffic. A typical marketing site might block 15-20 countries without affecting SEO.
Revenue teams require stricter cache-bypass rules for dynamic pricing pages and checkout flows. Create an Edge Rule that checks URL patterns:
- Match: URL contains "/cart" or "/checkout" or "/account"
- Action: Override Cache Time to 0 seconds
- Action: Set Vary Header to "Cookie"
This prevents stale pricing data while maintaining full CDN benefits for static pages. Test every rule with different user sessions before deploying to production traffic.
Pro tip: Use the "Override Response Header" action to add security headers (X-Frame-Options, CSP) at the edge level. This fixes header gaps without touching origin server configurations.
Step 3: Configure Smart Purging Workflows
Manual cache purging kills productivity when managing dozens of sites. bunny.net's API enables automated purging that matches your deployment pipeline.
Generate an API key specifically for purging operations — never use your account master key in production scripts. Store this key in your deployment tool's secure environment variables. Most CI/CD platforms handle this natively.
The purge endpoint accepts both URL-specific and wildcard patterns:
- URL purge: Perfect for blog post updates or page edits
- Wildcard purge: Essential for CSS/JS deployments affecting multiple pages
- Tag-based purge: Ideal for product catalog updates
Connect purging to your deployment events. A WordPress site might trigger purges through webhook plugins, while static sites integrate directly with build processes. Netlify, Vercel, and GitHub Actions all support custom purge scripts in their deployment chains.
Verification method: Deploy a test change and monitor the purge queue in your bunny.net dashboard. Successful purges show "Completed" status within 3-5 seconds globally. Failed purges indicate origin connectivity issues that need immediate attention.
After these three steps, your client sites should show 50-70% origin traffic reduction. Monitor the Analytics dashboard for actual performance gains before proceeding to advanced optimizations.
Start Your bunny.net Setup — 14-Day Trial AvailableSteps 4 to 6: Scaling Your Client CDN Strategy
Step 4: Configure Pull Zones for Each Client Domain
With your storage zones ready, you'll create separate pull zones for each client website. This separation ensures clean billing reports and prevents cross-contamination of cache rules.
Navigate to the CDN section and click Add Pull Zone. Name each zone with your client identifier—something like "clientname-production" works well for teams managing multiple sites. Point the origin URL to your client's primary server. For WordPress sites, this is typically the main domain without any subdirectories.
Under Caching, set the Browser Cache Expiration to 4 hours for dynamic sites or 30 days for static resources. Enable Vary Cache and set it to "Query String + WebP" if your sites serve different content based on URL parameters. This prevents serving cached checkout pages to browsing visitors.
Multi-site efficiency tip: Create a template configuration in a text file with your standard cache rules, security headers, and optimization settings. Copy these settings for each new client pull zone instead of configuring from scratch each time.
In the Edge Rules section, add these three essential rules for client sites. First, force HTTPS redirects by creating a rule that matches all HTTP traffic and redirects to HTTPS. Second, add security headers including X-Frame-Options set to SAMEORIGIN and X-Content-Type-Options set to nosniff. Third, create a bypass rule for admin areas—match any URL containing "/wp-admin" or "/admin" and set the action to Bypass Cache.
Step 5: Implement Smart Purging Workflows
Your marketing teams need quick cache updates when they publish content changes. Bunny.net's purge API makes this manageable across multiple client sites without giving everyone full account access.
Generate API keys with limited permissions for each client zone. From your account settings, create a new API key and restrict it to only the pull zones for that specific client. This prevents accidental purges across other client properties.
Set up purge automation using these two methods. For development teams, integrate the purge API directly into your deployment pipeline. Add a POST request to bunny.net's API endpoint after successful deployments. For content teams, create a simple webhook receiver that accepts purge requests from your CMS and forwards them to bunny.net with the appropriate authentication.
Configure selective purging patterns to avoid clearing entire caches unnecessarily. Use URL-based purging for single page updates—purge only "/about-us" when that page changes. Implement tag-based purging for related content—tag all blog posts with "blog" and purge by tag when blog layouts change. Keep full cache purges as a last resort for major template updates.
Step 6: Monitor Performance Across Client Properties
Effective monitoring prevents client complaints and helps demonstrate value during renewal discussions. Set up separate monitoring views for internal tracking versus client reporting.
In the Analytics section, create custom date ranges that align with your client billing cycles. Export bandwidth usage reports on the 25th of each month to prepare for month-end reviews. Track these four metrics for each client: total bandwidth used, cache hit ratio, unique visitors, and requests per second during peak times.
Build a simple dashboard using bunny.net's statistics API. Pull daily bandwidth usage and calculate month-to-date totals. Flag any client approaching 80% of their typical usage to prevent surprise overages. Compare cache hit ratios across similar client sites—rates below 85% indicate configuration issues worth investigating.
For revenue teams, translate these metrics into business value. A 90% cache hit ratio means the origin server handles only 10% of traffic, reducing hosting costs. Average response times under 50ms improve Core Web Vitals scores, supporting SEO performance.
Configure Your First Multi-Client CDN Setup
Troubleshooting Common Bunny.net Issues
When managing multiple client sites through Bunny.net, most issues stem from configuration mismatches rather than platform failures. These fixes address the problems teams encounter most often when scaling from 10 to 30+ client sites.
CDN Cache Not Updating After Content Changes
Your client updates their homepage, but visitors still see the old version hours later. This happens when cache headers override your purge commands.
Quick fix: Navigate to your Pull Zone settings and set Browser Cache Expiration Time to 4 hours instead of the default 24. Then use Purge Cache → Purge All to force immediate updates.
Permanent solution: Configure Cache Vary to include important headers like Accept-Encoding and implement cache tags for granular control. Set up webhook purging from your CMS to automate cache clearing on content updates.
Validation check: Open an incognito browser window and append ?nocache=timestamp to your URL. If the new content appears, your origin is updated but cache settings need adjustment.
SSL Certificate Errors on Custom Domains
Client domains show security warnings despite SSL being enabled in your Pull Zone.
Immediate fix: Check DNS → Verify your CNAME points to your Pull Zone hostname, not directly to storage. Wait 10 minutes after DNS changes before forcing SSL certificate generation.
Root cause prevention: Enable Force SSL before adding custom hostnames. Bunny.net needs the domain resolving correctly to generate certificates. If using Cloudflare DNS, set proxy status to DNS only during initial setup.
Validation: Run SSL Labs test on your domain. Look for chain issues or hostname mismatches in the detailed report.
Storage Zone Files Not Accessible
Uploaded files return 404 errors or forbidden messages when accessed directly.
Fix sequence: First, verify your Storage Zone region matches your Pull Zone connection. Files uploaded to Singapore won't immediately appear in a US Pull Zone. Second, check file permissions in Storage settings—public read must be enabled for CDN delivery.
For team workflows: Create separate storage zones for development and production. This prevents test files from accidentally going live on client sites.
Bandwidth Spike Investigations
Monthly bandwidth jumps from 500GB to 2TB without traffic increases.
Diagnosis steps: Open Analytics → Bandwidth → Group by Referer. Look for empty referers indicating hotlinking. Check file types—uncompressed video or PDF downloads often cause spikes.
Prevention: Enable Hotlink Protection with your client domains whitelisted. Set up bandwidth alerts at 150% of normal usage. Implement WebP/AVIF image optimization to reduce payload sizes automatically.
Multi-Region Performance Issues
European clients report slow loading while US visitors see normal speeds.
Resolution: Enable Perma-Cache in your Pull Zone advanced settings. This keeps content in all edge locations longer. Add Origin Shield if your origin server is in a single location—this reduces origin load and improves global performance.
Testing method: Use Bunny.net's built-in speed test tool from different regions. Response times over 100ms suggest regional routing problems.
API Rate Limiting During Migrations
Bulk operations fail when migrating multiple client sites simultaneously.
Working solution: Implement exponential backoff in your migration scripts. Start with 1-second delays between API calls, doubling wait time after each 429 response. Bunny.net allows 5 requests per second for most operations.
Test Bunny.net Troubleshooting ToolsMost Bunny.net issues resolve through systematic checking rather than platform fixes. Document your solutions for each client type—ecommerce sites have different failure patterns than marketing pages. This knowledge base becomes invaluable as you scale beyond 30 client sites.
Did It Work and Go Live
Did It Work? Binary Checks
Run these objective tests to confirm your bunny.net client workflow setup succeeded:
- CDN Active: Load any client site through bunny.net's test URL. Page loads = YES. Error 404 = NO.
- Cache Hit: Check response headers for "X-Cache: HIT" on second page load. Present = YES. Missing = NO.
- Purge Works: Clear cache for one zone, reload page, see "X-Cache: MISS" then "HIT". Works = YES. Stuck = NO.
- Storage Connected: Upload test file to Edge Storage, access via pull zone URL. Loads = YES. 404 = NO.
- Team Access: Have team member log in and modify one zone setting. Changes save = YES. Permission error = NO.
All five checks must pass before moving client sites to production. Failed checks indicate incomplete setup requiring immediate fixes.
Ready to Go Live? Subjective Readiness
Beyond technical checks, assess your team's operational readiness for production client workflows:
Documentation complete? Your team needs written procedures for cache purging, zone creation, and emergency rollback. Missing docs create support bottlenecks when senior staff aren't available.
Client communication planned? Prepare migration notices, performance improvement reports, and billing explanations before switching live traffic. Clients notice CDN changes immediately through improved speed or different response headers.
Budget allocated? Calculate expected monthly costs across all client zones at projected traffic levels. Add 30% buffer for traffic spikes. Unexpected overage charges damage client relationships.
Monitoring configured? Set up uptime monitoring, bandwidth alerts, and error rate tracking per client. Silent failures cost client revenue and your reputation.
Activate Production Zones on bunny.netWhat if a client's site breaks after CDN activation?
Immediately disable the pull zone (not delete), which reverts traffic to origin servers within 60 seconds. Debug using bunny.net's test URL before re-enabling. Common issues: incorrect origin URL, missing SSL certificates, or blocked bunny.net IPs at origin.
How do we handle clients who want their own bunny.net account?
Create separate bunny.net accounts per client using their billing details, then request API access for management. This separates liability, simplifies handoffs, and prevents single-account bandwidth limits affecting all clients.
Can we white-label bunny.net services to clients?
bunny.net allows custom domains for CDN URLs but not dashboard white-labeling. Explain CDN infrastructure as third-party specialized hosting. Most clients accept this when seeing performance improvements.
What's the rollback process if clients complain about CDN caching?
First try cache rule adjustments: exclude dynamic pages, reduce TTL, or add cache-key variations. If issues persist, switch pull zone to "Disable Cache" mode temporarily while investigating. Full CDN removal takes under 5 minutes through zone deletion.