Skip to main content

Prerequisites

The connector should already be set up, with a Connector Profile and a Linked Account. See Getting Started on the FastSpring connector page.

Retrieve the StackOne Native Webhook URL

The Native Webhook URL is generated once a FastSpring account has been linked in StackOne. Each linked account has its own URL.

  • Open the linked account in StackOne.
  • Copy the value from Native Webhook URL.

Create a FastSpring webhook

Add a webhook for StackOne in the FastSpring app and point a URL endpoint at the Native Webhook URL so FastSpring posts events to StackOne.

1

Open the Webhooks page

Sign in to your FastSpring account.

  • In the left sidebar, click Developer Tools, then select Webhooks.
The FastSpring sidebar with Developer Tools expanded and Webhooks highlighted
2

Open the Configuration tab

The Webhooks page opens on the Log tab. Click Configuration to manage webhooks.

The Webhooks page with the Configuration tab highlighted
3

Add a webhook

Click Add Webhook in the top right corner.

  • Any webhooks that already exist in the store are listed on this tab. Leave them unchanged.
The Configuration tab with the Add Webhook button highlighted
4

Fill in the webhook details

In the Add Webhook dialog, complete the form and click Add:

  • Title — enter a name for the webhook (for example, StackOne Integration).
  • Get webhooks from: — choose Live and Test Orders, Live Orders or Test Orders, depending on which orders StackOne should receive events for.
  • Select Enable webhook expansion so events carry full nested objects (account, product, subscription) instead of bare IDs.
The Add Webhook dialog with the Title, Get webhooks from and Enable webhook expansion fields highlighted
5

Add a URL endpoint

The new webhook appears on the Configuration tab. On that webhook, click Add URL Endpoint.

The new StackOne Integration webhook with its Add URL Endpoint button highlighted
6

Paste the Native Webhook URL

In the Add Webhook URL Endpoint dialog:

  • URL — paste the Native Webhook URL you copied from StackOne.
  • HMAC SHA256 Secret is optional. StackOne does not need it, so it can be left empty.
The Add Webhook URL Endpoint dialog with the URL and HMAC SHA256 Secret fields highlighted
7

Select the events

Under Events, tick every event you want StackOne to receive. The events StackOne supports are listed in Available webhook events below.

The Events list in the Add Webhook URL Endpoint dialog with events ticked
8

Save the endpoint

Scroll to the bottom of the dialog and click Add.

The bottom of the Add Webhook URL Endpoint dialog with the Add button highlighted
9

Confirm the endpoint

The endpoint is listed on the StackOne Integration webhook with a tag for every selected event. FastSpring starts sending those events to StackOne straight away.

  • Use Edit Endpoint to change the selected events later.
  • Deliveries are listed on the Log tab of the Webhooks page.
The saved URL endpoint on the StackOne Integration webhook with its event tags, the URL hidden

Available webhook events

The following FastSpring events can be enabled. FastSpring only delivers the events ticked on the URL endpoint, and StackOne only forwards the events enabled for this connector.

1

Order and payment events

Events related to orders, payments, fulfillment, chargebacks and PayPal disputes.

  • Order Completed (order.completed) — Fired when an order is paid and all of its fulfillments have completed (not fired for failed payments, pending approvals or subscription rebills)
  • Order Failed (order.failed) — Fired when a payment attempt at checkout is declined
  • Order Canceled (order.canceled) — Fired when an order is canceled by the merchant or the customer
  • Order Approval Pending (order.approval.pending) — Fired when an order needs manual or purchase-order approval before it can complete
  • Order Payment Pending (order.payment.pending) — Fired when an order is placed with a delayed payment method such as wire transfer or purchase order
  • Chargeback Created (chargeback.created) — Fired when the buyer’s bank or card issuer opens a chargeback against an order
  • Chargeback Won (chargeback.won) — Fired when a chargeback is resolved in the merchant’s favor
  • PayPal Dispute Action Required (paypal_dispute.action_required) — Fired when a PayPal dispute opened by the buyer needs a response
  • PayPal Dispute Accepted (paypal_dispute.accepted) — Fired when a PayPal dispute is accepted and the buyer is refunded
  • PayPal Dispute Lost (paypal_dispute.lost) — Fired when a PayPal dispute is decided in the buyer’s favor
  • Fulfillment Failed (fulfillment.failed) — Fired when one or more fulfillment steps fail after a successful payment
2

Return and payout events

