Theme
Open the portal

Portal configuration guides

Click-by-click walkthroughs of every screen in the allus portal: creating and configuring a service, declaring request fields, sharing data back, wiring webhooks, registering API clients, and watching the logs. These are the UI-driven counterpart to the Portal API.

Where this happens. All of the screens below live in the allus business portal — open the portal and sign in (or create) your company account. The same operations are scriptable via the Portal API.
Levels. A service's Webhooks and API access tabs, and connecting a person, need your company on the Basic level or above; contract flows, messaging and 2FA by allme need Pro. Below the level a feature needs, the portal shows an upgrade screen in its place. Creating and configuring a service needs no level.

1. Create & configure a service

A service is the unit a person connects to — it owns its request fields, the data it shares back, its webhooks, its API client, and its own zero-knowledge keypair. Most companies run one service per integration point (e.g. CRM, Support).

  1. In the portal, go to Configuration → Services → New service.
  2. Give it a name (e.g. CRM). The server derives a default share code from the name; you can edit it later (step below).
  3. Set the audience: b2p (business→person, the default), b2b, or any. People can only connect to b2p/any services.
  4. Set the required admin email (see Admin email & alerts).
  5. On create, the service's private-key passphrase is shown once. Copy it now — you need it to decrypt person data. The card says whether the portal also saved a recovery copy, which you can reveal later under Settings → Recovery (Recovery).
Portal → Configuration → Services → New service
Portal → Configuration → Services → New service — Name the service, set the admin email, and copy the one-time service private-key passphrase.
The passphrase is shown once. It protects your downloadable service private key (an OpenSSL-encrypted PEM). Without it you cannot decrypt any person→service data. Store it in your secret manager before leaving the screen; a saved recovery copy is the only other way back to it. To download the keys themselves, open the service's Overview tab.

2. Set the service share code

The share code is the second half of a person's connect handle, COMPANYCODE/SERVICECODE (your company profile code, a slash, the service code). It is uppercase [A-Z0-9], 1–8 characters, and unique within your company.

  1. Open the service, on its Overview tab.
  2. Edit the share code field (it forces uppercase and strips invalid characters).
  3. Save. A duplicate within your company is rejected.
Portal → Configuration → Services → service → Overview tab → Share code
Portal → Configuration → Services → service → Overview tab → Share code — Edit the service share code; the connect handle is COMPANYCODE/SERVICECODE.

3. Configure request fields

Request fields declare what a person provides when they connect. The Requests tab is a draft + publish editor — you build the set, then publish it all at once.

  1. Open the service's Requests tab.
  2. Add a field by type (e.g. email, phone, address, or a binary photo/document). Optionally set a display label and hint.
  3. Optionally pick a suggested field — an advisory global person field of the same type that the connect screen pre-selects for the person.
  4. Set the flags: Mandatory (the person can't connect without answering) and Must stay connected (the answer must be a live field, not a one-time snapshot — this implies mandatory).
  5. Drag to reorder, then Publish.

Requiring a verified value

A request row asked of people can additionally require a verified answer: verified: true, plus an optional verified_max_age_days (the value must have been verified within that many days; omitted = no limit). Only offered on a type at least one global field can carry a verification kind for (email, phone, address, or the person/document attributes an ID check establishes) — the toggle simply does not appear on a type nothing can verify. Two restrictions follow from what the flag means:

The connect screen refuses an unverified or over-age candidate and offers the person Verify now in place, so the connection is never blocked outright — only the specific field is. A verified delivery is a metered, per-event charge to the receiving company (see Verified values for the price card and the charge-on-change rule); requiring one needs the Basic level or above.

The identical pair — verified / verified_max_age_days — is offered on a contract-flow field in the flow builder's Inspector (link-only there: a verified flow field can only be answered by linking one of the person's own fields, never captured fresh in the run) and on an OAuth-app claim in Configuration → OAuth apps (excluding a document claim, which cannot travel as an inline value). One rule, three surfaces.

Portal → Configuration → Services → service → Requests tab → Add field
Portal → Configuration → Services → service → Requests tab → Add field — Add a request field by type, set a suggestion and a label, toggle Mandatory / Must stay connected, drag to reorder.

Publishing & consent fan-out

