Prerequisite A Growi organization on the Growth plan or higher, and access to
Settings → Developer in the dashboard.
1. Create a read-only key
Reporting only reads, so create a viewer key under Settings → Developer → API keys. A viewer key can’t change anything, which makes it safe to paste into a BI tool or share with an agency. See authentication and keys.2. Get the headline numbers
3. Add the detail you need
For sales, use Stores overview and
Shopify stats. For payouts, use
List payouts.
4. Stay inside the rate limit
A key gets 40 requests an hour and needs 2 seconds between calls. A report that calls six endpoints once a day is well inside that. Cache the filters, and don’t poll. See rate limits.Spikes and breakout posts
A spike is a day whose gain is at least 3 times the median of the 14 days before it. The baseline reaches back beforestart_date, so the first days of your range are
covered too. Today is never a spike, because it’s a partial day, and neither is a day
whose baseline is under 1,000: small numbers swing on a single post. Pass threshold
and baseline_days to Spike days to change the 3 and the 14.
What drove a day takes one date inside your range and returns
that day’s total against the same baseline, how many posts gained and how many were
new, the top posts by gain with each one’s share of the day, and everyone else rolled
up.
Breakout posts are posts gaining far faster than their own normal
pace: views gained yesterday and today so far, against their average daily gain over
the 7 days before. It always answers for right now and ignores start_date and
end_date; meta.window says which days it used.
If a dip looks wrong, check post readings per day first. A day marked
low had under half the usual number of fresh post readings, so the dip may be missing
data rather than fewer views.
Moving off the old stats endpoints
The/stats/* endpoints that used to power Home are deprecated. They still work,
but they’re slower and use MM/DD/YYYY dates. The
deprecations table maps each one to its
replacement.
Troubleshooting
401 Not Authenticated
401 Not Authenticated
Check the header is
Authorization: Bearer <key> with no extra spaces, and that the
key wasn’t deleted under Settings → Developer → API keys.403 This API key is read-only
403 This API key is read-only
A viewer key tried a write. Reporting endpoints are all
GET. For writes, use a full key.429 Rate limit exceeded
429 Rate limit exceeded
Wait for the
Retry-After seconds, then space calls at least 2 seconds apart.The numbers don't match the dashboard
The numbers don't match the dashboard
Days are UTC and both ends of the range are included. Pass the same
organization_id and campaign filters the dashboard has selected.