Przio · Audience Manager

Audience Manager

Inspect per-visitor attributes keyed by przio-uuid, stitch anonymous browsers to your login IDs, and build saved audiences with include/exclude rules. Data reaches the dashboard when your site uses the Przio SDK (setAudience, stitch, and the background audience sync).

Overview

Data flow (add image).

Audience Manager is under Project → Audience Manager. It shows visitors who have interacted with a site that loads your project's sdk.js. Each row is keyed by visitor ID (the przio-uuid cookie). Audience attributes are arbitrary string/number/boolean fields you set with PrzioSDK.setAudience; they persist in the browser and are reported to the server so you can search and segment in the app.

Stitching links a device's UUID to your own externalUserId (and optional userProfile key-values) after login — via PrzioSDK.stitch. That enables cross-device views in By Audience and User profile tabs.

Saved audiences are reusable segment definitions (include/exclude rule trees on attributes and other audiences). Member lists are computed on demand from stored visitor documents.

Prerequisites

  1. A Przio project with sdk.js installed on the properties you want to measure.
  2. Audience Manager is available on standard project plans that include it (including Classic tools — see your project license).
  3. Trial projects may be redirected to upgrade when opening Audience Manager in the app.
  4. Team access: owners and members with project access can open the dashboard; APIs require a valid Bearer token (logged-in session).

Until visitors run your script and attributes are synced, lists can be empty — that is expected for new projects.

SDK on your site

Same install as personalization: load sdk.js with data-project-id. Then call SDK methods from your pages or tag manager.

setAudience(callback)

Pass a function that receives the current audience object; mutate properties (strings, numbers, booleans). The SDK persists to localStorage and queues a server-side sync so the dashboard updates (see Visitor API — SDK audience report).

PrzioSDK.setAudience(function (audience) {
  audience.bannerSeen = true;
  audience.planTier = 'pro';
});

stitch(externalUserId, profile?)

Call after the user signs in. externalUserId is your stable user key. Optional profile object stores traits (e.g. email, name) shown under User profile. Stitching is stored per project in localStorage and included in audience reports.

PrzioSDK.stitch('user_123', { email: 'a@example.com', name: 'Alex' });

Read helpers

The SDK exposes read accessors (e.g. current audience snapshot, stitched ID) for your own logic — see the bundled sdk.js comments.

Dashboard

Dashboard tabs (add image).

The top Refresh button reloads bootstrap data (attribute summary, saved audiences) and the current tab's list. Many tables support search (debounced) and configurable rows per page (up to app limits).

By UUID

By UUID tab (add image).

Paginated list of every visitor document for the project, newest activity first.

Search matches substrings on visitor UUID or external user ID server-side across the collection. Click a row to open a detail panel: full attribute map, qualified saved-audience names, and stitch metadata when present.

By Audience

By Audience tab (add image).

Explore who has a given attribute key, and list external user IDs with device counts.

Attribute keys are aggregated across visitor documents for the project. Choosing a key lists everyone who currently has that attribute. The external-user list shows distinct logged-in users and device counts; selecting one shows the UUIDs stitched to that account.

Stitch graph

Stitch graph tab (add image).

Operational view for identity stitching health.

Surfaces external users alongside unstitched visitors (UUIDs without an externalUserId) so you can confirm login flows are calling stitch and spot gaps.

User profile

User profile tab (add image).

One row per stitched user with merged profile key-values and linked experience cloud / device identifiers when synced.

Search runs server-side and matches external user id or profile email. Useful for support and analytics teams verifying what was sent in stitch(..., profile).

Saved audiences

Saved audiences tab (add image).

Create named segments with visual rule builder: drag attribute keys or existing audiences into include/exclude groups.

Each container uses AND or OR between rules. Attribute rules support operators such as equals, not equals, exists, comparisons, and contains. Exclusions can reference attributes or other audiences. Deleting a saved audience removes only the segment definition — visitor rows are unchanged.

Opening a segment loads members in batches from stored visitor data; use Load more for the next chunk.

Visitor API reference

Endpoints below read or ingest visitor documents (UUID rows, attributes, stitching, profiles). They do not cover saved-audience (segment) CRUD or segment membership APIs. Replace PROJECT_ID with your project id. Examples use https://app.przio.com.

Base URL

Project-scoped list and detail routes:

  • /api/projects/PROJECT_ID/audience
  • /api/projects/PROJECT_ID/audience/by-attribute
  • /api/projects/PROJECT_ID/audience/attribute-summary
  • /api/projects/PROJECT_ID/audience/attribute-keys
  • /api/projects/PROJECT_ID/audience/external-users
  • /api/projects/PROJECT_ID/audience/external-users/EXTERNAL_USER_ID/visitors (URL-encode the id)
  • /api/projects/PROJECT_ID/audience/unstitched
  • /api/projects/PROJECT_ID/audience/user-profiles
  • /api/projects/PROJECT_ID/visitor/VISITOR_ID

Browser ingest (no PROJECT_ID in the path; body carries projectId):

  • /api/sdk/audience-report

Authentication

EndpointAuth
/api/projects/.../audience/*Authorization: Bearer <token> — user with project access (same checks as the Audience Manager UI).
/api/projects/.../visitor/...Bearer token; visitor must belong to the project.
POST /api/sdk/audience-reportCalled by sdk.js; validates body projectId + visitorId (not your dashboard JWT).

POST /api/sdk/audience-report

Upserts one visitor row. Body JSON: projectId, visitorId (required); optional audience object, externalUserId, userProfile. Use primitive values in maps. Invoked by the SDK after setAudience / stitch sync — not usually called manually.

GET /api/projects/PROJECT_ID/audience

Paginated visitor list (newest activity first). Query: page (0-based), limit (default 50, capped), optional search (substring on visitor UUID or external user id).

Response includes visitors, totalCount, page, limit, totalPages, hasNextPage, hasPrevPage.

GET …/audience/by-attribute

Required query: key (attribute name). Optional: page, limit, search. Returns visitors whose audience map contains that key.

Attribute summary & keys

GET .../audience/attribute-summaryattributeKeys and keyCounts for the UI builder.

GET .../audience/attribute-keys — distinct keys via aggregation.

External users

GET .../audience/external-users — paginated distinct external IDs with UUID counts; optional search.

GET .../audience/external-users/:externalUserId/visitors — visitor UUIDs stitched to that user.

GET …/audience/unstitched

Visitors with no externalUserId. Query: page, limit, optional search (visitor id).

GET …/audience/user-profiles

One row per stitched user: external id, profile map, UUID counts, ECID lists (preview capped in response). Query: page, limit, optional search (external id or profile email).

GET /api/projects/PROJECT_ID/visitor/VISITOR_ID

Full detail for one UUID: attributes, qualified saved-audience names, stitch fields — same shape the By UUID detail drawer uses.

Implementation checklist

  • sdk.js on site with correct data-project-id.
  • setAudience updates fire where behaviours should be tracked.
  • stitch runs after authentication with stable externalUserId.
  • Smoke test: open By UUID and confirm new visitors appear after browsing.
  • Build one saved audience and verify members load.
  • Document visitor API usage if you automate exports or integrations (Bearer token).

FAQ

Why is my visitor list empty?

No one has loaded your script yet, or setAudience has not run so nothing was synced. Confirm the script on a live page and trigger an audience update.

Are attributes PII-safe?

You control what you store. Follow your privacy policy and avoid secrets in audience keys/values; values are visible to anyone with project dashboard access.

Do saved audiences update automatically?

Definitions are stored; membership is evaluated against current visitor documents when you load members. Changing attributes on the site changes who qualifies on the next evaluation.