Skip to content
You're offline. Some features may be unavailable.
QPortal is live. Deploy QR-powered AI instantly.

Guides

White-Label Setup

Enterprise customers can replace all 3QPR branding with their own logo, colors, and domain. Scanned QPR Codes open conversations on your subdomain, no 3QPR mentions visible to end users.

Prerequisites

  • Enterprise plan subscription
  • Access to your DNS provider to add a CNAME record
  • A subdomain you control (e.g. ai.yourbrand.com)
  • Brand assets: logo (SVG preferred), hex color codes

1Configure your custom domain

Add a CNAME record at your DNS provider pointing to portal.3qpr.com.

TypeHostValue
CNAMEai.yourbrand.comportal.3qpr.com

Then register the domain via the API:

curl -X POST https://api.3qpr.com/v1/organizations/org_01HABC/custom-domain \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "ai.yourbrand.com"}'
Response 200json
{
  "domain": "ai.yourbrand.com",
  "status": "pending_verification",
  "ssl_status": "provisioning",
  "verification_token": "3qpr-verify=AbCdEf123456"
}
SSL is provisioned automatically via Let's Encrypt. It may take up to 5 minutes after DNS propagates. Check status with GET /v1/organizations/:id/custom-domain.

2Upload brand assets

Upload your logo and set brand colors via the API or the Studio settings panel.

# Upload logo (multipart/form-data)
curl -X PUT https://api.3qpr.com/v1/organizations/org_01HABC/branding \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "logo=@/path/to/logo.svg" \
  -F 'colors={"primary":"#1A56DB","background":"#0F172A","text":"#F8FAFC"}'
Response 200json
{
  "logo_url": "https://cdn.3qpr.com/orgs/org_01HABC/logo.svg",
  "colors": {
    "primary": "#1A56DB",
    "background": "#0F172A",
    "text": "#F8FAFC"
  },
  "updated_at": "2026-03-20T12:00:00Z"
}

3Verify the setup

Once DNS propagates and SSL is provisioned, scan one of your QPR Codes. The conversation should open on ai.yourbrand.com with your logo and color palette — no 3QPR branding visible.

# Check domain + SSL status
curl https://api.3qpr.com/v1/organizations/org_01HABC/custom-domain \
  -H "Authorization: Bearer YOUR_API_KEY"
Response 200 — readyjson
{
  "domain": "ai.yourbrand.com",
  "status": "active",
  "ssl_status": "active",
  "verified_at": "2026-03-20T12:05:00Z"
}

Branding options

OptionTypeDescription
logo_urlstring (URL)SVG or PNG logo shown in the conversation header
favicon_urlstring (URL)Browser tab favicon
colors.primaryhex stringButton color, active link color, accent
colors.backgroundhex stringPage background
colors.texthex stringBody text color
page_titlestringBrowser tab title (defaults to your org name)
powered_bybooleanShow/hide "Powered by 3QPR" footer (Enterprise only)

Troubleshooting

Domain shows "pending_verification" after 30 minutes

DNS propagation can take up to 48 hours. Verify your CNAME record is correct with dig CNAME ai.yourbrand.com — the answer should be portal.3qpr.com.

SSL certificate errors

Ensure no CAA DNS records block Let's Encrypt. If you use Cloudflare, set the proxy status to DNS only (grey cloud) during initial provisioning.

Logo not appearing

Logo files must be under 2 MB. SVG is recommended. PNG at 2x resolution (e.g. 400×100px) also works well.