Skip to main content

Events & Webhooks

At Freemius, we offer a robust webhooks mechanism that allows Makers to stay in sync with important platform activities. Webhooks enable real-time communication between Freemius and your backend systems whenever key actions occur—such as a new sale, a license deactivation, or a refund.

This system empowers you to automate workflows, sync data, trigger notifications, and more.

What is an Event?

An event is a specific, predefined action or change that takes place within the Freemius platform.

Events reflect meaningful occurrences in your product’s lifecycle—like a user completing a purchase, a subscription being canceled, or a license being activated. Each event is uniquely named (e.g., subscription.canceled, license.activated) and carries structured metadata relevant to that action.

Events are the triggers that initiate webhook callouts. Whenever a monitored event occurs, Freemius generates a corresponding callout to your configured endpoint.

What is a Webhook?

A webhook is a URL endpoint that you configure to receive HTTP POST requests from Freemius when certain events occur. webhoo When an event is triggered, Freemius performs a webhook callout—sending a signed payload with all relevant event data to your webhook endpoint. This enables your system to programmatically react to the event, such as updating a database, triggering an internal workflow, or notifying your team.

In short:

  • The webhook is the URL endpoint you provide.
  • The webhook callout is the actual HTTP request Freemius makes to that endpoint.

How to create a Webhook?

  1. Go to the Integrations section then choose Custom Webhooks
  2. Click the Add Webhook button.
  3. A popup with a form will appear. Add your custom URL that will receive the event callback.
  4. Select whether to receive all event types or specific ones on the Callback URL.
  5. Choose to immediately make the webhook active or deactivate for a future time.
tip

The Webhook can be edited later to change the url and other options. See all the available webhooks

How to Test Event's Payload?

If you'd like to understand the payload of a specified event.type follow these steps: 1. Head to the Events Log section in the dashboard. 2. Filter the events based on that event.type. 3. Copy the ID of the 1st event shown in the filtered view. 4. Leverage the API to fetch the event's data. 5. The result's schema from the API is identical to the payload's schema you'll get by the webhook once event.type will be processed.

Types of Events

This is a list of all the types of events we currently send. We may add more at any time, so you shouldn't rely on only these types existing in your code.

You'll notice that these events follow a pattern: resource.event. Our goal is to design a consistent system that makes things easier to anticipate and code against.

NOTE: Events that occur on "sub" resources like payment.dispute.created do not trigger the parent's update event.

Affiliate Program

affiliate.approved

Occurs whenever an affiliate is approved.

affiliate.blocked

Occurs whenever an affiliate is blocked.

affiliate.created

Occurs whenever an affiliate is created.

affiliate.deleted

Occurs whenever an affiliate is deleted.

affiliate.payout.pending

Occurs once per month when our system calculates affiliate payouts. Triggered only for affiliates eligible for a payout after crossing the $100 threshold.

affiliate.paypal.updated

Occurs whenever there’s an update of an affiliate's PayPal details.

affiliate.rejected

Occurs whenever an affiliate is rejected.

affiliate.suspended

Occurs whenever an affiliate is suspended.

affiliate.unapproved

Occurs whenever an affiliate state is changed from approved to pending.

affiliate.updated

Occurs whenever there’s an update of an affiliate's details.

Card

card.created

Occurs whenever a new credit or debit card is added to a user’s account.

card.updated

Occurs whenever a user’s credit or debit card details have been updated.

Cart

cart.abandoned

Occurs whenever a cart session has been abandoned.

cart.completed

Occurs whenever a ‘sale’ has been completed, but the payment hasn’t necessarily been completed yet.

cart.created

Occurs whenever a cart session has been initiated.

cart.recovered

Occurs whenever an abandoned cart session has been recovered and converted into a ‘sale’.

cart.recovery.deactivated

Occurs when the cart recovery feature has been deactivated in the Developer Dashboard.

cart.recovery.email_1_sent

Occurs when the first cart recovery email has been sent.

cart.recovery.email_2_sent

Occurs when the second cart recovery email has been sent.

cart.recovery.email_3_sent

Occurs when the third (and final) cart recovery email has been sent.

cart.recovery.reactivated

Occurs when the cart recovery feature has been reactivated in the Developer Dashboard.

cart.recovery.subscribed

Occurs when the prospect re-subscribes to the cart abandonment recovery campaign.

cart.recovery.unsubscribed

Occurs when the prospect unsubscribes from the cart abandonment recovery campaign.

cart.updated

Occurs when the cart contents have been updated.

Coupons & Discounts

coupon.created

Occurs whenever a coupon is created.

coupon.deleted

Occurs whenever a coupon is deleted.

coupon.updated

Occurs whenever a coupon is updated.

Buyer Email Tracking

email.clicked

Occurs when a link is clicked by a user. Email link click tracking is only included in cart abandonment recovery and trial-related emails.

email.opened

