HappierleadsDocs
Embed Happierleads screens

Switch to paid

A client pays: paid mode with a monthly refill date, then the plan's leads, refilled now.

A client pays: at sign-up for a paid plan, or in your payment succeeded webhook when a trial converts. Two calls, in this order.

1. Paid mode, with the monthly refill date

PUT /admin/websites/toggle-limits/{websiteId} with activeWebsite: true and refreshOnDate = their next billing date. This ends a trial.

PUT/admin/websites/toggle-limits/{websiteId}
Try:
Request body
Website IdWebsite ID
Trial EnabledEnable or disable trial mode. - `true`: Sets website to trial mode (requires `trialExpireDate`) - `false`: Clears trial mode (sets `trialEnds` to null)
Trial Expire DateWhen the trial expires. Required when `trialEnabled` is true.
Active WebsiteEnable or disable active/paid mode. - `true`: Sets website to active mode (requires `refreshOnDate`) - `false`: Clears active mode (sets `refreshOn` to null)
Refresh On DateDate when credits will automatically reset. Required when `activeWebsite` is true. Typically set to the next billing cycle date.
Enable Website LimitsEnable or disable website-level limits. - `true`: Website uses its own limits (from `limits` field) - `false`: Website uses account-level limits (unlimited at website level)
curl -X PUT "https://rest-admin.happierleads.com/admin/websites/toggle-limits/64b7f0a1c2d3e4f5a6b7c8d9?privateKey=YOUR_KEY" \  -H "Content-Type: application/json" \  -d '{  "trialEnabled": false,  "activeWebsite": true,  "enableWebsiteLimits": true,  "refreshOnDate": "2026-11-30"}'
Response
Press Send request to try it with sample data.

2. The plan's leads, refilled to full now

PUT /admin/websites/set-limits/{websiteId} with the plan's numbers and resetCredits: true.

PUT/admin/websites/set-limits/{websiteId}
Try:
Request body
Website IdWebsite ID to update limits for
CreditsMaximum number of credits (leads/visitors) allowed. Set to 0 to disable tracking.
Email AccountsMaximum number of email accounts allowed for integrations. Set to 0 to disable email features.
Reset CreditsRefill what is left to the full allowance right now.
curl -X PUT "https://rest-admin.happierleads.com/admin/websites/set-limits/64b7f0a1c2d3e4f5a6b7c8d9?privateKey=YOUR_KEY" \  -H "Content-Type: application/json" \  -d '{  "credits": 2000,  "emailAccounts": 5,  "resetCredits": true}'
Response
Press Send request to try it with sample data.

Call both from your billing webhook and make it idempotent: the same event twice must give the same result. The JavaScript tab of each playground has the code.

What happens without you

Every month on refreshOnDate their leads refill to the plan's number and the date moves on a month. A normal renewal needs no call.

The same in your dashboard

In the dashboardIn the API
Give it its own limitenableWebsiteLimits: true
Every monthactiveWebsite: true, trialEnabled: false
Leads per monthcredits
Refills onrefreshOnDate
Refill nowresetCredits: true

Paid in Website settings

Next: change plan or billing date.

On this page