# App management

> Subscription parameters a provider uses to manage FlowLock: info block, renewal, moving, fallback address and app settings; what FlowLock doesn't read and why.

Parameters come as a **subscription response header** or a **line in the body**, `#name: value` (a header wins over
a line with the same name). The names are Happ's: if your panel already sends them for Happ, FlowLock understands
them without any setup. Text can be encoded as `base64:…`. Boolean values: `true` or `1` means yes, `false` or `0`
means no.

The parameters on this page work **only for a verified subscription**: it carries your [ID](https://flowlock.cc/en/docs/provider-id.md), and
its domain is [verified](https://flowlock.cc/en/docs/domains.md) in your cabinet. Parameters that work for any subscription are on the
[“Subscription headers”](https://flowlock.cc/en/docs/headers.md) page.

## Example

```
HTTP/1.1 200 OK
profile-title: base64:0JzQvtC5IFZQTg==
subscription-userinfo: upload=0; download=1073741824; total=107374182400; expire=1798761600
support-url: https://t.me/myvpn_support
flowlock-provider: k7m2x9q4bd
sub-info-color: blue
sub-info-text: A new server in the Netherlands is now on the list
sub-info-button-text: Learn more
sub-info-button-link: https://myvpn.example/news
sub-expire: 1
sub-expire-button-link: https://t.me/myvpn_bot?start=renew
fallback-url: https://sub2.example.com/abc123
ping-type: tcp
```

## Extended parameters

| Parameter                         | Value                                | What it does                                                                                                                                                                           |
| --------------------------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `new-url`                         | link                                 | permanently changes the subscription address for everyone. The new address must be on your verified domain; if the subscription doesn't load from it, the app goes back to the old one |
| `new-domain`                      | domain                               | changes only the domain (the path and token stay). Also only your verified domain                                                                                                      |
| `fallback-url`                    | link                                 | a fallback address on your verified domain: if the main one doesn't answer within 9 s, fails with a network error or returns HTTP 300 to 599, the app tries the fallback               |
| `serverDescription`               | up to 30 characters                  | a caption under the server name: in the server link `vless://…#Germany?serverDescription=RmFzdA==` (base64) or `meta.serverDescription` in a JSON subscription                         |
| `sub-info-text`                   | up to 200 characters, `0` removes it | an info block on the subscription card                                                                                                                                                 |
| `sub-info-color`                  | `blue` (default), `green`, `red`     | the info block's colour                                                                                                                                                                |
| `sub-info-button-text`            | up to 25 characters                  | a button in the info block (no button without it)                                                                                                                                      |
| `sub-info-button-link`            | `https://…` or `tg://…`              | where the button leads                                                                                                                                                                 |
| `sub-expire`                      | `1`                                  | a “Subscription ends in N days” banner 3 days before `expire`, and “Subscription has ended” after it                                                                                   |
| `sub-expire-button-link`          | `https://…` or `tg://…`              | a “Renew” button in that banner                                                                                                                                                        |
| `notification-subs-expire`        | `1`                                  | a system notification 3 days before, 1 day before and on the day of expiry                                                                                                             |
| `subscription-always-hwid-enable` | `1`                                  | this subscription always sends the HWID, even if the user turned off “Send HWID”. The user sees the explanation “required by the provider” and can only delete the subscription        |

## App settings

The same keys can be sent with the “Change settings” command (see [“Notifications and commands”](https://flowlock.cc/en/docs/messages.md)).

| Parameter                              | Value                                | What it changes                                  | Where |
| -------------------------------------- | ------------------------------------ | ------------------------------------------------ | ----- |
| `subscription-autoconnect`             | `1` / `0`                            | connect when the app starts                      | all   |
| `subscription-ping-onopen-enabled`     | `1` / `0`                            | ping servers when the app starts                 | all   |
| `subscription-auto-update-enable`      | `1` / `0`                            | auto-update of **this** subscription             | all   |
| `subscription-auto-update-open-enable` | `1` / `0`                            | refresh subscriptions when the app starts        | all   |
| `ping-type`                            | `proxy`, `proxy-head`, `tcp`, `icmp` | ping method (`proxy-head` = `proxy`)             | all   |
| `check-url-via-proxy`                  | `https://…`                          | the check address for ping through the proxy     | all   |
| `proxy-ping-timeout`                   | seconds, 1 to 10 (more counts as 10) | ping timeout                                     | all   |
| `change-user-agent`                    | string up to 256                     | User-Agent for downloading **this** subscription | all   |
| `fragmentation-enable`                 | `1` / `0`                            | TLS ClientHello fragmentation                    | all   |
| `fragmentation-packets`                | `tlshello` or `1-3`                  | which packets to split                           | macOS |
| `fragmentation-length`                 | `50-100`                             | piece length                                     | macOS |
| `fragmentation-interval`               | `10-20`                              | pause between pieces, ms                         | macOS |
| `subscriptions-sort-type`              | `without`, `ping`, `alphabet`        | server order                                     | all   |
| `subscription-always-hwid-enable`      | `1` / `0`                            | see above                                        | all   |
| `notification-subs-expire`             | `1` / `0`                            | see above                                        | all   |

### How the user sees it

Next to the setting there is “Set by the provider “My VPN”” and a “Restore mine” button. If the user restored their
own value, the same header no longer overrides it; a new value does. If the user deletes the subscription, the
settings you set go back to their previous values.

## What FlowLock doesn't read

| Parameter                                                                                                                                                                                                          | Why                                                                                                                              |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| `custom-tunnel-config`, `socks-auth-*`, `http-auth-*`, `dns-from-json-enable`                                                                                                                                      | they open the local proxy to the outside, change DNS or replace the whole core configuration, which breaks the user's protection |
| `proxy-enable`, `tun-enable`, `tun-mode`, `tun-type`                                                                                                                                                               | the user chooses the connection mode (TUN needs administrator rights)                                                            |
| `exclude-routes`, `exclude-routes-set`, `per-app-proxy-*`                                                                                                                                                          | they let traffic go around the VPN                                                                                               |
| `hide-settings`                                                                                                                                                                                                    | the user has the right to see what runs on their computer; [limited links](https://flowlock.cc/en/docs/install-links.md) hide the subscription address   |
| `server-address-resolve-*`, `subscription-request-timeout`, `subscription-autoconnect-type`, `proxy-ping-mode`, `ping-result`, `manual-block-user-agent`                                                           | FlowLock has no such setting, or it is the user's choice                                                                         |
| `noises-*`, `mux-*`, `sniffing-enable`, `fragmentation-maxsplit`, `no-limit-*`, `user-agent-geo-files`                                                                                                             | parameters of another core (Xray) or of Happ modes                                                                               |
| `color-profile`, `hide-vpn-icon`, `subscriptions-collapse`, `subscriptions-expand-now`, `subscription-pin`, `dont-use-filter`, `app-auto-start`, `xray-tun-*`, `include-all-networks-enable` and other mobile ones | iOS/Android only, or meaningless on a computer; FlowLock has its own themes (`flowlock-theme`)                                   |
| `providerid`                                                                                                                                                                                                       | Happ's ID; FlowLock has its own, `flowlock-provider`                                                                             |

Neither a header nor a command lets the provider change: the user's routing rules and “all direct”, DNS, local proxy
ports and passwords, “Allow connections from the network”, the global “Send HWID” switch, the connection mode,
diagnostics and the account.
