Analytics

Profile Views

See how people reach your PingRep profile, which doors they use, and what happens next.

Profile analytics

Every analytics route is scoped to one of your profiles: /api/v1/analytics/profiles/{profile_id}/.... Get your profile id from GET /api/v1/profiles/me.

These routes are owner-only and use a session bearer token (Authorization: Bearer ...). Asking for a profile that is not yours returns 404 Profile not found, the same as a profile that does not exist.

Which routes need a paid plan

basic, view-activity, by-door and clicks work on any plan. funnel, leads, conversations, performance, topics, social-clicks and the full profile summary require a plan that includes analytics. Without one, the API returns 403. Check your plan with GET /api/v1/billing/status, and see Subscription Tiers.

Basic stats

GET
/api/v1/analytics/profiles/{profile_id}/basic
JWT

Headline counts for one of your profiles.

total_viewsnumberOptional

All profile views.

views_this_weeknumberOptional

Views in the last 7 days.

qr_scansnumberOptional

Views that came from a QR scan.

qr_scans_this_weeknumberOptional

QR scans in the last 7 days.

saved_countnumberOptional

People who saved your contact.

Recent view activity

A feed of recent views, newest first. Each event has an id, a viewed_at timestamp and a source (qr or link). It does not include viewer identity.

GET
/api/v1/analytics/profiles/{profile_id}/view-activity
JWT

Recent views and scans for your profile.

daysnumberOptional

Look-back window in days, 1 to 400. Defaults to 365.

limitnumberOptional

Number of events to return, 1 to 100. Defaults to 50.

The response contains events, count and days.

Where views come from

Two routes show how people reach you.

GET
/api/v1/analytics/profiles/{profile_id}/by-door
JWT

Per-door breakdown of visits, conversations and leads.

A door is one of the ways people reach your AI Representative. The response has by_door, one row per door with ingress_id, ingress_name, views, scans, saves, visits, conversations and leads. It also returns top_topics, the questions visitors asked your Rep most often, each with a count. Both lists are empty when there is no data yet.

GET
/api/v1/analytics/profiles/{profile_id}/performance
JWT

Daily views and scans, plus totals by source.

This route returns period_days, a daily timeline (date, views, scans) and by_source, a map of view totals by source. The recorded source is qr or link, so a QR scan is one channel among several. Use the days query parameter (1 to 365, default 30).

Full profile summary

GET
/api/v1/analytics/profiles/{profile_id}
JWT

Views, unique viewers, source breakdown and daily timeline.

Accepts days (1 to 365, default 30). The response includes period_days, total_views, unique_viewers, by_source, recent_viewers and timeline.

Outcomes: funnel, leads and topics

GET
/api/v1/analytics/profiles/{profile_id}/funnel
JWT

Visits, conversations and leads with conversion rates.

Returns visits, conversations, leads, conversation_rate and lead_rate.

GET
/api/v1/analytics/profiles/{profile_id}/leads
JWT

Paginated leads captured through your profile.

Accepts limit (1 to 100, default 20), offset, and door to filter by door id. Returns items, total, limit and offset. Each lead can include name, email, phone, company, the door it came through and the question that started the conversation. A single lead is available at GET /api/v1/analytics/leads/{lead_id}.

GET
/api/v1/analytics/profiles/{profile_id}/topics
JWT

What visitors ask your Rep about, grouped into intents and themes.

Returns intents and themes, each with a label and a count. Accepts an optional door filter. To see the actual questions inside one theme, call GET /api/v1/analytics/profiles/{profile_id}/topics/{label}.

Conversations behind these numbers are listed at GET /api/v1/analytics/profiles/{profile_id}/conversations (same limit, offset and door parameters, plus theme).

GET
/api/v1/analytics/profiles/{profile_id}/social-clicks
JWT

Click totals per social platform.

Returns items (each with platform, total_clicks, last_clicked_at) and total_clicks. For who clicked on one platform, call GET /api/v1/analytics/profiles/{profile_id}/social-clicks/{platform}.

A simpler summary with a daily trend, available on any plan, is at GET /api/v1/analytics/profiles/{profile_id}/clicks (accepts days, 1 to 365, default 30). It returns total_clicks, by_platform and trend.

Read it with contacts

Compare views and conversations with saved contacts in the Contacts API to see which doors turn visits into real follow-ups.