Common Issues (Clean Estimate V1)
V1 reference for troubleshooting retired pages, providers, and workflows.
Common Issues (Clean Estimate V1)
V1 reference: This entire troubleshooting article follows V1 routes, controls, and provider setup. In current V2, save the company texting number under Settings > Texting (SMS); provider credentials are deployment-managed, and there is no Settings > Phone / Voice card or customer-facing SMS add-on switch. Use the current feature guides for V2 troubleshooting. The V1 remedies remain here as required parity reference until their corresponding workflows return.
These are historical answers to the ten most frequently asked V1 questions.
1. "My estimate won't send"
Check that the customer has an email address or phone number. At least one is required for delivery.
Verify a telecom provider is configured if you are sending via SMS. Go to Settings > Phone / Voice and confirm Esendex or Twilio is saved for the workspace.
Make sure your account is active and not past due on billing.
If you see an error toast message, note the exact text and contact support.
2. "Client says they didn't receive the estimate"
For email delivery, ask the client to check their spam or junk folder. Some email providers flag automated messages.
For SMS delivery, verify the phone number is correct. It should be 10 digits in US format with no country code prefix.
Go to Messages in the sidebar and check if the outbound message shows a delivery error.
3. "My pricing doesn't look right"
Go to Pricing Manager and verify your default rates are set correctly.
Check if the estimate has manual overrides on individual services. Manual overrides replace the default pricing calculation.
Make sure the dirtiness level is set correctly. Heavy dirtiness adds a significant multiplier to the base price.
4. "I can't see a feature"
Some features are restricted by role. Sales Reps cannot access Billing, Settings, or Team Management.
W03 preview — not shipped yet: The dedicated Team troubleshooting flow below applies after W03 production deployment.
Ask an in-scope teammate with Manage team to open Settings > Team and review your role and assignment. Only an all-location owner with Manage team can change individual permission grants. The displayed role supplies defaults, but the saved per-member grants are authoritative. If you are pinned to another service location, a pinned manager cannot see or change your row. See Roles and Permissions.
5. "How do I change my plan?"
- Go to Billing in the sidebar.
- Click Manage Subscription.
- The Stripe customer portal opens.
- From there you can upgrade, downgrade, or update your payment method.
6. "How do I cancel a sent estimate?"
You cannot unsend an estimate. However, you can change its status.
- Open the estimate from the Estimates list.
- Update the status to Expired or Cancelled.
- The customer sees the updated status if they visit the estimate link.
7. "Can I edit an estimate after sending?"
No. Sent estimates are locked to preserve the record of what was sent to the customer.
To make changes:
- Open the sent estimate.
- Click Duplicate to create a new draft with the same details.
- Edit the duplicate.
- Send the new version to the customer.
8. "How do I export data?"
Most table views have an Export or CSV button. You can find it on the Clients, Estimates, and Jobs pages.
- Apply any filters you want (date range, status, etc.).
- Click Export or CSV.
- A spreadsheet file downloads with the current filtered view.
9. "The app is slow"
Try these steps in order:
- Clear your browser cache.
- Switch to Chrome or Edge if you are using a different browser.
- Check your internet connection speed.
- Wait a few minutes and try again. The issue may be a temporary server spike.
If the problem persists across multiple browsers and devices, contact support.
10. "I forgot my password"
- Go to the login page.
- Click Forgot password?
- Enter your email address.
- Check your inbox for a reset link.
- Click the link, set a new password, and log in.
The reset link expires after a limited time. If it has expired, request a new one.
If the Sign In page now shows the shorter Email or password is incorrect message, that is expected. CleanEstimate Pro keeps the low-level auth provider details out of the login card now, so the next step is to double-check the email address, retry the password, or use Forgot password? for a fresh access email.
If CE Pro says password reset email delivery is not configured, the reset flow itself is available but the workspace or environment is missing outbound email setup. Contact support so email delivery can be enabled.
If a brand-new reset or setup email opens straight to Invalid or expired reset link, request one more fresh link. CleanEstimate Pro now routes recovery and invite emails through a browser handoff screen that finishes the Supabase session in the app before opening the password form, so fresh links no longer fail just because the old server callback could not read the auth fragment from the email provider redirect.
11. "My invite link sent me back to sign in or the waitlist"
If your workspace was provisioned through the early-access waitlist, use the same invited email address from the onboarding email.
If the original setup link has expired or was already used:
- Open the link anyway.
- On the password setup screen, click Use Forgot Password Instead.
- If you land on Sign In instead, click Forgot password?
- Enter the same invited email address.
CleanEstimate Pro now routes expired invite recovery through the same shared forgot-password flow used everywhere else. That keeps the email response generic, rate-limited, and still sends the right workspace-specific setup or recovery link for provisioned accounts without dropping you back into the public waitlist flow.
If you choose Forgot password? before the invited account has ever completed setup, CleanEstimate Pro now detects that pending workspace state and sends another setup email automatically instead of a generic password-reset email.
Fresh workspace setup emails now open through a short Finishing Sign-In screen before the password card. That handoff is expected and fixes the earlier issue where a brand-new setup email could still bounce to Invalid or expired reset link even though the Supabase invite was valid.
If you do land on the expired-link screen, CE Pro now lets you send yourself a fresh link right there from the same card. The button keeps the invited email address attached, so you do not need to retype it on a separate forgot-password page first.
If the shorter Finishing Sign-In handoff screen is the part that fails, its Need A New Link? link now preserves the same workspace redirect too. That retry path should keep you aimed at the invited workspace instead of falling back to a generic sign-in destination.
If the workspace-auth lookup has a temporary hiccup while that pending-invite check runs, CE Pro now falls back to the standard recovery email path instead of showing a hard server error from the forgot-password screen.
If an older invite email shows http:// or a localhost address, do not use that email. Request a fresh setup link. New workspace setup emails now force the production CleanEstimate URL outside local development so invite links do not point at a developer machine.
The password setup and forgot-password cards now use the shared CleanEstimate logo treatment too. If you still see the older plain text logo after deploy, refresh once to pull the latest auth screen bundle.
12. "My onboarding Services or Pricing step is blank"
If you are entering a brand-new workspace from a waitlist or invite flow and the Services or Pricing step looks empty, refresh once first.
CleanEstimate Pro now repairs the default onboarding catalog automatically when a provisioned workspace is missing starter setup records. The page should repopulate the standard service list and starter pricing fields instead of leaving you stuck on a blank step or a pricing save error.
If the page still stays empty after refresh, report the workspace email address and company name to support so the org bootstrap data can be inspected directly.
13. "Onboarding says failed to save company info" or another setup step
If you are a provisioned manager entering a workspace that is still unfinished, the onboarding flow should now let you complete the Company Info, Services, Pricing, and final completion steps without waiting for the owner to log in first.
If you still see a save error:
- Refresh once and retry the same step.
- Note the full inline error text shown in the onboarding card.
- Confirm which workspace you are entering, especially if you belong to a franchise operator and a child location.
CleanEstimate Pro now shows the real onboarding API error message instead of the older generic Failed to save company info message, so support can usually diagnose the issue from that exact text.
14. "An admin page says it failed to load"
If the Estimates, Jobs, or Invoices pages show a load error right after a rollout, refresh once first. CleanEstimate Pro now falls back to the core record tables while newer read models and optional payroll tables catch up, so those pages should keep loading even during schema rollout windows.
If the Estimates page was blank with a Failed to load estimates toast on March 16, 2026, that was a server-side loading bug in the estimate summary call path, not a data-loss issue. The fix is now live; if you still see the old error after deploy, hard refresh the admin app once and retry.
For current V2 invoices, open Business > Invoices. If Review & Send cannot use a channel, confirm the service customer has an eligible active Billing or Primary email/phone, required consent, and configured provider. An Action needed attempt retains the exact failure for correction and resend. If Pay is missing, confirm Stripe charges are enabled and the sent invoice still has a positive ledger-derived balance. Draft, paid, and voided invoices intentionally have no payment action. Admin office collection and controlled refunds are available; embedded keyed-card entry, tips, credits/write-offs, and mobile collection remain a separate V1 parity boundary.
If the office card option produced Open secure card checkout, opening or copying the link is not a collected payment. Wait for the registered connected-account webhook, then refresh the invoice. Reopen Collect payment to reuse only the compatible session; do not create a manual card entry while that Checkout may still be payable.
If a successful collection or refund is followed by a separate invoice-refresh notice, do not enter the money again as a new transaction. The money action has already reached its terminal result; refresh the invoice or retry the same idempotent action so the latest ledger view can load. A provider refund that remains pending requires the controlled recovery service or support review; staff cannot force its result from the invoice page.
If Billing says the portal is temporarily unavailable, Stripe may still be missing customer-portal configuration or the workspace may not have a Stripe customer record yet.
If Messages, Billing, or account recovery now show a short plain-language error instead of a long technical provider message, that is expected. CE Pro now keeps the low-level Stripe, Twilio, Mailgun, Supabase, and database details in server logs and shows the operator the next useful action instead.
15. "The post-job Suds Club action is missing or still pending"
The completed-job Work offer has its own organization switch. Ask a teammate with Manage invoices to confirm Offer Suds Club after completed residential work (independent from invoice Pay offers) is enabled. Turning on the invoice payment-offer flow does not turn on this post-job action, and turning on the post-job action does not change invoice Pay.
If the action is still absent, confirm the completed job has an authoritative issued invoice and linked residential estimate for the same customer, property, location, and organization. CE Pro also requires a valid configured Suds Club plan that can price the measured home and a charge-ready Stripe connection. Commercial, custom-tier, mismatched, already-enrolled, and unsafe or unpriceable sources are intentionally withheld.
After hosted Checkout:
- Suds Club signup received means the browser returned but Stripe has not
yet confirmed settlement. Do not create another plan or mark it paid.
- Refresh Work after the provider event arrives. Suds Club is active
means settlement completed and recurring service is released.
- If the customer cancelled Checkout, reopen the same protected Work offer
and retry. CE Pro resumes the same accepted plan and safely reuses its live Checkout or rotates a provider-confirmed expired session. This continuation remains available after the offer's display window only for that accepted, payment-pending signup; it does not reopen expired rebooking choices.
Same-work rebooking is separate from Suds Club and the invoice Pay offer sequence. A teammate with Manage invoices can enable Let customers prepay when rebooking the exact completed work; it defaults off. If prepay is still missing from an eligible frozen-scope rebook card, confirm Stripe is configured, the connected account can accept charges, and the issued-invoice total is inside provider bounds. Pay later remains available without a charge, and neither choice schedules the job. Commercial work instead requests an office-reviewed custom proposal. These flows do not add native mobile controls.
An older unfinished repeat-work attempt may have been saved before the payment choice existed. CE Pro keeps that attempt's notes and original decision/request keys, unlocks the choices, and waits for the customer to select pay later or prepay. The same command is upgraded after that explicit choice; it does not silently become pay later. If the server already has a resumable prepayment, only prepay appears because that choice is already fixed.
If the first prepay attempt reports that Checkout or payments are unavailable before acceptance, CE Pro discards the uncommitted browser command, refreshes server truth, and reopens the payment choices. No accepted server order or payment is changed. The customer can then choose pay later or retry prepay. If the refresh shows an accepted, open, or processing prepayment, continue that prepay path instead; do not create another request.
Repeat-work still shows Refund attention after a refund
If the customer sees Prepayment needs office review, do not ask them to pay again; the office must resolve the displayed remaining balance.
If the row has an Existing job link, open that job before taking another money action. If no job has been created, resolve the displayed remaining balance from the Refund attention row instead.
- If the row shows a partial Applied payment refund, resolve the displayed remaining balance first. CE Pro keeps unmaterialized or active work in Refund attention and blocks creation, scheduling, rescheduling, start, and completion; a scheduled job can still be pulled back to Unscheduled.
- If the row still offers an Applied payment refund and has an Existing job link, confirm that the job is Unscheduled, Scheduled, or In progress. A Complete or Cancelled job cannot start this governed refund.
- When the payment still has a remaining refundable balance, CE Pro sends the refund to Stripe before cancelling work. If confirmation fails, any linked job remains active but cannot move forward; unmaterialized work remains uncreated. Review the payment, then retry the same saved refund command instead of starting another one. An ambiguous or pending result reuses the same Stripe attempt and key. After an exact Stripe
failedorcanceledresult, the next authorized retry advances that same command to one fresh provider-attempt key. - After Stripe confirms a CE Pro refund, the same finalization transaction finalizes the money record and, when a linked job exists, cancels that exact job with the normal job-status audit. Refresh the queue if the completed action is still visible.
- If the full applied refund completed outside CE Pro while a saved refund command was unresolved, review the payment and retry that exact command. CE Pro matches registered provider truth, supersedes the command locally, and does not send Stripe another refund request; when an eligible linked job exists, that same reconciliation cancels it with the saved reason and normal audit. Refresh the queue after reconciliation. If no matching unresolved command exists and the row has an Existing job link, review and cancel that job explicitly. Do not issue a second refund or create another job.
Refunding an additional duplicate payment never cancels the valid linked job. If that refund is pending or failed, retry its existing command; the valid work remains blocked until every extra attempt is resolved.
Need to report a bug?
Use the floating Report a Bug button in the lower-right corner of the admin app.
Bug reports include the current page path, browser name, and viewport size. Screenshots are optional manual attachments; no screenshot or page history is captured automatically. Only all-location managers with Manage team can review reports and attached images.
See [Reporting Bugs](/troubleshooting/reporting-bugs) for the full workflow.
Workspace Switcher Says the Workspace Identifier Is Invalid
If you were already signed in during a franchise rollout, the browser may hold an older workspace identifier briefly after a deploy.
CleanEstimate Pro now accepts the current workspace UUID, the readable workspace slug, and the exact workspace name when switching orgs, including older root-workspace ids that do not look like version-stamped UUIDs. If the switcher still feels stuck, refresh the admin app once and try again.
Related articles
Was this article helpful?
Still need help? Contact support