FAQ
The most common "why can't I see / do / find this?" questions, with quick diagnostic answers.
FAQ
🔒 Access & visibility
Why can't I see a record I know exists?
Most likely a sharing rule doesn't grant you access. Check in this order:
- Are you the owner? If no…
- Is the record derived from a parent you can see (a contact on your account, a line on your quote)? If no…
- Does a sharing rule match the record and one of your positions (e.g., region, tier)? If no…
- Has the record been shared manually with you? If no…
- Does your profile have View All? If no…
→ You won't see it. Ask the owner to share the record, or your admin to expand the sharing rule.
Note that a shared account carries its contacts and nothing else: quotes, contracts, tasks, cases and opportunities on that account stay with their own owners.
Why is a field grey / read-only?
Three possibilities:
- Field-level security restricts edit on your profile → ask admin.
- The record is locked in an approval process → wait or recall.
- A validation rule is preventing the change → look for an inline error message.
I have admin access in another tenant — why not here?
Profiles and permissions are per tenant. You need an admin to grant you the System Administrator profile in this tenant.
Why does the AI Copilot say "I can't find that record"?
The Copilot respects your sharing — if you can't see it, neither can it. Verify the record exists and check sharing.
📈 Records & data
I created a lead but it's assigned to someone else — why?
Auto-assignment ran. There is no Setup → Lead Settings screen and there are no assignment rules to check — a lead that arrives without an owner is handed on insert to whichever holder of the sales_rep position has the fewest open leads (src/sales/objects/lead.hook.ts). It load-balances; it does not match region or territory. So the owner you see is the least-loaded rep, not the nearest one.
My opportunity won't move to Closed Won.
Three blockers, in order:
- Required fields missing (Close Date, Amount, Won Reason).
- Approval required — amount > $500K triggers discount approval; it must be granted first.
- Validation rule — e.g., "Must have a primary contact role".
Why did my opportunity skip back to a previous stage?
Likely a rejected approval. Check the Approval History section on the opportunity.
Where do deleted records go?
Nowhere — a delete is permanent and immediate. There is no recycle bin to restore from and no Setup entry for one: the platform ships no soft-delete runtime at all. @objectstack/spec retired the flag that used to promise one, and says why in as many words — "every delete has always been a hard delete, and a default-true flag promising a recycle bin was a false affordance". Treat every delete as irreversible. The platform still writes an audit row for every delete, but since ObjectStack 17.6.0 the audit log shows each reader only rows about records that reader can still open — administrators included. A deleted record can no longer be opened, so its rows, the delete among them, no longer appear in Setup → Audit Logs; only a server-side job running with system access reads them. Neither brings the record back.
My import says "0 rows imported" — why?
Common causes:
- External ID column not set as the matching key but conflict mode is Update only.
- Picklist values in the CSV don't match the defined values.
- Required field missing.
- Owner email doesn't match any user.
The dry-run report tells you which row failed and why. Always dry-run first.
⚙️ Automation
My flow didn't fire — why?
Check in order:
- Is the flow Active?
- Does the record actually match the start condition at the time of save?
- Did a validation rule block the save before the flow could fire?
- Did an earlier flow change the record so the condition no longer matched?
- Was the flow re-entered for the same record while its previous run was still in flight? The engine's re-entrancy guard skips that run and logs a warning. There is no re-evaluation count to compare against — the guard is a backstop, not a stop condition. See Administration › Automation.
Studio → Developer → Flow Runs shows a flow's recent runs and each run's status — pick the flow you expected to fire.
My SLA clock isn't running.
Nothing counts down in this app — there is no live SLA timer to watch. What exists is a due date stamped on every case and an hourly sweep that reports a breach after the fact. Check:
- The case is in an open status (not Resolved / Closed) — the hourly
case_sla_monitorsweep filtersstatus: { $nin: ['resolved', 'closed'] }, so a resolved case is never picked up. - The case has an SLA Due Date at all. Every priority gets one now, from a priority × account-tier matrix in
src/service/objects/case.hook.ts— but a case whose priority the matrix has no row for is still left blank, and a case with a blank due date is never a candidate for the sweep, so SLA Violated staysfalsehowever long it stays open. (Typing a due date in by hand works — the sweep then treats that case like any other.) - That due date is already in the past, and a sweep has run since. The sweep is hourly and only flags cases that are already over, so a case resolved late but before the next sweep is never flagged at all.
There is no business-hours setting to check — no working-day calendar, no holiday list, no Setup → Business Hours screen anywhere in this app. Every number in the matrix is wall-clock hours, and nights, weekends and holidays count against them. There is no SLA definition screen either: the matrix is written into the hook rather than configured, and the only part of it you set from the UI is the account's Customer Tier, which chooses the column. See SLA & Escalation.
Auto-numbering jumped (e.g., from #1234 to #1267).
Normal. Sequences reserve numbers in batches for performance; gaps occur when records are deleted, validation fails after a save attempt, or batches are abandoned. The sequence is monotonic, not contiguous.
🤖 AI Copilot
The Copilot's answer is wrong / outdated.
Three causes:
- Stale knowledge — there is no index to refresh: the Copilot queries published Knowledge Article records directly, so an edit is live the moment it is saved. Setup ships no AI group, no Knowledge Bases screen and no re-index action; if an answer is stale, correct the article itself at Service → Knowledge.
- Outdated source document — the cited article needs updating.
- Prompt could be tighter — for custom skills, refine the prompt; for built-in skills, file a feedback report via the thumbs-down button.
The Copilot won't answer about a specific customer.
Two possibilities:
- Sharing — you can't see records for that customer.
- There is no AI redaction rule — no screen, setting or account flag blocks the Copilot from a customer, and nothing makes it announce one. What actually limits the Copilot is field-level security: it reads as the signed-in user, so a field masked on their profile never reaches it. See Sharing & security.
Why are AI responses slow today?
There is no AI dashboard and no AI health screen. Setup has no AI group at all — that one is Studio → AI, and it holds Agents, Tools and Skills, not health — and nothing in Setup reports model latency. The nearest real surface is Setup → Configuration → AI & Embedder, which configures the provider, model and embedder and carries Test connection and Test embedder buttons: a point-in-time probe, not a monitor. Slowness is upstream almost every time — the LLM provider itself, or its rate limits. Re-indexing is never the cause, because nothing re-indexes.
📊 Reports & dashboards
My report shows fewer records than I expect.
Sharing. Reports respect record visibility — you see only what you can see. A rep running the company pipeline report sees only their own opportunities.
A dashboard tile is empty.
Check:
- The tile's filter — too restrictive?
- The underlying analytics refresh — the compiled cube is refreshed by the analytics service, on no schedule HotCRM declares, so a stale tile is a question for your deployment.
- Your profile permissions for the source object.
I changed a field on a record — when will the dashboard update?
Each dashboard re-queries on the interval it declares: every 60 s on Customer Service, every 180 s on Sales Performance, every 300 s on CRM Overview, Sales Activity and Executive Overview (src/*/dashboards/). How soon the analytics service re-compiles the cube underneath is a deployment question — this app configures no refresh schedule of its own. HotCRM's dashboard metadata declares no manual refresh control either, so any refresh button your console shows comes from the platform rather than from this app.
Why can't I add a custom field to a report?
The field must be enabled for reporting in the field definition. Ask your admin to flip the Available in Reports toggle.
🔌 Integrations
My email isn't logging.
Nothing logs it, and nothing will until an inbox connector ships. HotCRM has no Gmail or Outlook connector — src/ carries no connector metadata and no installed platform package supplies one — so no message reaches a record because it arrived in your mailbox, whether or not it matches a contact's address, and there is no exclusion list keeping one out either. There is no Settings app in this product, so Settings → Email names nothing. What ships is the outbound half: Send Email on a contact writes the message as a record and leaves an entry on that contact's Activity timeline. If nothing is there, nobody sent one — and the action is hidden altogether on a contact with Email Opt Out ticked. Whether a message that was sent left the building is a different question, and it belongs to the mail transport your deployment configures. See Email & Calendar and Integrations.
My DocuSign envelope isn't updating the contract.
Nothing sent that envelope, and nothing is listening for one. HotCRM has no DocuSign connector — src/ carries no connector metadata and no installed platform package supplies one — so there is no integration log to open and no webhook delivery to retry. Setup → Integrations is a real group, but as this app ships it holds exactly the two entries the platform contributes — Connect an Agent and Datasources — and no vendor mounts anything under it. The DocuSign row on Integrations is design intent, not a switch. Until it ships, a quote's or a contract's status is a field someone sets by hand and the signed document is a file someone attaches — see Contracts.
Stripe says customer X exists; HotCRM says no.
Nothing links them, and nothing will until a Stripe connector ships. HotCRM has no packaged vendor connectors — src/ carries no connector metadata and no installed platform package supplies one — so no Stripe customer, subscription or invoice reaches an account or a contract on its own, by email match, by external ID or otherwise. The Stripe row on Integrations is design intent, not a switch, and there is no re-link action to run. Until it ships, an account and its contracts are records someone creates in HotCRM.
🚀 Performance
Pages are loading slowly.
Check:
- Network — is your VPN routing through a slow region?
- List view size — try filtering to <500 rows.
- Custom widgets — disable temporarily to isolate.
- Browser — clear cache; we recommend Chrome / Edge / Safari / Firefox latest.
If persistent, check the status page for incidents.
I'm hitting an API rate limit.
See Performance & Limits for the matrix. Common causes: a tight integration loop without back-off. Add exponential back-off and respect the Retry-After header.
👥 Users & licences
How do I disable a user?
Setup → Users → [user] → Deactivate. Their records are reassigned per the deactivation wizard. Don't delete users — it breaks history.
Can a user have two profiles?
No. Use permission sets to grant extras on top of the base profile.
Can a user belong to multiple roles?
No — one role per user. Use public groups for cross-cutting sharing.