Webhook: New SaaS Plan Created in Sparkforge

By Sparkforge Support Team ·Last reviewed May 3, 2026

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). Read schemaVersion on 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?
Use GET /plans for historical data. Webhooks only deliver events going forward from the moment they're configured.
What happens if my endpoint returns HTTP 500?
Sparkforge retries up to three times with exponential backoff. Build your handler to be idempotent so retried events don't double-process.
Can I filter the webhook to specific plan types?
No. The webhook fires for every plan creation. Apply filtering inside your receiver based on metadata or plan properties.
Will I get an event when a plan is updated?
No. Subscribe to the separate SaaS Plan Updated webhook for modifications.
How do I verify my integration is working?
After configuring the webhook, create a test SaaS plan in Sparkforge. Confirm the event arrives at your endpoint with the expected payload.

Was this article helpful?