Webhook: New SaaS Plan Created in Sparkforge
The New SaaS Plan Created webhook fires whenever a SaaS plan is added to your Sparkforge account, returning the same payload as GET /plans so you can sync billing, analytics, and integrations without polling.
The New SaaS Plan Created webhook delivers a real-time event whenever a SaaS plan is added to your Sparkforge account. The payload matches the GET /plans endpoint, so existing integrations parse it without modification.
What's in the payload
Each event includes plan configuration and metadata, plus three nested arrays:
- saasProducts — bundled features and feature toggles.
- prices — pricing options (monthly, yearly, and any other intervals).
- addOns — optional add-ons attached to the plan.
Endpoint: POST https://services.sparkforgehq.com/saas/agency-plans/:companyId
Sample payload
{
"id": "plan_12345",
"name": "Professional Suite",
"saasProducts": [
{ "id": "prod_abc", "name": "CRM", "enabled": true },
{ "id": "prod_def", "name": "Marketing Automation", "enabled": true }
],
"prices": [
{ "interval": "monthly", "amount": 49.99 },
{ "interval": "yearly", "amount": 499.99 }
],
"addOns": [
{ "id": "addon_001", "name": "Extra Users", "price": 10 }
],
"metadata": {
"createdBy": "user_789",
"createdAt": "2025-08-07T12:34:56Z"
}
}Security
Sparkforge signs each payload with HMAC SHA256 and includes the signature in the X-Sparkforge-Signature header. Verify the signature against your secret before processing the request to confirm authenticity and reject tampered events.
Retries, rate limits, and versioning
- Success — respond with HTTP 2xx.
- Failures — non-2xx responses trigger up to three retries with exponential backoff. Make your handler idempotent.
- Rate limit — 100 requests per minute per company.
- Versioning — current payload is v1. Future versions increment the path (e.g.,
/v2/agency-plans). ReadschemaVersionon every event.
Common integration patterns
- Billing sync — push new plans into Stripe, Chargebee, or your invoicing system the moment they're created.
- Analytics — track plan creation cadence and product mix without polling
GET /plans. - Internal alerts — notify operations or finance in Slack when a new plan goes live.
Frequently Asked Questions
How do I retrieve past plan creation events?
What happens if my endpoint returns HTTP 500?
Can I filter the webhook to specific plan types?
Will I get an event when a plan is updated?
How do I verify my integration is working?
Was this article helpful?
Thanks for the feedback.