Target URL: https://plugins.datasetiq.com
Platform: Vercel (Static Site Hosting)
DNS: Cloudflare (with Grey Cloud OFF)
-
Go to vercel.com/new
-
Import Git Repository: Select
datasetiq-excel-addinfrom GitHub -
Configure Project:
- Framework Preset: Other (Static)
- Root Directory:
./(leave default) - Build Command:
npm run build - Output Directory:
dist - Install Command:
npm install
-
Environment Variables: None required (public add-in)
-
Click Deploy
cd /Users/darshil/Desktop/DataSetIQ/Code/datasetiq-excel-addin
# Install Vercel CLI globally
npm i -g vercel
# Login to Vercel
vercel login
# Deploy (follow prompts)
vercel
# Answer prompts:
# - Set up and deploy? Y
# - Scope: Your account
# - Link to existing project? N
# - Project name: datasetiq-excel-addin
# - Directory: ./ (default)
# - Override build settings? N
# Production deployment
vercel --prod- In Vercel Dashboard → Your Project → Settings → Domains
- Click Add Domain
- Enter:
plugins.datasetiq.com - Vercel will provide a CNAME target (e.g.,
cname.vercel-dns.com)
CRITICAL: Must use DNS Only mode (Grey Cloud) to avoid SSL errors.
- Login to Cloudflare Dashboard
- Select domain:
datasetiq.com - Go to DNS → Records
- Click Add record
Record Configuration:
Type: CNAME
Name: plugins
Target: cname.vercel-dns.com
Proxy status: DNS only (Grey Cloud) ⚠️ CRITICAL
TTL: Auto
Why Grey Cloud?
- Prevents Cloudflare from proxying requests
- Avoids SSL certificate conflicts
- Lets Vercel manage the certificate directly
- Prevents infinite redirect loops
- Wait 5-10 minutes for DNS propagation
- Vercel will automatically issue Let's Encrypt certificate
- Check status in Vercel Dashboard → Domains
- Test:
https://plugins.datasetiq.com/functions.json
# Functions metadata
curl https://plugins.datasetiq.com/functions.json
# Functions JavaScript
curl https://plugins.datasetiq.com/functions.js
# Functions HTML page
curl https://plugins.datasetiq.com/functions.html
# Taskpane UI
curl https://plugins.datasetiq.com/taskpane/index.html
# Check CORS headers
curl -I https://plugins.datasetiq.com/functions.js | grep -i "access-control"Expected CORS Headers:
access-control-allow-origin: *
access-control-allow-methods: GET,POST,OPTIONS
access-control-allow-headers: Content-Type, Authorization
- Open Excel Online: office.live.com/start/Excel.aspx
- Insert → Office Add-ins → Upload My Add-in
- Upload
manifest.xmlfrom repo - Test function:
=DSIQ.DSIQ("FRED-GDP") - Check browser console for any CORS errors
Vercel automatically deploys on every push to main:
cd /Users/darshil/Desktop/DataSetIQ/Code/datasetiq-excel-addin
# Make changes
git add .
git commit -m "Update add-in"
git push origin main
# Vercel auto-deploys in ~30 seconds
# Check status: https://vercel.com/dashboardEvery PR gets a preview URL:
- Push to branch:
git push origin feature-branch - Vercel creates:
https://datasetiq-excel-addin-abc123.vercel.app - Test before merging to production
Create webhook for manual deployments:
- Vercel Dashboard → Settings → Git
- Create Deploy Hook
- Trigger via:
curl -X POST https://api.vercel.com/v1/integrations/deploy/YOUR_HOOK_ID
Before submitting to AppSource:
-
https://plugins.datasetiq.comresolves correctly - All files accessible (functions.js, functions.json, taskpane/)
- CORS headers present on all responses
- SSL certificate valid (green lock in browser)
- Icons load:
/assets/icon-32.png,/assets/icon-64.png - Manifest validation passes:
office-addin-manifest validate manifest.xml - Test in Excel Web, Windows, Mac
- No console errors in browser dev tools
- Functions calculate correctly
- Taskpane connects and displays profile
Symptom: Excel blocks loading of add-in assets
Fix: Ensure all URLs in manifest.xml use https://
Symptom: Access-Control-Allow-Origin missing
Fix:
- Verify
vercel.jsonis in repo root - Redeploy:
vercel --prod - Clear browser cache
Symptom: Vercel returns 404 for built files
Fix:
- Check
vercel.jsonoutputDirectory:"dist" - Verify
npm run buildcreatesdist/functions.js - Commit
vercel.jsonand redeploy
Symptom: "Invalid certificate" warning
Fix:
- Verify Cloudflare DNS is Grey Cloud (DNS only)
- Wait 10 minutes for propagation
- Check Vercel Domains tab for certificate status
- If stuck, remove domain and re-add
Symptom: Browser loops between redirects
Fix: Turn off Orange Cloud in Cloudflare (must be Grey)
Enable in Dashboard → Analytics:
- Page views
- Function invocations
- Geographic distribution
- Performance metrics
Create dist/404.html and dist/500.html for better UX.
Vercel auto-purges CDN on deploy. Manual purge:
vercel --forceVercel Free Tier Limits:
- 100 GB bandwidth/month
- Unlimited deployments
- Automatic SSL
- Free custom domains
Expected Usage:
- Excel add-in: ~10KB per load
- 10,000 users × 20 loads/month = 2GB/month
- Well within free tier ✅
After successful Vercel deployment:
- Update Manifest URLs: Ensure
manifest.xmlpoints tohttps://plugins.datasetiq.com - Submit to AppSource: Use Partner Center
- Monitor Vercel Logs: Check for errors/traffic spikes
- Set up Alerts: Vercel can notify on deployment failures
Deployment Time Estimate: 15-30 minutes
Status: Ready to deploy
Last Updated: December 18, 2025