Common issues
A symptom-first index. Group the problem (sign-in / data syncing / printing / payment and billing / mobile / notifications) and find the canonical-page troubleshooting section. The index does not restate feature-specific entries — each canonical docs page owns its troubleshooting prose and is the source of truth for symptom → cause → fix on its surface.
How to use this page
Find the symptom category that matches what you're seeing, then jump to the canonical docs page for that feature — its Troubleshooting section is the source of truth for cause and fix. This index keeps one entry per symptom and one link per entry. Where multiple feature pages cover a related symptom (e.g. notifications didn't arrive — the cause is different for customer-facing repair updates vs. internal task assignment vs. anniversary reminders), each variant gets its own bullet pointing at the right canonical page.
A small handful of patterns don't fit on any single feature page — how to read the activity timeline on a record, what a permission-denied toast really means, the generic role-cache-stale pattern after a permission change. Those live in the Cross-section patterns block below.
Can't sign in or access something
- Forgot password / password reset email not arriving — see Account setup for the password-reset flow and the spam-folder check.
- 2FA / authenticator app code rejected after a fresh phone or app reinstall — see Security and 2FA for the recovery-code flow and how to re-enrol.
- Invited team member can't accept the invite link (link expired, “invite already used”) — see Invite team and Team and roles.
- All-tasks tab missing for a manager, or a page reads as “you don't have permission” right after a role change — see Tasks overview for the role-cache pattern; sign out and back in to refresh.
- Suspended-tenant landing page when you didn't expect it — see Billing and subscription for what triggers suspension and how to restore access.
- Manager PIN prompt appearing on actions that didn't need it before — see Security and 2FA for the PIN-gated actions list and how to change it.
Data not syncing or out of date
- Shopify orders / products not appearing in Nexpura, or the other direction — see Shopify for sync-cadence, the manual re-sync trigger, and the error-log surface.
- WooCommerce items not flowing through — see WooCommerce for credentials checks and the IP allow-list note.
- Xero invoices not posting / amounts off — see Xero for the account-mapping and chart-of-accounts shape.
- Mailchimp segments out of sync with Nexpura customer segments — see Mailchimp.
- Google Calendar repair / bespoke pickup not appearing — see Google Calendar for the OAuth re-grant and per-job-type calendar mapping.
- CSV import failing or partially landing — see Data import for the row-format requirements and the error-row export.
- CSV / Excel export missing rows or columns — see Data import and export for what's included in each export shape.
- Stock count off after a multi-location transfer — see Multi-location transfers for the in-transit state, the receive-on-arrival step, and how the movement ledger shows the path.
- Movement ledger entry on an inventory item looks wrong — see Adjust stock for how each ledger event renders and Inventory overview for cross-event reading.
Printing — tags, receipts, invoices
- Inventory tag prints with garbled barcode or wrong label size — see Print tags for the supported label-printer models and the template selection.
- POS receipt cuts off or misses lines — see Processing a sale and POS overview for the receipt-printer setup and roll-paper width.
- Invoice PDF rendering wrong (logo missing, wrong currency, wrong tax number) — see Invoices and Business profile for the source fields the PDF reads.
- Quote PDF same shape but for quote-specific copy / terms — see Quotes.
- Expense receipt upload converts HEIC photos to wrong orientation or fails on Chrome on Windows — see Expenses for the HEIC-on-Chrome-Windows note, and Browsers and devices for the broader platform-quirk shape.
Payment and billing
- Subscription card declined or invoice past-due — see Billing and subscription for the card-update flow and the grace window.
- Layby payment didn't land against the right layby record — see Layby for the per-layby payment ledger and how to attach a payment to the correct record.
- Voucher redemption failing at POS (amount mismatch, expired, already-redeemed) — see Vouchers.
- Refund processed but the original payment method didn't receive funds — see Refunds for the refund-to-original-method flow and the cash fallback.
- End-of-day reconciliation cash count doesn't tie out — see EOD reconciliation for the per-payment-method breakdown and the common variance sources.
- Financials hub report numbers don't match what you expect from the POS — see Financials hub and reports for the report-period boundaries and tenant-timezone cut-off shape.
- Tenant currency changed and historical totals look off — see Business profile for the currency-change post-trade quirk; historical rows keep the original currency and display in the new currency without rate conversion.
A notification didn't fire or arrived late
Notifications in Nexpura fan out to several channels (SMS, automated WhatsApp messages, email) and the right canonical page depends on what kind of notification it was. Each entry below points at the per-feature page where the cause and fix live — the notification channel and the trigger differ by feature.
- Customer didn't receive a “your repair is ready” SMS — see Repair tracking for the customer-side SMS trigger; the channel here is SMS, not WhatsApp.
- Staff task-assignment notification didn't arrive — see Tasks overview for the three-gate check (tenant toggle / per-staff opt-in / phone-on-record).
- Anniversary / birthday reminder missed — see Anniversary and reminders for the per-route cron attribution. The reminder cron is wired but the trigger evaluation has a known gap on the cron-runner side documented in-context on that page. The broader pattern of an automation not firing on schedule lives there.
- Clienteling follow-up nudge didn't surface — see Clienteling workflow.
- Marketing automation (welcome series, abandoned-cart, etc.) didn't fire — see Automations for the per-automation cron-wiring state; some automations are genuinely not yet running on a cron and the page documents which ones in-context.
- Marketing bulk-send campaign didn't deliver to a segment — see Campaigns (bulk send) and Segments.
- Daily 9am task digest email arrives empty even though you have open tasks — see Tasks overview for the daily-tasks-digest filter-mismatch note. The digest cron itself fires daily; the SQL filter doesn't match real task rows.
- WhatsApp message from Nexpura to a customer (rather than to staff) — see WhatsApp via Twilio for the per-tenant Twilio sub-account setup and the current customer-channel routing shape.
- Web enquiry email digest not arriving — see Web enquiries for the per-tenant recipient list and the daily cadence.
- Verify-passport email to a customer with a new passport — see Issue passport for the passport-email-only delivery channel and the common deliverability checks.
Mobile-specific
- Storefront subdomain checkout misbehaving on mobile Safari — see Storefront subdomain for the in-context note on the current checkout layer.
- Photo upload from an iPhone fails or comes out sideways — see Photo attachments for the HEIC-orientation quirk and the in-context note on staff attribution on photo uploads. Also see Browsers and devices for the broader HEIC / iOS shape.
- Mobile nav not surfacing the menu after navigation transitions — see Browsers and devices for the supported-browsers matrix.
- Mobile barcode scanner not reading tags — see Print tags for the scanner-compatible barcode formats.
Cross-section patterns
These are meta-patterns that show up across multiple surfaces. The right action is the same regardless of which feature you were on.
The page says “you don't have permission” but I'm supposed to be a manager / owner
Pattern: role-cache stale. Most role-gated UI on Nexpura reads the role once on auth-context load; if your role was recently elevated, the cached read may still show the old role until your session refreshes. The server-side check on the action uses the live role and won't lie to you, but the UI affordance may not have caught up. Fix: sign out and back in. If the action still rejects after a fresh sign-in, the role itself is wrong on the team-member record — ask the owner to check Team and roles and confirm the role drop-down value.
I want to know what changed on a record and when
Pattern: every long-lived record in Nexpura — repair, bespoke job, task, customer, inventory item — has an activity timeline that records state changes with actor and timestamp. The shape and location of the timeline differs slightly per surface (task detail pages render it in the sidebar; repair detail pages render it as a section on the main column) but the read is the same: newest-first list of who did what and when. Fix: open the record's detail page and scan the activity section. If the action you expected to see isn't there, the side-effect insert may have failed silently (see the in-context note on Comments and attachments for the task-side shape). Reload first; if still missing, the underlying change still applied but the timeline entry didn't persist — flag for support.
An optimistic UI update reverted (drag-drop snap- back, button stayed clicked then un-clicked)
Pattern: the server rejected the action after the client already painted the success state. Most often this is a role / assignee gate (the action requires a permission you don't have, and the UI didn't pre-disable the affordance). Less often it's a stale-read conflict (someone else updated the row between your page load and your save). Fix: read the toast that fires alongside the revert — it carries the actual error. Permission errors point at the role gate; conflict errors point at the staleness. For permission errors, the canonical page's troubleshooting section names the specific gate (e.g. Tasks overview documents the cross-assignee task gate). For conflict errors, reload the page and try again.
A timezone-sensitive number looks off (Overdue count, EOD cut-off, report period boundary)
Pattern: Nexpura uses the tenant timezone (set on the tenant row at /settings/business-profile) for tenant-wide cut-offs — “today,” the EOD reconciliation window, report period boundaries. Per-record displays (task due date, invoice timestamp) render in the viewing browser's locale. On a tenant configured for Sydney while you're viewing from London, tenant-wide counts and per-record displays can show different dates for the same row. Fix: the tenant-wide number is correct against the tenant calendar (the source of truth for the business). For per-record disambiguation, hover the date or open the detail page — both surfaces show the unambiguous YYYY-MM-DD against the tenant calendar. See EOD reconciliation and Tasks overview for the specific surface notes.
A list view shows fewer rows than I expect on a busy tenant
Pattern: several Nexpura list views fetch a bounded number of rows per request (commonly the most recent 500) and filter client-side. On tenants with more than that many open records of the type, the older records aren't in the fetched window — they still exist, they're just not in the current page's data set. Fix: the per-feature filter (status, date range, assignee) re-fetches against the server with the narrower criteria, so applying a status or date filter typically surfaces the missing record. If you need a full historical view, use the report surfaces under Financials hub and reports or export to CSV via Data import and export.
A signed file URL (photo, attachment, invoice PDF) opens to 404 / expired
Pattern: Nexpura stores files in private buckets and signs URLs at read time. Signed URLs typically expire after 7 days. If you bookmark a file link directly, or share it out of band, expect it to stop working after a week. Inside the app, the URLs re-sign on each list-read so colleagues opening the same record next week get fresh URLs. Fix: reload the record's detail page; the re-render re-signs every attached file URL. If the file still returns 404 after a fresh load, the underlying storage object may have been removed — see the per-feature troubleshooting on Comments and attachments or Photo attachments for the recovery path.
I made a small edit and the audit timeline shows nothing
Pattern: activity-timeline writes are fire-and-forget side effects on most save actions. A successful save can land the main row update without persisting the matching timeline row if the side-effect insert failed transiently. The underlying change is applied; the audit entry is missing. Fix: reload the record. If the timeline entry still isn't there, the side-effect insert failed. The change itself is real; flag persistent gaps for support so the audit trail can be reconstructed.
A passport, memo, or consignment record isn't behaving the way the page describes
Pattern: a few feature pages document specific partial shapes — workflow steps that exist in the data model but don't yet have a polished UI affordance. The canonical docs page for that feature carries the in-context disclosure that explains exactly what works and what doesn't today. Fix: open the canonical page for the surface you're on: Memo and consignment, Verify passport, Intake workspace, Data import and export, Task templates — each reads the current shape honestly.
When the index doesn't help
If the symptom you're seeing doesn't match any of the categories above, or the canonical page's troubleshooting section doesn't resolve it, see Getting help for the support escalation path and what to include in the message. For browser-specific or device-specific weirdness that isn't obviously a feature bug, the Browsers and devices page covers the supported-platform matrix and the known platform-specific quirks worth ruling out first.
Related
- Browsers and devices — supported-platform matrix, mobile considerations, the HEIC-on-Chrome-Windows and Safari-iOS quirks
- FAQ — cross-cutting questions on pricing, migration, data ownership, and forward-looking product direction
- Getting help — how to reach the Nexpura team and what to include in a support email
- Account setup — password reset and the sign-in flow when access is the problem
- Inventory overview — the canonical entry for stock-count and movement-ledger questions
- Memo and consignment — the canonical entry for memo and consignment workflow symptoms
- Customers and clienteling — the canonical entry for customer-record, anniversary, and clienteling-nudge symptoms
- POS overview — the canonical entry for register, refund, voucher, and receipt-printing symptoms
- Workshop overview — the canonical entry for repair, bespoke, appraisal, and intake-workspace symptoms
- Issue passport — the canonical entry for passport issuance, transfer, and email-delivery symptoms
- Customer-facing repair tracking — the canonical entry for customer-side SMS and tracking-page symptoms
- Quotes and invoices — the canonical entry for quote / invoice / expense / EOD / report symptoms
- Tasks overview — the canonical entry for /tasks board, Kanban, assignment-notification, and digest symptoms
- Marketing and automations — the canonical entry for segment, template, campaign, and automation-fire symptoms
- Integrations and data — the canonical entry for Shopify / Woo / Mailchimp / Xero / Google Calendar / WhatsApp / CSV symptoms
- Team and roles — the canonical entry for permission, role-cache, and 2FA symptoms