Skip to content

Product Agents analytics

See how your Product Agents perform per channel: messages sent, revenue, engagement rates, a per-agent breakdown, and a daily series. Numbers mirror the Product Agents Analytics page.

Prerequisite: Set up a Klaviyo conversion metric

Before you can fetch analytics, you must set up a metric ID on my.helloretail.com. Go to Product Agents → Analytics, open a Klaviyo channel's Configure conversion metric dialog, and select the relevant metric to use — if you are unsure, it's likely "Placed orders".

Tips & tricks

List a website's channels first to get a channelId, then ask for that channel's analytics.

List the Product Agent channels for my website, then show last month's analytics for the active one.

Compare agents by asking for the breakdown — it ranks each agent (flow) by revenue.

Which Product Agent drove the most revenue on my website over the last 30 days?

getProductAgentChannels

List a customer website's Product Agent channels — the destinations agents send through (a Klaviyo account or a webhook). Returns each channel's id, name, type and state, and for Klaviyo channels whether a conversion metric is configured (analytics are unavailable until one is). Use the id as the channelId for getProductAgentAnalytics.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use getWebsiteInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "getProductAgentChannels",
    "arguments": {
      "websiteUuid": "<string>"
    }
  }
}
{
  "channels": [
    {
      "channelId": "<string>",
      "name": "<string>",
      "channelType": "KLAVIYO",
      "state": "ACTIVE",
      "conversionMetricConfigured": true
    }
  ]
}

getProductAgentAnalytics

Get one Product Agent channel's analytics for a customer website using Hello Retail: KPI totals (messages sent, revenue, revenue per message, click/open/conversion rates), a per-agent breakdown, and a daily series of messages sent and revenue. Numbers mirror the Product Agents Analytics page.

Limits

  • Window: cannot exceed 13 months — longer ranges are rejected. Applies to all channel types.
  • Klaviyo rate limits: Klaviyo channels read from Klaviyo's Reporting API — burst 1/s, steady 2/min, daily 225/day. Warm reports are served from cache, so only cache misses count against those limits. When Klaviyo is temporarily rate-limited, the response comes back with unavailable set (and retryAfterSeconds when Klaviyo supplies it) instead of failing — render what you have and retry later.

Rate fields depend on the channel type: openRate and unsubscribeRate are Klaviyo-only, conversionRate is for non-Klaviyo (webhook) channels, and the ones that don't apply come back null.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use getWebsiteInfo to look up available websites, or find it in my.helloretail.com under Settings → Website Settings → Website Unique Id.
channelId string No The channel to report on (from getProductAgentChannels). Omit to use the website's first channel.
startDate string No Start of the window, inclusive, ISO YYYY-MM-DD. Defaults to a 30-day window ending on endDate.
endDate string No End of the window, inclusive, ISO YYYY-MM-DD. Defaults to today.
limit integer No Maximum number of breakdown rows to return. Default 20, capped at 100.
Example request & response
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "getProductAgentAnalytics",
    "arguments": {
      "websiteUuid": "<string>",
      "channelId": "<string>"
    }
  }
}
{
  "channel": {
    "channelId": "<string>",
    "name": "<string>",
    "channelType": "KLAVIYO",
    "state": "ACTIVE",
    "conversionMetricConfigured": true
  },
  "totals": {
    "messagesSent": 0,
    "revenue": 0.0,
    "conversions": 0,
    "revenuePerMessage": 0.0,
    "clickRate": 0.0,
    "openRate": 0.0,
    "conversionRate": null,
    "unsubscribeRate": 0.0
  },
  "breakdown": [
    {
      "id": "<string>",
      "messageType": "<string>",
      "displayName": "<string>",
      "metrics": {
        "messagesSent": 0,
        "revenue": 0.0,
        "conversions": 0,
        "revenuePerMessage": 0.0,
        "clickRate": 0.0,
        "openRate": 0.0,
        "conversionRate": null,
        "unsubscribeRate": 0.0
      }
    }
  ],
  "series": [
    {
      "date": "<string>",
      "messagesSent": 0,
      "revenue": 0.0
    }
  ],
  "unavailable": null,
  "retryAfterSeconds": null
}