{% set page_group = "admin" %} {% include 'components/head.html' %}
{% include 'components/nav-account.html' %}
{% include 'components/alerts.html' %}

{{ page.title }}

{{ page.description }}

Intercom Messenger (JWT-secured)

{% if intercom.jwt %} Identity verified {% else %} JWT missing {% endif %}
{% if intercom.jwt_error %}
JWT generation failed: {{ intercom.jwt_error }}
Set INTERCOM_MESSENGER_SECRET in .env and reload.
{% else %}

The Intercom Messenger has been booted with a server-signed JWT (HS256) so the user's identity is verified by Intercom and cannot be impersonated from the browser. Look for the chat bubble in the bottom-right corner of the page.

{% endif %}
Identity payload
app_id {{ intercom.app_id }}
user_id in JWT {{ user.id }}
email in JWT {{ user.email }}
name in JWT {{ intercom.displayName }} {% if store.isStoreAccount %} store account: owner names {% endif %}
created_at non-sensitive {{ user.sign_up_stamp|date('U') }} ({{ user.sign_up_stamp }})
JWT exp now + {{ intercom.jwt_ttl }}s
Store attributes {% if store.isStoreAccount %} (logged-in store account: {{ store.typeNum }}) {% else %} (fallback test store: {{ store.typeNum }}) {% endif %}
{% if store.error %}
{{ store.error }}
{% else %}
company.id in JWT {{ store.companyId|default('—') }}
company.name in JWT {{ store.companyName|default('—') }}
store_number in JWT {{ store.typeNum }}
store_city in JWT {{ store.city|default('—') }}
store_state in JWT {{ store.state|default('—') }}
store_owner_emails in JWT {% if store.ownerEmails %} {{ store.ownerEmails }} {% else %} No owner emails on file. {% endif %}
{% if store.owners is not empty %}
Owner accounts ({{ store.owners|length }}) {% for owner in store.owners %} {% endfor %}
id name email
{{ owner.id }} {{ owner.name }} {{ owner.email|default('—') }}
{% endif %} {% endif %} {% if intercom.jwt %}
Generated JWT
You can decode this at jwt.io to verify the payload. {% endif %}
Open the browser console — window.intercomSettings is available there for inspection. Sensitive attributes (email) are sent only inside intercom_user_jwt, never as raw fields.
{% if intercom.jwt %} {% endif %} {% include 'components/footer.html' ignore missing %}