Publishing replaces the whole set. The server diffs your draft against the live config: existing rows update (the field type is immutable once set), new rows are added, removed rows are deleted along with any provided values + pending consents.

Adding a field to a live service fans out consent requests. When a service already has connections and you add a request field, every connected person receives a consent request (one merged request per connection) plus a push. They can provide (the new field flows in) or decline (the connection stays fully active — declines are grandfathered, even for mandatory fields, which are only enforced at connect time). The publish confirmation shows how many consent requests were created.
Portal → Configuration → Services → service → Requests → Publish
Portal → Configuration → Services → service → Requests → Publish — The confirmation for a live service: it names the number of connected people and lists the new requests they will be asked to consent to.

4. Share data back & the company profile

The Sharing tab controls what your service shares with everyone connected to it (e.g. a support email, a website). The Profile page controls your company-level data, shared with every connection across all your services.

  1. On the Sharing tab, enable a global company/any field and fill its value. Values are plaintext and visible to connections instantly.
  2. For a photo field, use the upload control (or webcam capture) — the value is set via the photo endpoint, not the plain text input.
  3. On the Profile page, fill company-wide fields the same way.
Portal → Configuration → Services → service → Sharing tab
Portal → Configuration → Services → service → Sharing tab — Add fields to the service card with their plaintext values, including an uploaded photo.
Portal → Profile
Portal → Profile — Fill company-level profile fields (plaintext), shared with every connection on any service.
Share + profile values are plaintext. They are stored unencrypted by design (no passphrase UX, instant visibility), with server-side type validation. This is the opposite of person→service data, which is always encrypted to your service key. See the encryption model.

5. Configure webhooks

Webhooks push person→service change events to your endpoint in near-real-time — the alternative to polling the change feed. The full behavior (events, format, auth, the account-key envelope, the circuit-breaker) is documented on the Webhooks page.

  1. On the service's Webhooks tab, click Add endpoint.
  2. Enter the endpoint URL — HTTPS for a real endpoint; plain HTTP is accepted for a local receiver.
  3. Choose the events to subscribe to (leave empty for all) and the wire format (JSON or XML). The list offers every event except 2fa_challenge_completed: to receive that one, leave the list empty or set the webhook's events over the portal API.
  4. Pick an auth mode — HMAC is the recommended default. If you leave the HMAC secret blank, one is generated and shown once; copy it.
  5. Optionally enable encrypt payload (the account-key envelope), and toggle enabled.
Portal → Configuration → Services → service → Webhooks tab
Portal → Configuration → Services → service → Webhooks tab — Add an endpoint: URL, events, format, auth mode, the one-time HMAC secret, and the encrypt-payload toggle.
Secrets are masked in the UI after creation (•••• + the last 4). Editing a webhook without re-entering a secret keeps the stored value.

6. Register an API client

A registered API client is the machine-to-machine credential your backend uses to call the service API. Each service has exactly one.

  1. On the service's API access tab, click Register client and give it a name.
  2. The client secret is shown once — copy it and the client id into your secret manager. The portal also keeps a recovery copy (Recovery).
  3. The client obtains tokens with the client_credentials grant, its only grant.
  4. Regenerate secret rotates the secret and revokes existing tokens. Delete removes the client and all its tokens.
Portal → Configuration → Services → service → API access tab
Portal → Configuration → Services → service → API access tab — Register a client; copy the one-time client id + secret; regenerate or delete.

A registered client is automatically whitelisted to the service data API and nothing else — the exact pattern list is on Authentication, which is the one place it is written down. Use the client to get a token from /oauth2/token.

7. Admin email & stale-queue alerts

Every service requires an admin email. It receives alerts when your change feed backlog goes unconsumed:

Set the admin email in the create form; change it later in the Admin email section of the service's Overview tab.

Portal → Configuration → Services → service → Overview tab → Admin email
Portal → Configuration → Services → service → Overview tab → Admin email — The required admin-email field where stale-queue alerts are sent.

8. The Logs tab

Each service has an operational Logs tab — an audit of ops events, never person data. Entries include:

Portal → Configuration → Services → service → Logs tab
Portal → Configuration → Services → service → Logs tab — Newest-first ops log: email alerts, 7-day purges, and webhook state/config changes (type chip + message + timestamp).

Next steps