Occurs when an email has been opened by a user. Email open tracking is only included in cart abandonment recovery, trial-related, and subscription renewal reminder emails.

Installation (Downloadable Software)

In the context of downloadable software (like plugins or desktop apps), an installation represents a specific copy of your product that has been installed and is running on a particular device or site. The following webhook events let you track changes to each installation—covering its state, version, plan, platform details, and more.

install.activated

Occurs whenever a user is opted-in, and after reactivation of a product.

install.deactivated

Occurs whenever a product's installation is being deactivated.

install.deleted

Occurs whenever a product is being uninstalled.

install.connected

Occurs whenever a user opts in for sharing basic device/website info after previously opting out from it.

install.disconnected

Occurs whenever a user opts out from sharing basic device/website info after previously sharing it.

install.installed

Occurs whenever a product is being installed (triggered before install.activated).

install.language.updated

Occurs whenever an installation language is updated.

install.plan.changed

Occurs whenever an installation plan is changed.

install.plan.downgraded

Occurs whenever an installation plan is downgraded to the default plan.

install.platform.version.updated

Occurs whenever an installation platform version is updated (e.g., WP version; iOS version).

install.premium.activated

Occurs whenever the paid product version is activated.

install.premium.deactivated

Occurs whenever the paid product version is deactivated.

install.programming_language.version.updated

Occurs whenever an installation PHP version is updated.

install.sdk.version.updated

Occurs whenever a product installation is updated with a new Freemius SDK version.

install.title.updated

Occurs whenever an installation’s device/site title is updated.

install.trial.cancelled

Occurs when a trial is cancelled.

install.trial.expired

Occurs when a trial is expired.

install.trial_expiring_notice.sent

Occurs when an email has been sent to the user notifying them the trial period is about to end.

install.trial.extended

Occurs whenever a trial is manually extended.

install.trial.plan.updated

Occurs whenever a trial plan is updated.

install.trial.started

Occurs when a free trial is started on an existing product install.

install.uninstalled

Occurs whenever the product is uninstalled.

install.updated

Occurs whenever an installation data is updated (in addition to specific install update events).

install.url.updated

Occurs whenever an installation’s home URL is updated.

install.version.downgrade

Occurs whenever the product is downgraded to a lower version (not related to the plan).

install.version.upgraded

Occurs whenever the product is upgrade to a newer version (not related to the plan).

Licensing

license.activated

Occurs whenever a license is activated (also triggered automatically after a successful plan upgrade).

license.cancelled

Occurs when a license is cancelled.

license.created

Occurs whenever a license is created.

license.deactivated

Occurs whenever a license is deactivated.

license.deleted

Occurs when a license has been deleted in the Developer Dashboard.

license.expired

Occurs when a license expires.

license.expired_notice.sent

Occurs when a license expired email notice has been sent to the user.

license.extended

Occurs whenever a license is extended by the developer from the dashboard.

license.ownership.changed

Occurs whenever a license ownership is changed by the developer from the dashboard.

license.quota.changed

Occurs whenever a license quota is changed by the developer from the dashboard.

license.renewal_reminder.sent

Occurs when a license renewal reminder email has been sent to the user.

license.shortened

Occurs when a license has been shortened in the User/Developer Dashboard.

license.trial_expiring_notice.sent

Occurs when a courtesy trial expiration reminder email has been sent to the user.

license.updated

Occurs whenever a license is updated (in addition to specific license update events).

Payment

payment.created

Occurs whenever a successful payment is created.

payment.refund

Occurs whenever a payment refund is processed.

payment.dispute.created

Occurs whenever we notified about a payment disputed by a customer.

payment.dispute.closed

Occurs whenever a payment dispute is closed by refunding the disputed payment.

payment.dispute.lost

Occurs whenever a payment dispute is closed in favor of the customer.

payment.dispute.won

Occurs whenever a payment dispute is closed in your/seller’s favor.

Product Team

member.created

Occurs whenever a developer is added as a team member.

member.deleted

Occurs whenever a member is removed from a team.

member.updated

Occurs whenever a team member role is updated.

Plans, Pricing and Features

plan.created

Occurs whenever a plan is created.

plan.deleted

Occurs whenever a plan is deleted.

plan.lifetime.purchase

Occurs whenever a user purchases a lifetime package (doesn’t matter which plan).

plan.updated

Occurs whenever a plan details are updated.

pricing.created

Occurs whenever a new pricing is added to a plan.

pricing.deleted

Occurs whenever one of the plan pricing is deleted.

pricing.updated

Occurs whenever a plan pricing is updated.

Reviews

review.created

Occurs when a new review has been created.

review.deleted

Occurs when a review has been deleted in the Developer Dashboard.

review.requested

Occurs when a new review request email has been sent to the user.

review.updated

Occurs when a new review has been updated in the Developer Dashboard.

Subscription

subscription.cancelled

Occurs whenever a subscription is cancelled.

subscription.created

