subscription.activated
Overview of the subscription.activated webhook
subscription.activated webhookWhen a subscription.activated event is triggered, FastSpring sends a webhook payload containing details about a newly created subscription. This webhook only fires when a customer starts a new subscription, including new trials. It does not fire on rebills.
If webhook expansion is enabled, the payload includes full account and product objects. Otherwise, the payload includes only the corresponding IDs.
This page provides:
- A full sample payload showing a populated
subscription.activatedwebhook - A detailed table listing every payload property, including name, type, and description
- Notes on field behavior, including how to detect trials and what's included when webhook expansion is enabled
Browse the table sections below or use the quick links to jump to a specific group of fields.
Tip: Not all fields are always included. Refer to the Payload properties table to understand when a field appears.
Webhook payload example (expansion enabled)
When a subscription.activated event is triggered, the webhook sends the following JSON payload:
{
"id": "subSCR1pt10nAbc123-456XYZ",
"quote": "QUOT1234ABC5678XYZ",
"subscription": "subSCR1pt10nAbc123-456XYZ",
"active": true,
"state": "active",
"changed": 1751328000000,
"changedValue": 1751328000000,
"changedInSeconds": 1751328000,
"changedDisplay": "7/31/25",
"live": true,
"currency": "USD",
"account": {
"id": "acctAbCdEfG123-XyZ456",
"account": "acctAbCdEfG123-XyZ456",
"contact": {
"first": "John",
"last": "Doe",
"email": "[email protected]",
"company": "Example Corp",
"phone": "+1 5550001000"
},
"language": "en",
"country": "US",
"lookup": {
"global": "acctPublicID789_XYZ"
},
"url": "https://examplestore.test.onfastspring.com/account"
},
"product": {
"product": "example-subscription-annual",
"parent": "example-parent-product",
"display": {
"en": "Example Subscription - Annual"
},
"description": {
"summary": {
"en": "This is the summary description for Example Subscription - Annual."
},
"action": {
"en": "Buy Now"
},
"full": {
"en": "This is the long description for Example Subscription - Annual."
}
},
"image": "https://cdn.example.com/images/subscription-annual.png",
"offers": [
{
"type": "addon",
"display": {
"en": "Extended Support"
},
"items": ["example-addon-product"]
}
],
"fulfillments": {
"example-subscription-annual_file_1": {
"fulfillment": "example-subscription-annual_file_1",
"name": "File Download (installer.exe)",
"applicability": "NON_REBILL_ONLY",
"display": {
"en": "Download Installer"
},
"url": "https://cdn.example.com/files/installer.exe",
"size": 24576,
"behavior": "PREFER_EXPLICIT",
"previous": []
}
},
"format": "digital",
"pricing": {
"interval": "year",
"intervalLength": 1,
"intervalCount": 1,
"quantityBehavior": "allow",
"quantityDefault": 1,
"price": {
"USD": 100
},
"dateLimitsEnabled": false,
"setupFee": {
"price": {
"USD": 10
},
"title": {
"en": "One-time Setup Fee"
}
},
"reminderNotification": {
"enabled": true,
"interval": "week",
"intervalLength": 1
},
"overdueNotification": {
"enabled": true,
"interval": "week",
"intervalLength": 1,
"amount": 4
},
"cancellation": {
"interval": "week",
"intervalLength": 1
}
}
},
"sku": "sub-annual-001",
"display": "Example Subscription - Annual",
"quantity": 1,
"adhoc": false,
"autoRenew": true,
"price": 100,
"priceDisplay": "$100.00",
"priceInPayoutCurrency": 100,
"priceInPayoutCurrencyDisplay": "$100.00",
"discount": 0,
"discountDisplay": "$0.00",
"discountInPayoutCurrency": 0,
"discountInPayoutCurrencyDisplay": "$0.00",
"subtotal": 110,
"subtotalDisplay": "$110.00",
"subtotalInPayoutCurrency": 110,
"subtotalInPayoutCurrencyDisplay": "$110.00",
"next": 1782864000000,
"nextValue": 1782864000000,
"nextInSeconds": 1782864000,
"nextDisplay": "7/31/26",
"end": 1814486400000,
"endValue": 1814486400000,
"endInSeconds": 1814486400,
"endDisplay": "7/31/27",
"canceledDate": 1814486400000,
"canceledDateValue": 1814486400000,
"canceledDateInSeconds": 1814486400,
"canceledDateDisplay": "7/31/27",
"deactivationDate": 1814572800000,
"deactivationDateValue": 1814572800000,
"deactivationDateInSeconds": 1814572800,
"deactivationDateDisplay": "8/1/27",
"sequence": 1,
"periods": 12,
"remainingPeriods": 11,
"begin": 1751328000000,
"beginValue": 1751328000000,
"beginInSeconds": 1751328000,
"beginDisplay": "7/31/25",
"intervalUnit": "year",
"intervalLength": 1,
"nextChargeCurrency": "USD",
"nextChargeDate": 1782864000000,
"nextChargeDateValue": 1782864000000,
"nextChargeDateInSeconds": 1782864000,
"nextChargeDateDisplay": "7/31/26",
"nextChargePreTax": 110,
"nextChargePreTaxDisplay": "$110.00",
"nextChargePreTaxInPayoutCurrency": 110,
"nextChargePreTaxInPayoutCurrencyDisplay": "$110.00",
"nextChargeTotal": 110,
"nextChargeTotalDisplay": "$110.00",
"nextChargeTotalInPayoutCurrency": 110,
"nextChargeTotalInPayoutCurrencyDisplay": "$110.00",
"nextNotificationType": "PAYMENT_REMINDER",
"nextNotificationDate": 1782259200000,
"nextNotificationDateValue": 1782259200000,
"nextNotificationDateInSeconds": 1782259200,
"nextNotificationDateDisplay": "7/25/26",
"paymentReminder": {
"intervalUnit": "week",
"intervalLength": 1
},
"paymentOverdue": {
"intervalUnit": "week",
"intervalLength": 1,
"total": 4,
"sent": 0
},
"cancellationSetting": {
"cancellation": "AFTER_LAST_NOTIFICATION",
"intervalUnit": "week",
"intervalLength": 1
},
"addons": [
{
"product": "example-addon-product",
"sku": "addon-001",
"display": "Example Add-on Product",
"quantity": 1,
"price": 10,
"priceDisplay": "$10.00",
"priceInPayoutCurrency": 10,
"priceInPayoutCurrencyDisplay": "$10.00",
"discount": 0,
"discountDisplay": "$0.00",
"discountInPayoutCurrency": 0,
"discountInPayoutCurrencyDisplay": "$0.00",
"subtotal": 10,
"subtotalDisplay": "$10.00",
"subtotalInPayoutCurrency": 10,
"subtotalInPayoutCurrencyDisplay": "$10.00",
"discounts": []
}
],
"setupFee": {
"price": {
"USD": 10
},
"title": {
"en": "One-time Setup Fee"
}
},
"fulfillments": {
"example-subscription-annual_file_1": [
{
"display": "installer.exe",
"size": 24576,
"file": "https://cdn.example.com/files/installer.exe",
"type": "file"
}
]
},
"instructions": [
{
"product": "example-subscription-annual",
"type": "regular",
"periodStartDate": 1751328000000,
"periodStartDateValue": 1751328000000,
"periodStartDateInSeconds": 1751328000,
"periodStartDateDisplay": "7/31/25",
"periodEndDate": 1782864000000,
"periodEndDateValue": 1782864000000,
"periodEndDateInSeconds": 1782864000,
"periodEndDateDisplay": "7/31/26",
"intervalUnit": "year",
"intervalLength": 1,
"discountPercent": 0,
"discountPercentValue": 0,
"discountPercentDisplay": "0%",
"discountTotal": 0,
"discountTotalDisplay": "$0.00",
"discountTotalInPayoutCurrency": 0,
"discountTotalInPayoutCurrencyDisplay": "$0.00",
"unitDiscount": 0,
"unitDiscountDisplay": "$0.00",
"unitDiscountInPayoutCurrency": 0,
"unitDiscountInPayoutCurrencyDisplay": "$0.00",
"price": 100,
"priceDisplay": "$100.00",
"priceInPayoutCurrency": 100,
"priceInPayoutCurrencyDisplay": "$100.00",
"priceTotal": 100,
"priceTotalDisplay": "$100.00",
"priceTotalInPayoutCurrency": 100,
"priceTotalInPayoutCurrencyDisplay": "$100.00",
"unitPrice": 100,
"unitPriceDisplay": "$100.00",
"unitPriceInPayoutCurrency": 100,
"unitPriceInPayoutCurrencyDisplay": "$100.00",
"total": 100,
"totalDisplay": "$100.00",
"totalInPayoutCurrency": 100,
"totalInPayoutCurrencyDisplay": "$100.00"
}
]
}Navigate this webhook
The subscription.activated webhook payload includes dozens of fields. Use the cards below to jump to a specific section of the property reference.
Subscription Metadata
Timestamps
Subscription Settings
Account Object
Product Object
Pricing
Subscription Details (Root-level)
Rebill and Expiration
Next Charge Details
Cancellation and Deactivation
Billing Schedule
Notification Settings
Add-ons Array
Setup Fee Object
Fulfillments Object
Instructions Array
Payload properties
All fields below are included in the subscription.activated webhook payload. Fields are grouped into categories for easier navigation.
| Name | Type | Description |
|---|---|---|
| Subscription Metadata | ||
| id | string | Unique identifier for the subscription instance |
| quote | string | Quote ID associated with the originating order when applicable |
| subscription | string | Legacy subscription identifier matching id for backward compatibility |
| active | boolean | Whether the subscription is currently active |
| state | string | Current subscription state such as active, overdue, deactivated, trial, or canceled |
| Timestamps | ||
| changed | integer | Time of the most recent update in milliseconds since epoch |
| changedValue | integer | Duplicate of changed for backward compatibility |
| changedInSeconds | integer | Time of the most recent update in seconds since epoch |
| changedDisplay | string | Human-readable display of the most recent update time |
| Subscription Settings | ||
| live | boolean | Whether the subscription was created in live mode |
| currency | string | Three-letter ISO currency code for the subscription |
| Account Object | ||
| account | object | Customer account object containing ID, contact information, language, country, and account lookup values |
| account.id | string | FastSpring-generated customer account ID |
| account.account | string | Duplicate of account.id for backward compatibility |
| account.contact.first | string | First name of the customer |
| account.contact.last | string | Last name of the customer |
| account.contact.email | string | Email address of the customer |
| account.contact.company | string | Company name of the customer when provided |
| account.contact.phone | string | Phone number of the customer when provided |
| account.language | string | Two-letter ISO code for the customer’s preferred language |
| account.country | string | Two-letter ISO country code for the customer |
| account.lookup.global | string | Globally unique public ID used to look up the account in customer-facing portals |
| account.url | string | Customer-facing account management URL |
| Product Object | ||
| product | string | Identifier or path of the subscription product |
| parent | string | Identifier of the parent product when applicable |
| display.en | string | Localized display name of the product in English |
| description.summary.en | string | Short summary description of the product in English |
| description.action.en | string | Call-to-action text for the product in English |
| description.full.en | string | Long-form description of the product in English |
| image | string | URL of the product image |
| offers | array | List of add-on offers related to the product |
| offers.type | string | Type of offer such as addon |
| offers.display.en | string | Display name of the offer in English |
| offers.items | array | Identifiers of products included in the offer |
| fulfillments | object | One or more fulfillment items keyed by dynamic identifiers |
| fulfillments.fulfillment | string | Unique identifier for the fulfillment item |
| fulfillments.name | string | Name or label of the fulfillment |
| fulfillments.applicability | string | Applicability of the fulfillment such as NON_REBILL_ONLY |
| fulfillments.display.en | string | Buyer-facing display name of the fulfillment in English |
| fulfillments.url | string | Download URL for a file-based fulfillment |
| fulfillments.size | integer | File size in bytes for a downloadable fulfillment |
| fulfillments.behavior | string | Delivery behavior such as PREFER_EXPLICIT |
| fulfillments.previous | array | Array of previously used fulfillment items |
| format | string | Product format such as digital |
| Pricing | ||
| interval | string | Time unit for the billing interval such as month or year |
| intervalLength | integer | Number of units per billing interval |
| intervalCount | integer | Total number of billing intervals when applicable |
| quantityBehavior | string | How quantity is handled for the subscription |
| quantityDefault | integer | Default quantity value when the product is added |
| price.USD | number | Price of the product in USD |
| dateLimitsEnabled | boolean | Whether time-based restrictions are enabled for pricing |
| setupFee.price.USD | number | Setup fee amount in USD |
| setupFee.title.en | string | Localized display label for the setup fee |
| reminderNotification.enabled | boolean | Whether renewal reminders are enabled |
| reminderNotification.interval | string | Time unit for the reminder interval |
| reminderNotification.intervalLength | integer | Number of interval units before the charge when the reminder is sent |
| overdueNotification.enabled | boolean | Whether overdue notifications are enabled |
| overdueNotification.interval | string | Time unit between overdue notifications |
| overdueNotification.intervalLength | integer | Interval length between overdue notifications |
| overdueNotification.amount | integer | Total number of overdue notifications to send |
| cancellation.interval | string | Time unit used with intervalLength to determine cancellation timing |
| cancellation.intervalLength | integer | Number of interval units after which the subscription is canceled |
| Subscription Details (Root-level) | ||
| sku | string | Internal SKU for the subscription product |
| display | string | Display name of the subscription product |
| quantity | integer | Quantity of the subscription product |
| adhoc | boolean | Whether the subscription is managed outside standard checkout flows |
| autoRenew | boolean | Whether the subscription renews automatically |
| price | number | Base price of the subscription product |
| priceDisplay | string | Formatted base price |
| priceInPayoutCurrency | number | Base price converted to your disbursement currency |
| priceInPayoutCurrencyDisplay | string | Formatted base price in your disbursement currency |
| discount | number | Total discount amount applied to the subscription |
| discountDisplay | string | Formatted discount amount |
| discountInPayoutCurrency | number | Discount amount in your disbursement currency |
| discountInPayoutCurrencyDisplay | string | Formatted discount amount in your disbursement currency |
| subtotal | number | Subtotal including price and setup fees before taxes |
| subtotalDisplay | string | Formatted subtotal |
| subtotalInPayoutCurrency | number | Subtotal in your disbursement currency |
| subtotalInPayoutCurrencyDisplay | string | Formatted subtotal in your disbursement currency |
| Rebill and Expiration | ||
| next | integer | Timestamp in milliseconds for the next scheduled rebill |
| nextValue | integer | Duplicate of next for backward compatibility |
| nextInSeconds | integer | Timestamp in seconds for the next scheduled rebill |
| nextDisplay | string | Formatted date for the next scheduled rebill |
| end | integer | Timestamp in milliseconds for the subscription end date |
| endValue | integer | Duplicate of end for backward compatibility |
| endInSeconds | integer | Subscription end date in seconds |
| endDisplay | string | Formatted subscription end date |
| Next Charge Details | ||
| nextChargeCurrency | string | Three-letter ISO currency code for the next scheduled charge |
| nextChargeDate | integer | Next charge date timestamp in milliseconds |
| nextChargeDateValue | integer | Duplicate of nextChargeDate for backward compatibility |
| nextChargeDateInSeconds | integer | Next charge date timestamp in seconds |
| nextChargeDateDisplay | string | Formatted next charge date |
| nextChargePreTax | number | Total pre-tax amount for the next scheduled charge |
| nextChargePreTaxDisplay | string | Formatted pre-tax charge amount |
| nextChargePreTaxInPayoutCurrency | number | Pre-tax charge amount in your disbursement currency |
| nextChargePreTaxInPayoutCurrencyDisplay | string | Formatted pre-tax charge amount in your disbursement currency |
| nextChargeTotal | number | Total charge amount for the next scheduled charge |
| nextChargeTotalDisplay | string | Formatted total charge amount |
| nextChargeTotalInPayoutCurrency | number | Total charge amount in your disbursement currency |
| nextChargeTotalInPayoutCurrencyDisplay | string | Formatted total charge amount in your disbursement currency |
| Cancellation and Deactivation | ||
| canceledDate | integer | Timestamp in milliseconds when the subscription was canceled |
| canceledDateValue | integer | Duplicate of canceledDate for backward compatibility |
| canceledDateInSeconds | integer | Cancellation timestamp in seconds |
| canceledDateDisplay | string | Formatted cancellation date |
| deactivationDate | integer | Timestamp in milliseconds when the subscription was deactivated |
| deactivationDateValue | integer | Duplicate of deactivationDate for backward compatibility |
| deactivationDateInSeconds | integer | Deactivation timestamp in seconds |
| deactivationDateDisplay | string | Formatted deactivation date |
| Billing Schedule | ||
| sequence | integer | Current billing period number |
| periods | integer | Total number of expected billing periods |
| remainingPeriods | integer | Number of rebills remaining before expiration |
| begin | integer | Activation timestamp in milliseconds |
| beginValue | integer | Duplicate of begin for backward compatibility |
| beginInSeconds | integer | Activation timestamp in seconds |
| beginDisplay | string | Formatted activation date |
| intervalUnit | string | Time unit for rebills such as month or year |
| intervalLength | integer | Number of units per billing cycle |
| Notification Settings | ||
| nextNotificationType | string | Type of next scheduled notification such as PAYMENT_REMINDER |
| nextNotificationDate | integer | Next notification timestamp in milliseconds |
| nextNotificationDateValue | integer | Duplicate of nextNotificationDate for backward compatibility |
| nextNotificationDateInSeconds | integer | Next notification timestamp in seconds |
| nextNotificationDateDisplay | string | Formatted next notification date |
| paymentReminder | object | Interval settings for pre-billing reminders |
| paymentReminder.intervalUnit | string | Time unit for reminder intervals such as week |
| paymentReminder.intervalLength | integer | Number of time units before rebill to send a reminder |
| paymentOverdue | object | Settings for overdue payment notifications |
| paymentOverdue.intervalUnit | string | Time unit between overdue reminders |
| paymentOverdue.intervalLength | integer | Number of time units between overdue reminders |
| paymentOverdue.total | integer | Total number of overdue reminders to send |
| paymentOverdue.sent | integer | Number of overdue reminders already sent |
| cancellationSetting | object | Rules for automatic cancellation after reminders |
| cancellationSetting.cancellation | string | Cancellation trigger such as AFTER_LAST_NOTIFICATION |
| cancellationSetting.intervalUnit | string | Time unit used to delay cancellation |
| cancellationSetting.intervalLength | integer | Number of time units to wait before cancellation |
| Add-ons Array | ||
| addons | array | List of optional add-on products included with the subscription |
| addons.product | string | Identifier of the add-on product |
| addons.sku | string | SKU of the add-on product |
| addons.display | string | Display name of the add-on product |
| addons.quantity | integer | Quantity of the add-on product |
| addons.price | number | Unit price of the add-on |
| addons.priceDisplay | string | Formatted unit price of the add-on |
| addons.priceInPayoutCurrency | number | Unit price of the add-on in your disbursement currency |
| addons.priceInPayoutCurrencyDisplay | string | Formatted unit price of the add-on in your disbursement currency |
| addons.discount | number | Total discount applied to the add-on |
| addons.discountDisplay | string | Formatted discount applied to the add-on |
| addons.discountInPayoutCurrency | number | Discount applied to the add-on in your disbursement currency |
| addons.discountInPayoutCurrencyDisplay | string | Formatted discount applied to the add-on in your disbursement currency |
| addons.subtotal | number | Total cost of the add-on after discounts |
| addons.subtotalDisplay | string | Formatted subtotal of the add-on |
| addons.subtotalInPayoutCurrency | number | Subtotal for the add-on in your disbursement currency |
| addons.subtotalInPayoutCurrencyDisplay | string | Formatted subtotal for the add-on in your disbursement currency |
| addons.discounts | array | List of discount objects applied to the add-on |
| Setup Fee Object | ||
| setupFee | object | Object containing setup fee information |
| setupFee.price | number | Setup fee amount |
| setupFee.title | string | Display label for the setup fee |
| Fulfillments Object | ||
| fulfillments.display | string | Display name of the fulfillment |
| fulfillments.size | integer | File size in bytes when applicable |
| fulfillments.file | string | Download URL for the fulfillment file |
| fulfillments.type | string | Type of fulfillment such as file or license |
| Instructions Array | ||
| instructions | array | Array of billing instruction objects for each rebill period |
| instructions.product | string | Product identifier for this billing period |
| instructions.type | string | Instruction type such as regular, trial, or discounted |
| instructions.periodStartDate | integer | Instruction period start timestamp in milliseconds |
| instructions.periodStartDateValue | integer | Duplicate of instructions.periodStartDate for backward compatibility |
| instructions.periodStartDateInSeconds | integer | Instruction period start timestamp in seconds |
| instructions.periodStartDateDisplay | string | Formatted instruction period start date |
| instructions.periodEndDate | integer | Instruction period end timestamp in milliseconds |
| instructions.periodEndDateValue | integer | Duplicate of instructions.periodEndDate for backward compatibility |
| instructions.periodEndDateInSeconds | integer | Instruction period end timestamp in seconds |
| instructions.periodEndDateDisplay | string | Formatted instruction period end date |
| instructions.intervalUnit | string | Time unit for the billing interval |
| instructions.intervalLength | integer | Number of units per instruction interval |
| instructions.discountPercent | number | Percentage discount applied during the period |
| instructions.discountPercentValue | number | Raw discount percentage value |
| instructions.discountPercentDisplay | string | Formatted discount percentage |
| instructions.discountTotal | number | Total discount applied during the period |
| instructions.discountTotalDisplay | string | Formatted total discount |
| instructions.discountTotalInPayoutCurrency | number | Total discount in your disbursement currency |
| instructions.discountTotalInPayoutCurrencyDisplay | string | Formatted discount total in your disbursement currency |
| instructions.unitDiscount | number | Unit-level discount amount |
| instructions.unitDiscountDisplay | string | Formatted unit-level discount |
| instructions.unitDiscountInPayoutCurrency | number | Unit-level discount in your disbursement currency |
| instructions.unitDiscountInPayoutCurrencyDisplay | string | Formatted unit-level discount in your disbursement currency |
| instructions.price | number | Base price for the instruction period before discounts |
| instructions.priceDisplay | string | Formatted base price for the period |
| instructions.priceInPayoutCurrency | number | Base price in your disbursement currency |
| instructions.priceInPayoutCurrencyDisplay | string | Formatted base price in your disbursement currency |
| instructions.priceTotal | number | Total price after discounts before tax |
| instructions.priceTotalDisplay | string | Formatted total price after discounts |
| instructions.priceTotalInPayoutCurrency | number | Total price after discounts in your disbursement currency |
| instructions.priceTotalInPayoutCurrencyDisplay | string | Formatted total price after discounts in your disbursement currency |
| instructions.unitPrice | number | Price per unit after discounts |
| instructions.unitPriceDisplay | string | Formatted price per unit after discounts |
| instructions.unitPriceInPayoutCurrency | number | Unit price after discounts in your disbursement currency |
| instructions.unitPriceInPayoutCurrencyDisplay | string | Formatted unit price after discounts in your disbursement currency |
| instructions.total | number | Total charge for the instruction period before tax |
| instructions.totalDisplay | string | Formatted total charge for the period |
| instructions.totalInPayoutCurrency | number | Total charge in your disbursement currency |
| instructions.totalInPayoutCurrencyDisplay | string | Formatted total charge in your disbursement currency |
| instructions.totalWithTaxes | number | Total charge including taxes |
| instructions.totalWithTaxesDisplay | string | Formatted total including taxes |
| instructions.totalWithTaxesInPayoutCurrency | number | Total including taxes in your disbursement currency |
| instructions.totalWithTaxesInPayoutCurrencyDisplay | string | Formatted total including taxes in your disbursement currency |