Skip to main content
This is an internal, operator-only reference. It is intentionally unlisted in the sidebar and is meant for Statisfy support and admin staff. The flags below expose diagnostic, debug, and destructive tooling — do not share externally or link from customer-facing pages.
These flags are plain URL query-params — no server-side flag infrastructure. Append them to the relevant app URL (https://app.statisfy.com/...). Two resolution styles are used, so the exact value matters:
These are distinct from PostHog-backed feature flags (useFeatureFlag), which gate production rollouts by user / cohort / percentage. The flags on this page are manual URL switches only.

Quick reference

Flag details

&show_sync=true — Meeting CRM sync status

Append to a meeting activity URL to reveal a CRM sync-status indicator at the bottom of the activity, so you can confirm whether a specific activity synced to the connected CRM.
  • Where: meeting activity detail (/book/[id]/.../activity/[activity_id])
  • Value required: =true

&salesforce_account_debug=true — Salesforce account debug

On an account’s Objects view, reveals controls to refresh field values directly from Salesforce — both a bulk “refresh all fields” action and per-field refresh — and displays the live Salesforce value alongside the Statisfy value so you can spot field-level differences.
  • Where: account detail → Objects (/book/[id]/details)
  • Value required: =true

?tab=delete — Delete any activity

An unlisted tab on the Activity page that lets an admin look up an activity by ID, preview it, and permanently delete it.
  • Where: https://app.statisfy.com/activity?tab=delete
  • Gated by: activity_report permission (admins only — the tab renders empty otherwise)
  • Guardrail: a deletion reason is mandatory (minimum 5 words / 20 characters) before the delete can be submitted
Deletion is permanent. Always capture a meaningful reason — it is required and recorded.

?tab=unsubscribed — Unsubscribed recipients

An unlisted tab on the Campaigns page that lists every recipient who has unsubscribed, along with the timestamp. It has no visible tab trigger and is reachable only via the URL.
  • Where: https://app.statisfy.com/campaigns?tab=unsubscribed

/integrations/monitoring?tab=sync_issues — Records stuck on their way to the CRM

A Sync Issues tab on the Integration Monitoring page listing every record whose changes have not reached the connected CRM, in one place. The per-record banner on an opportunity answers “is this one stuck”; this page answers “what is stuck at all”, which nothing else could without opening records one at a time.
  • Where: https://app.statisfy.com/integrations/monitoring?tab=sync_issues
  • Gated by: the settings manage permission. Rows carry raw CRM error bodies naming Salesforce field API names and validation rules, which is why it is permission-gated.
  • Visible tab: the monitoring page shows an Integrations tab and a Sync Issues tab only when bidirectional (upstream) sync is on for at least one of accounts, opportunities, people, or activities. Otherwise the page shows only the integration list.
  • Old URL retired: /integrations?tab=sync_issues no longer opens Sync Issues. Use the monitoring URL above.

Entity sub-tabs

The page opens on Opportunities. Each sub-tab is its own &issueType= value, so a deep link lands on the right one:

Reading a row

  • ID links to the record itself, and shows a friendlier label where the id says nothing — a contact row shows the person’s email, with the uuid kept in the link.
  • Last attempt is when the push was last tried, in UTC, newest first.
  • Error is the CRM’s own words: the message, and the field it named where it named one. Expanding a row shows the CRM’s raw response with the HTTP headers stripped.
  • Retry sync appears on Opportunities only. It pushes that one record immediately and reports what the CRM said. The other types have no single-record push to offer yet.
An empty table is the healthy answer. A record in sync has no row at all, so there is no green “all good” list to read — absence is the signal. The CRM’s name comes from the record’s own destination, so a HubSpot tenant reads HubSpot and a Jira-bound project task reads JIRA.

ERRORED vs FAILED

The cap is UPSTREAM_SYNC_MAX_RETRIES (default 5). Rows written before the skip landed can carry a true count above the cap; the UI clamps the display to “5 of 5” while the row keeps the real number.

?sync_errors=1 — CRM sync status icon on account and person pages

Shows the sync status icon (and its Force sync dialog) on an account or person page for a user whose role does not see it by default.
  • Where: /book/[id]?sync_errors=1 and /people/[id]?sync_errors=1 (use &sync_errors=1 when the URL already has a ?)
  • Shown without the flag to: the Admin and Member All Accounts roles
  • Value required: =1
  • Backed by: useShowSyncErrors(), which reads useUrlFeatureFlag('sync_errors')
  • Not sticky: the icon goes away on the next page that does not carry the flag

?manage_customers=1 + ?skip_type_check=1 — Self-serve account merge

On Settings → Accounts, manage_customers=1 turns on the self-serve UI for merging duplicate accounts. skip_type_check=1 additionally includes accounts that have no type set in the merge-candidate list (untyped accounts are excluded server-side by default).
  • Where: https://app.statisfy.com/settings?tab=accounts&manage_customers=1&skip_type_check=1
  • Sticky: manage_customers is sticky for the browser session — once enabled it stays on across navigation until you pass ?manage_customers=0
  • See also: Merging duplicate accounts

?internal — Integration backfill & detailed monitoring

A presence flag (just ?internal, no value) that reveals operator-only tooling inside the Integration admin without standing up server-side flags:
  • Warehouse config (BigQuery, Snowflake, Redshift, Postgres): per-query backfill triggers
  • JIRA config: per-project backfill controls
  • Integration monitoring: the diagnostic view (log request-id chips, failure-investigation context)
Add ?internal to the relevant Integration → Admin page (e.g. JIRA, BigQuery, Snowflake).
There is no separate Snowflake flag — Snowflake backfill and monitoring are covered by ?internal, the same as the other warehouse integrations.

?health_frequency_update=1 — Health computation frequency

On Settings → Config, reveals a control that lets users change how frequently account health is recomputed. This is an in-development flag and is hidden by default.
  • Where: https://app.statisfy.com/settings?tab=config&health_frequency_update=1
  • Value required: =1

?show_note=1 — Comment internal-note visibility

On an externally-shared project, reveals the comment-visibility controls: the Reply / Internal-note tabs in the composer (project and task comments) plus the per-comment visibility badge. Without the flag the composer falls back to a plain single box and every comment is saved as internal — so the internal-note surface stays hidden until the full shared-comments experience is fully rolled out.
  • Where: project detail and task comments (/projects/[id], and the /share/... project view) — only takes effect when the project’s Share externally toggle is on
  • Value required: =1
  • Backed by: useUrlFeatureFlag('show_note')

/portals — Portals management page

A route that lists all portals (drafts + live, with any archived-but-live one badged Archived), and lets you create a portal and manage publishable API keys. It has no entry in the left navigation yet — the feature is not fully live, so the page is reachable only by navigating to the URL directly.
  • Where: /portals (e.g. https://dev-app.statisfy.com/portals)
  • Sub-params:
    • ?tab=api-keys — deep-links straight to the API-keys panel (same panel as /settings?tab=api-keys)
    • ?view=live — filters the list to live portals only (hides drafts)
  • Related: /portals/[id] for an individual portal

?ai_usage=1 — AI Usage & Credits page

Reveals the AI Usage row in the left navigation (under Settings) and unlocks the /ai-usage route directly. There is no rollout infrastructure behind this — it’s a plain URL switch, not a per-org enablement.
  • Where: anywhere in the app, e.g. https://app.statisfy.com/ai-usage?ai_usage=1
  • Value required: =1
  • Backed by: useUrlFeatureFlag('ai_usage')
  • Page content: see AI Usage & Credits for what the page shows once unlocked

?workbench=1 — Human Twin settings tab

Reveals the Human Twin tab in Settings (admin users only).
  • Where: https://app.statisfy.com/settings?tab=workbench-agent&workbench=1
  • Value required: =1
  • Backed by: useUrlFeatureFlag('workbench')

Third-party tools (MCP)

The Workbench can use connected third-party MCP tools (for example, Jira) when it prepares actions. An admin enables them under the Human Twin tab:
  • Turn on Enable third-party MCP tools for the workbench.
  • Select which tools the workbench may use from each connected server.
  • Optionally add an injected prompt that steers when and how it uses them (for example, “File a Jira ticket when a customer reports a hardware issue”).
Tools marked approval-required on the Integrations page pause for review before they run — the review shows up as a tool-approval action in your queue, rather than executing automatically.

Skills

The Skills tab under Settings → Human Twin sets which skills (ready-made workflows) the Human Twin can load. One list applies to every kind of Workbench run.
  1. Open the Skills tab and click Add Skills.
  2. Pick skills from the catalog. To detach one, click remove on its card.
  3. Click Save. Cancel discards unsaved edits.
A skill runs only when it is attached here and enabled for your organization in Settings → Skills.
  • Save replaces the whole list. Removing a card and saving detaches that skill.
  • Unavailable skills stay visible. An attached skill that is later archived or turned off shows as an Unavailable card. Remove it and save to clean it up.
  • Refused saves. Statisfy refuses the save and names the skills at fault if you add a skill your organization can’t use (“These skills can’t be attached: …”) or one that needs tools the Workbench can’t provide, such as the slide-building tools (“These skills need tools the workbench can’t provide …”). Only newly added skills are checked.

Previewing the Workbench for a user

Admins can see what the Workbench would prepare for a specific person and account — a dry run that reads their data. It’s useful for checking how the Workbench behaves for a teammate before they rely on it. From the Human Twin tab, click Playground (or go directly to /settings/workbench-agent/playground?workbench=1). On the preview panel:
  1. User — choose the person to run as. The preview uses that user’s book of business and permissions.
  2. Account — pick the account to focus on.
  3. Activity (optional) — leave it on Whole account (or pick one activity) to scan the whole account, or select a single activity (like one email thread) to scope the preview to just that.
  4. Click Run preview.
The preview thinks through the account the same way the live Workbench does and shows the actions it would draft — emails, Slack replies, tasks, and meeting prep — along with its reasoning.
Workbench Preview is available to admins and creates, sends, or executes nothing side-effecting — but read-only lookups (like a search or a memory read) may still execute, so it isn’t a fully inert read of static data.