Occurs whenever a subscription is created.

subscription.renewal_reminder.sent

Occurs whenever an annual renewal reminder email is sent (30 days before the automatic renewal).

subscription.renewal_reminder.opened

Occurs whenever an annual renewal reminder email is opened.

subscription.renewal.failed

Occurs whenever a renewal payment processing is failed.

subscription.renewal.failed.last

Occurs when the latest subscription renewal attempt has failed.

subscription.renewal.failed_email.sent

Occurs whenever a failure renewal processing email is sent to the buyer.

subscription.renewal.retry

Occurs whenever a renewal payment retry is processed.

subscription.renewals.discounted

Occurs whenever a special subscription cancellation promo is applied.

Store

store.created

Occurs when a new store has been created (e.g. when a new Freemius account has been created).

store.dashboard_url.updated

Occurs when the store’s dashboard URL is updated.

store.plugin.added

Occurs when a product is added to a store.

store.plugin.removed

Occurs when a product is removed from a store.

store.url.updated

Occurs when a store’s URL is updated.

User

user.beta_program.opted_in

Occurs when a user has opted into a product's beta program.

user.beta_program.opted_out

Occurs when a user has opted out of a product's beta program.

user.billing.updated

Occurs whenever a customer billing information is updated (e.g. address, VAT ID, company name).

user.billing.tax_id.updated

Occurs whenever the tax ID associated with the user’s billing is changed.

user.card.created

Occurs whenever a new card is added to a user’s account.

user.created

Occurs whenever a new user is created.

user.email.changed

Occurs whenever a user update their email address.

user.email.verified

Occurs when a user email is verified (usually via email confirmation).

user.email_status.bounced

Occurs when a transactional email sent to a user bounces, which also changes the user’s email_status property to 'bounced'.

user.email_status.delivered

Occurs when a transactional email sent to a user is successfully delivered and only if the user’s previous deliverability state (aka the email_status property) was not empty before.

user.email_status.dropped

Occurs when a transactional email sent to a user is dropped, which also changes the user’s email_status property to 'dropped'.

user.marketing.opted_in

Occurs when a user has opted to receive marketing material (emails).

user.marketing.opted_out

Occurs when a user has opted out of a receiving marketing material (emails).

user.marketing.reset

Occurs when a user’s marketing status has been reset.

user.name.changed

Occurs whenever a user update their name.

user.support.contacted

Occurs when a user submits a support ticket via the contact form in the Customer Portal.

user.trial.started

Occurs when a user registers for a trial.

Webhook

webhook.created

Occurs whenever a webhook is created.

webhook.deleted

Occurs whenever a webhook is deleted.

webhook.updated

Occurs whenever a webhook is updated.

WordPress

addon.free.downloaded

Occurs whenever a free version of an add-on is downloaded.

addon.premium.downloaded

Occurs whenever a premium version of an add-on is downloaded.

install.extensions.opt_in

Occurs whenever a user opts in for sharing a website’s plugins & themes list after previously opting out from it.

install.extensions.opt_out

Occurs whenever a user opt-out from sharing a website’s plugins & themes list after previously sharing it.

install.ownership.candidate.confirmed

Occurs whenever an account ownership transfer candidate confirms the transfer.

install.ownership.completed

Occurs whenever an account ownership transfer is complete.

install.ownership.initiated

Occurs whenever an account ownership transfer is initiated.

install.ownership.owner.confirmed

Occurs whenever an account ownership transfer is confirmed by the current installation account owner.

install.site.opt_in

Occurs whenever a user opts in for sharing basic website after previously opting out from it.

install.site.opt_out

Occurs whenever a user opts out from sharing basic website after previously sharing it.

install.user.opt_in

Occurs whenever a user opts in for sharing their basic profile info after previously opting out from it.

install.user.opt_out

Occurs whenever a user opts out from sharing their basic profile info after previously sharing it.

license.site.blacklisted

Occurs when a site has been blacklisted in the Customer Portal.

license.blacklisted_site.deleted

Occurs when a blacklisted site has been removed in the Customer Portal.

license.site.whitelisted

Occurs when a site has been whitelisted in the Customer Portal.

license.whitelisted_site.deleted

Occurs when a whitelisted site has been removed in the Customer Portal.

plugin.free.downloaded

Occurs whenever a free product version is downloaded.

plugin.premium.downloaded

Occurs whenever a paid product version is downloaded.

plugin.version.deleted

Occurs whenever a deployed version is deleted.

plugin.version.deployed

Occurs whenever a new product version is deployed to Freemius.

plugin.version.released

Occurs whenever a version is set as released.

plugin.version.beta.released

Occurs whenever a version is released as beta.

plugin.version.release.suspended

Occurs whenever a deployment release is suspended.

plugin.version.updated

Occurs whenever an existing version is re-deployed to Freemius.

pricing.visit

Occurs when a user has visited the pricing table via the WordPress admin or popup checkout modal.