{% extends "base.html" %} {% block title %}Settings · Storepulse{% endblock %} {% macro reauth(saved) %} {% if saved %}{% endif %} {% endmacro %} {% macro saved_line(info) %} {% if info %}
Saved {{ info.saved }} · fingerprint {{ info.fingerprint }}
{{ problem.message }}
{% endif %} {% endmacro %} {% macro card_actions(section, info) %} {% if info %}Admin created. Add your store credentials and email below; each one is checked live before it's saved.
{% endif %} {% if saved %}{{ saved }}
{% endif %} {% if checks_shown %}A Team API key with the Sales role (README, "Apple API key").
{{ problem_for("apple") }} {{ saved_line(credentials.apple) }} {{ card_actions("apple", credentials.apple) }}A service account invited in Play Console with View app information and download bulk reports; Android revenue also needs the optional financial permission (README, "Google service account").
{{ problem_for("google") }} {{ saved_line(credentials.google) }} {% if cfg.google %}Service account: {{ cfg.google.service_account_email }}
{% endif %} {{ card_actions("google", credentials.google) }}The daily digest goes through your own SMTP server; a test email is sent before saving (README, "SMTP setup").
{{ problem_for("email") }} {{ saved_line(credentials.email) }} {{ card_actions("email", credentials.email) }}Hidden apps leave every list but still count in totals, and still get crash warnings.
Same-named iOS and Android apps pair automatically when the match is unambiguous; a pairing or unpairing you make here is kept.
{% else %}Apps appear once a credential is saved.
{% endif %}Signed in as {{ user.email }}. Two-factor authentication is {{ "on" if totp_enabled else "off" }}.
{% if totp_setup %}Add this key to your authenticator app, then enter the code it shows. The key is shown only now.
{{ totp_setup.secret }}
{{ totp_setup.uri }}