Events related to returns, refunds and payouts.

  • Payout Entry Created (payoutEntry.created) — Fired when a payout entry is generated for a completed order or for a return
  • Return Created (return.created) — Fired when a return or refund is issued on an order, manually or automatically
3

Subscription events

Events related to individual subscriptions.

  • Subscription Activated (subscription.activated) — Fired when a new subscription is created and activated
  • Subscription Charge Completed (subscription.charge.completed) — Fired when a subscription rebill or proration charge succeeds
  • Subscription Charge Failed (subscription.charge.failed) — Fired when a subscription rebill charge fails, for example because the card expired
  • Subscription Updated (subscription.updated) — Fired when a subscription, its account or its payment method is edited
  • Subscription Canceled (subscription.canceled) — Fired when a subscription is canceled and set to deactivate at the end of the current period
  • Subscription Uncanceled (subscription.uncanceled) — Fired when a scheduled subscription cancellation is removed before the next rebill date
  • Subscription Deactivated (subscription.deactivated) — Fired when a subscription deactivates, either immediately or at the end of the billing period after a cancellation
  • Subscription Payment Overdue (subscription.payment.overdue) — Fired when a subscription payment becomes overdue according to the configured grace-period schedule
  • Subscription Payment Reminder (subscription.payment.reminder) — Fired when a rebill payment reminder is due according to the configured reminder schedule
  • Subscription Trial Reminder (subscription.trial.reminder) — Fired when a trial-ending reminder is due according to the configured schedule (never fires if no trial reminder is configured)
  • Subscription Paused (subscription.paused) — Fired when a subscription enters the paused state on its next scheduled rebill date
  • Subscription Resumed (subscription.resumed) — Fired when a paused subscription is resumed manually or reactivates on its configured resume date
4

Co-term subscription group events

Events related to co-term subscription groups, which bill several subscriptions together.

  • Subscription Group Created (subscription.group.created) — Fired when a co-term subscription group is created
  • Subscription Group Prorated (subscription.group.prorated) — Fired when a co-term group’s billing is adjusted through proration, for example after a plan change or a new member
  • Subscription Group Updated (subscription.group.updated) — Fired when a co-term subscription group is modified
  • Subscription Group Payment Charge Completed (subscription.group.charge.completed) — Fired when a payment charge for a co-term group succeeds
  • Subscription Group Payment Charge Failed (subscription.group.payment.charge.failed) — Fired when a payment charge for a co-term group fails
  • Subscription Group Payment Overdue (subscription.group.payment.overdue) — Fired when a co-term group’s payment becomes overdue
  • Subscription Group Payment Reminder (subscription.group.payment.reminder) — Fired when a renewal payment reminder is due for a co-term group
  • Subscription Group Deactivated (subscription.group.deactivated) — Fired when a co-term subscription group is deactivated
5

Account events

Events related to buyer accounts.

  • Account Created (account.created) — Fired when a new buyer account is created, typically when an order is placed with an email address FastSpring has not seen before
  • Account Updated (account.updated) — Fired when a buyer account’s contact, address or preference details change, from a manual edit or a new order
6

Quote events

Events related to quotes.

  • Quote Created (quote.created) — Fired when a new quote is created
  • Quote Updated (quote.updated) — Fired when a quote’s status or content changes in the app or through the API
7

Mailing list events

Events related to mailing list entries captured at checkout.

  • Mailing List Entry Updated (mailingListEntry.updated) — Fired when an email address is added to the mailing list or an entry changes status (subscribed, unsubscribed, abandoned)
  • Mailing List Entry Removed (mailingListEntry.removed) — Fired when an email address is removed from the mailing list, for example when the customer unsubscribes
  • Mailing List Entry Abandoned (mailingListEntry.abandoned) — Fired when a customer entered an email address at checkout but did not complete the purchase within 30 minutes
8

Invoice events

Events related to invoice-based purchases.

  • Invoice Reminder Email (invoice.reminder.email) — Fired when a reminder email is sent ahead of the payment due date of an invoice-based purchase

Delivery format

Details of how FastSpring delivers events to StackOne.

1

Batched payloads

Each request body is {"events": [...]} — a list of events. FastSpring may batch several events into one request. StackOne splits the batch and routes each event to its own handler.

2

Retries

FastSpring retries a delivery that does not receive a 2xx response. Automatic retries keep the same event ID, while events resent manually from the Log tab get a new ID.

3

Webhook expansion

With Enable webhook expansion selected, nested objects such as the account, product or subscription are included in full. Without it they arrive as IDs. StackOne handles both.

Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.