Troubleshooting
Common gotchas in roughly the order you'll encounter them.
Login
"Invalid email or password"
- Check the email matches what we provisioned (case-insensitive but no typos). Click Forgot password? on the login screen — we'll email a reset link.
- Reset email not arriving? Check spam. Still nothing after 5 minutes — click ? Need help in the sidebar (works even logged-out via the login page) or email scott@kaizenshift.com.
"User has no account membership"
You logged in successfully but the system can't find which account you belong to. This usually means the invite step didn't fully complete. Email us — quick fix on our side.
Invoices
"Save the invoice first" disabled buttons
The Send / Pay link / Mark paid buttons need an invoice to exist in the DB first. Hit Save draft at the top of the actions row, then the rest enable.
Public invoice page shows 404
The URL is /i/<invoice-id> — make sure the ID is correct. Common cause: the invoice is still in draft status. We don't show drafts publicly. Either send it (status flips to sent) or use the admin preview path.
Numbers don't add up
Tax math: rates are stored as decimals (5% = 0.05). If you typed 5 in the tax field expecting 5%, it'll calculate 500%. Editor accepts percent values and converts on save — but importer takes raw numbers.
Customer says they didn't get the email
- Check
/kz-admin/sends— every email we send is logged with the send timestamp - If status is
sentbut they don't see it: check spam, bounce reports - If status is
failed: their address might be wrong. Re-verify and try Gmail draft mode so you can manually fire from Gmail Drafts (different sender reputation)
Integrations
QuickBooks "Token expired"
Click Reconnect in /kz-admin/integrations. We refresh tokens automatically every hour, but if your account hasn't been used for 100+ days, the refresh token expires too.
GoHighLevel contacts not appearing
- Check the right sub-account: GHL workspaces have multiple locations. Make sure you authorized the one where you expected the contact.
- Filter by tag
invoice-sentin GHL contacts list. Sometimes GHL hides untagged contacts.
Stripe webhook missed
Real but rare. Detection: customer says they paid, but invoice still shows sent 5+ minutes later. Fix:
- Stripe Dashboard → Developers → Events → find their
payment_intent.succeeded - Click Resend — fires the webhook again
- Watch invoice flip to
paidwithin 30 seconds
If still mismatched, click Mark paid manually as a backup.
Importing past invoices
Required field error after upload
The CSV importer requires three columns mapped: Invoice #, Client name, Line description. If your CSV calls them different things, adjust the dropdowns in the Map Columns step.
"Skipped" invoices in the result
Default behavior: invoices whose number already exists in your tenant get skipped (so re-uploading the same CSV is safe). Uncheck "Skip duplicates" if you want to overwrite — but consider deleting the old ones first instead.
QuickBooks one-time pull missing some invoices
We pull the last 90 days. For full history, contact us — we can run a deeper backfill manually.
Performance
Admin page loading slowly
Hard refresh (Ctrl+Shift+R / Cmd+Shift+R). If still slow, our diagnostics page at /kz-admin/health shows current service health — anything red explains the slowness.
"Couldn't load — check Vercel function logs"
That message means our backend hit an error on this page. Click ? Need help in the sidebar so we get a ticket; we'll look at the Sentry trace.
Still stuck?
Click ? Need help in the bottom-left of the sidebar inside the admin. Subject + body + priority. Lands directly in our inbox; Scott replies by email, usually within a few hours during business days.