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?

productAgents_getChannels

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 productAgents_getAnalytics.

Name Type Required Description
websiteUuid string Yes The UUID of the customer's website in Hello Retail. Use website_getInfo 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": "productAgents_getChannels",
    "arguments": {
      "websiteUuid": "<string>"
    }
  }
}
{
  "channels": [
    {
      "channelId": "<string>",
      "name": "<string>",
      "channelType": "KLAVIYO",
      "state": "ACTIVE",
      "conversionMetricConfigured": true
    }
  ]
}

productAgents_getAnalytics

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 website_getInfo 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 productAgents_getChannels). 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": "productAgents_getAnalytics",
    "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
}