overleaf/overleaf · error

error trying to get websale group product prices

Error message

error trying to get websale group product prices

What it means

Sent by getGroupPlanPerUserPrices when the 'getGroupPlanPerUserPrices' module hook (or session lookup) throws while computing per-user group plan prices for the websale flow. The error is logged and the endpoint returns a bare 500, indicating a server-side failure in price aggregation, not a client input problem.

Source

Thrown at services/web/app/src/Features/Subscription/SubscriptionGroupController.mjs:490

    })
  } catch (error) {
    logger.err({ error }, 'error trying to render subtotal limit exceeded page')
    return res.redirect('/user/subscription')
  }
}

async function getGroupPlanPerUserPrices(req, res) {
  try {
    const userId = SessionManager.getLoggedInUserId(req.session)
    const prices = await Modules.promises.hooks.fire(
      'getGroupPlanPerUserPrices',
      userId,
      req.query.currency
    )
    return res.json(prices[0])
  } catch (error) {
    logger.err({ error }, 'error trying to get websale group product prices')
    return res.sendStatus(500)
  }
}

export default {
  removeUserFromGroup: expressify(removeUserFromGroup),
  removeSelfFromGroup: expressify(removeSelfFromGroup),
  addSeatsToGroupSubscription: expressify(addSeatsToGroupSubscription),
  submitForm: expressify(submitForm),
  previewAddSeatsSubscriptionChange: expressify(
    previewAddSeatsSubscriptionChange
  ),
  createAddSeatsSubscriptionChange: expressify(
    createAddSeatsSubscriptionChange
  ),
  subscriptionUpgradePage: expressify(subscriptionUpgradePage),
  upgradeSubscription: expressify(upgradeSubscription),
  missingBillingInformation: expressify(missingBillingInformation),
  manuallyCollectedSubscription: expressify(manuallyCollectedSubscription),

View on GitHub (pinned to 28ad3b03b7)

Solutions

  1. Check web logs for the logged error from the hook payload
  2. Verify the subscriptions/institutional modules backing the hook are loaded and healthy
  3. Confirm the pricing data source (e.g. plans collection or v1 API) is reachable
  4. Retry the request; if persistent, inspect the hook implementation for bugs
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at services/web/app/src/Features/Subscription/SubscriptionGroupController.mjs:490 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of overleaf/overleaf@28ad3b03b7 (2026-09-03). Data as JSON: /api/errors/c6a6f7ff854dd351. Report an issue: GitHub.