unPLUGDevelopers

Management API · Reports

Program summary Coming soon

GET/v1/reports/program_summary

Returns totals for the date range and one row per local day.

Permissions: Secret key with reports:read.

Query parameters#

  • fromstring (date)Required
    First local date, for example 2026-11-05.
  • tostring (date)Required
    Last local date, included. Not before from.
  • location_idstring (uuid)
    Only this location, in its time zone. Leave it out for the whole brand.

Response fields#

Returns 200 with ProgramSummaryReport

  • fromstring (date)
    The range you asked for.
  • tostring (date)
    The range you asked for.
  • location_idstring (uuid)Nullable
    The location filter, or null for the whole brand.
  • time_zonestring
    IANA time zone the days are counted in, for example America/Chicago.
  • currencystring
    USD.
  • The whole range, in the shape below.
    Show attributesReportFigures
    • membersobject
      Show attributesHide attributes
      • totalinteger
      • newinteger
      • activeinteger
    • pointsobject
      Show attributesHide attributes
      • issuedinteger
      • redeemedinteger
      • adjustedinteger
      • outstandinginteger
    • rewardsobject
      Show attributesHide attributes
      • issuedinteger
      • redeemedinteger
      • discount_centsinteger
    • ordersobject
      Show attributesHide attributes
      • member_ordersinteger
      • member_sales_centsinteger
      • non_member_ordersinteger
      • non_member_sales_centsinteger
  • daysarray of object + ReportFigures
    One object per local date, oldest first, each with date and the shape below.

Each of totals and the days entries holds:

FieldDescription
members.totalintegerMembers enrolled at the end of the period, not counting deleted members. Brand-wide even with location_id.
members.newintegerMembers enrolled during the period. With location_id, members whose first order was at that location.
members.activeintegerDistinct members with at least one credited order in the period. In totals each member counts once, so it's usually less than the sum of the days.
points.issuedintegerPoints from earn and bonus activity.
points.redeemedintegerPoints spent on rewards, as a positive number.
points.adjustedintegerNet of points adjustments and refund reversals. Usually negative.
points.outstandingintegerSum of all members' balances at the end of the period. Brand-wide even with location_id.
rewards.issuedintegerWallet items issued.
rewards.redeemedintegerRedemptions captured by an order: points rewards, wallet items and codes used by members.
rewards.discount_centsintegerSum of discount_cents on those redemptions.
orders.member_ordersintegerOrders with a member, from every channel, including points earned at the register.
orders.member_sales_centsintegerSubtotal minus discounts on those orders. Tax and tip aren't included.
orders.non_member_ordersintegerOrders unPLUG recorded with no member.
orders.non_member_sales_centsintegerSubtotal minus discounts on those orders.

Refunds count on the day they happen, not on the order's day, so a day's figures don't change after it ends.

Outstanding points move by issued minus redeemed plus adjusted: 2,104,380 + 55,210 - 28,000 - 90 = 2,131,500.

Error descriptions#

400Bad request
missing_param

from or to is missing.

400Bad request
invalid_param

A date isn't YYYY-MM-DD, or to is before from.

403Forbidden
missing_scope

The key doesn't have reports:read.

404Not found
location_not_found

No location with that id in your brand.

Any endpoint can also return the common errors.