Builders Program

Build with us for a whole month. Unlimited usage and add-ons, weekly calls and your own Slack channel.

Learn more
Polymorfa

Command Palette

Search for a command to run...

Observability

Every number.
The whole picture.

Understand which audiences reply, when recipients are active and where delivery breaks down. Investigate failures and send the same data to your own stack.

Opt-in

Analytics

See what gets a response.

Enable Analytics to compare audiences and message formats by reads, replies and response time. Find where conversations stall, then check recipient activity and call outcomes.

See which messages earn replies. Compare reply rates by message type, length and source, with a 95% interval and the difference from all conversations.
See which audiences respond. Compare countries by conversations, reads, replies or reply time. Open a country to inspect that segment.
Follow the same audience. Combine country, message format, length and device-count filters. The graph and breakdowns stay on the same conversation set.
Find where conversations stall. Separate delivery, reading and replying. See how long customers take to respond and which tracked chats await your reply.
Compare your message mix. Compare text, images, video and other formats. Break down message length and sending source alongside observed replies.
Understand recipient device use. Compare primary-only and linked-device groups. Read device-source observations alongside engagement, with unknown counts kept separate.
Plan around observed activity. See when incoming messages, receipts and presence signals arrive in your time zone. Compare active periods with gaps without signals.
Spot missed opportunities to talk. Compare answered, missed and declined calls, pickup time and talk time. Check observed callbacks after missed incoming calls.
Explore Analytics

Logs

Search. Open. Investigate.

Find API and webhook errors, open the record and follow the number’s context before and after the failure.

The exact record. Search by ID, error, source and status. Follow a live window.
See the spike. Follow API and webhook failures over time and open the errors in Logs.
The surrounding context. Inspect five minutes before and after on the same number.
Take the records with you. Export your selection as CSV or JSON.

BanSafe

Health, with the evidence.

See the Health estimate, the factors behind each deduction and which measurements are fresh. Follow the account’s devices alongside it.

Every Linked Devices number gets a Health score from our AI model. Coverage shows what was measured; stale or missing signals stay explicit.

Explore BanSafe

Your data stack

Query. Collect. Route.

Put the same business signals to work in your stack: query aggregates through the API, monitor metrics in a collector and route records to your own services.

Your monitoring, with business data. Collect delivery, reply, connection and call metrics over 1-, 24- or 168-hour windows. Use Prometheus directly or an OpenTelemetry Collector with OTLP HTTP export.
Set up the Collector
Log and Analytics drains. Forward API requests, number updates and webhook deliveries, or hourly Analytics snapshots. Send signed JSON or NDJSON to HTTPS endpoints; use delivery IDs to deduplicate retries.
Explore Drains

In your code

Analytics in your own code.

Read the numbers behind the Console from the SDK, the CLI or plain HTTP, with a team or project key.

analytics.ts
import { Client } from "@polymorfa/sdk";

// Pass your API key from wherever you keep secrets.
const platform = new Client({
  credential: { type: "organizationApiKey", value: apiKey },
});

const { data } = await platform.analytics.get({
  projectId: "PROJECT_ID",
  start: Date.now() - 24 * 3_600_000,
  end: Date.now(),
});

data.summary?.engagement.replyRate; // 0.6
data.summary?.calls.answerRate;

API surface

The Observability API.

Reads need sessions:read and the event stream needs events:listen. The TypeScript SDK wraps every route below.

Analytics

  • GET/platform/analyticsAnalytics for every number in the team
  • GET/platform/projects/{projectId}/analyticsAnalytics for one project
  • GET/platform/campaigns/{campaignId}/analyticsOne campaign's funnel and timing

Metrics

  • GET/platform/analytics/metricsTeam metrics for your collector
  • GET/platform/projects/{projectId}/analytics/metricsMetrics for one project

Deliveries and audit

  • GET/platform/webhook-deliveriesWebhook deliveries and their status
  • GET/platform/webhook-deliveries/{deliveryId}/attemptsEvery attempt for one delivery
  • POST/platform/webhook-deliveries/{deliveryId}/retryRetry a delivery
  • GET/platform/auditWho changed what in the team
  • GET/platform/projects/{projectId}/events/streamLive events over SSE

Start with a free number

Your first real number is free. Add more numbers on Pay-As-You-Go.