Kartra · AsyncAPI Specification
Kartra Webhooks
Version
View Spec
View on GitHub
CompanyMarketing AutomationEmail MarketingCRMContactsE-CommercePaymentsSubscriptionMembershipLanding PagesWebhookSoftware-as-a-ServiceAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-12'
method: searched
source: https://support.kartra.com/en/collections/19655232-developers
spec_type: none
spec_note: >-
Kartra publishes NO AsyncAPI document. It does publish a complete, per-event
payload reference for two distinct callback surfaces, captured below as a
webhook catalogue. Nothing here is generated: every event name, action value
and payload key is transcribed from Kartra's own documentation.
surfaces:
- name: Outbound API
kind: webhook
direction: kartra-to-you
transport: HTTP POST, raw body, JSON
configuration: Account UI, Integrations > My API > Outbound API — one or more target URLs, each subscribed to one or more events
docs: https://support.kartra.com/en/articles/15369054-activating-the-outbound-api
envelope:
lead: Full lead profile object (identical shape across every event) including custom_fields[] and the four gdpr_* consent fields
action: String naming the event
action_details: Event-specific object, shape varies per event
- name: IPN (Instant Payment Notification)
kind: webhook
direction: kartra-to-you
transport: HTTP POST, form fields (not JSON)
configuration: Per-product IPN URL; the docs recommend pointing it at a .php file on an https domain
docs: https://support.kartra.com/en/articles/15369003-the-ipn-system
envelope_note: >-
Flat POST variables, not a nested object. "Any variable with an empty value
will be posted as 'N/A.'" — consumers must string-compare against the
literal "N/A" rather than testing for null or a missing key.
event_count: 30
outbound_api_events:
- action: "jv_signup"
title: "If a JV signs up for a product"
action_details_fields: [product, product_id, product_name, official_product_name]
source: https://support.kartra.com/en/articles/15391959-if-a-jv-signs-up-for-a-product
- action: "cancel_subscription"
title: "If a subscription is cancelled"
action_details_fields: [transaction_details, transaction_id, lead_first_name, lead_last_name, lead_email, lead_username, lead_id, product_name, product_id, product_price_point, transaction_date, transaction_type]
source: https://support.kartra.com/en/articles/15391960-if-a-subscription-is-cancelled
- action: null
title: "If a transaction is refunded"
action_details_fields: [transaction_details, transaction_id, lead_first_name, lead_last_name, lead_email, lead_username, lead_id, product_name, product_id, product_price_point, transaction_quantity, transaction_full_amount]
source: https://support.kartra.com/en/articles/15391961-if-a-transaction-is-refunded
- action: "affiliate_signup"
title: "If an affilate signs up for a product"
action_details_fields: [product, product_id, product_name, official_product_name]
source: https://support.kartra.com/en/articles/15391963-if-an-affilate-signs-up-for-a-product
- action: "buy_product"
title: "If lead buys a product"
action_details_fields: [transaction_details, transaction_id, lead_first_name, lead_last_name, lead_email, lead_username, lead_id, product_name, product_id, product_price_point, transaction_quantity, transaction_full_amount]
source: https://support.kartra.com/en/articles/15391964-if-lead-buys-a-product
- action: "calendar_cancel"
title: "If lead cancels a calendar"
action_details_fields: [calendar, calendar_id, calendar_name, class_id, class_name, hosts, host_first_name, host_last_name, host_email_address, vendor_timezone, calendar_subscription_id, events]
source: https://support.kartra.com/en/articles/15391965-if-lead-cancels-a-calendar
- action: "click_page_split_test_link"
title: "If lead clicks on a page split test link"
action_details_fields: [page_split_test_link, page_split_test_link_id, page_split_test_link_name]
source: https://support.kartra.com/en/articles/15391966-if-lead-clicks-on-a-page-split-test-link
- action: "calendar_complete"
title: "If lead completes a calendar"
action_details_fields: [calendar, calendar_id, calendar_name, class_id, class_name, hosts, host_first_name, host_last_name, host_email_address, vendor_timezone, calendar_subscription_id, events]
source: https://support.kartra.com/en/articles/15391967-if-lead-completes-a-calendar
- action: "sequence_completion"
title: "If lead completes a sequence"
action_details_fields: [sequence, sequence_id, sequence_name]
source: https://support.kartra.com/en/articles/15391968-if-lead-completes-a-sequence
- action: "survey_complete"
title: "If lead completes a survey"
action_details_fields: [survey, survey_id, survey_name, survey_type, survey_score, survey_completion_time, questions, question_id, question_title, question_correct, answers, option_id]
source: https://support.kartra.com/en/articles/15391969-if-lead-completes-a-survey
- action: "video_complete"
title: "If lead completes video"
action_details_fields: [video, video_id, video_name]
source: https://support.kartra.com/en/articles/15391971-if-lead-completes-video
- action: "filled_form"
title: "If lead fills in a form"
action_details_fields: [tag, form_id, form_name]
source: https://support.kartra.com/en/articles/15391972-if-lead-fills-in-a-form
- action: "assign_tag"
title: "If lead is assigned a tag"
action_details_fields: [tag, tag_id, tag_name]
source: https://support.kartra.com/en/articles/15391973-if-lead-is-assigned-a-tag
- action: "membership_granted"
title: "If lead is granted access to membership (Kartra or external)"
action_details_fields: [membership, membership_id, membership_name, level_id, level_name]
source: https://support.kartra.com/en/articles/15391974-if-lead-is-granted-access-to-membership-kartra-or-external
- action: "membership_revoked"
title: "If lead is revoked access to membership (Kartra or external)"
action_details_fields: [membership, membership_id, membership_name, level_id, level_name]
source: https://support.kartra.com/en/articles/15391975-if-lead-is-revoked-access-to-membership-kartra-or-external
- action: "sequence_subscription"
title: "If lead is subscribed to a sequence"
action_details_fields: [sequence, sequence_id, sequence_name]
source: https://support.kartra.com/en/articles/15391976-if-lead-is-subscribed-to-a-sequence
- action: "unassign_tag"
title: "If lead is unassigned a tag"
action_details_fields: [tag, tag_id, tag_name]
source: https://support.kartra.com/en/articles/15391977-if-lead-is-unassigned-a-tag
- action: "sequence_unsubscription"
title: "If lead is unsubscribed from a sequence"
action_details_fields: [sequence, sequence_id, sequence_name]
source: https://support.kartra.com/en/articles/15391978-if-lead-is-unsubscribed-from-a-sequence
- action: "video_play"
title: "If lead plays video"
action_details_fields: [video, video_id, video_name]
source: https://support.kartra.com/en/articles/15391979-if-lead-plays-video
- action: "reaches_score"
title: "If lead reaches score for the first time"
action_details_fields: [points]
source: https://support.kartra.com/en/articles/15391980-if-lead-reaches-score-for-the-first-time
- action: "calendar_subscribe"
title: "If lead subscribes to a calendar"
action_details_fields: [calendar, calendar_id, calendar_name, class_id, class_name, hosts, host_first_name, host_last_name, host_email_address, vendor_timezone, calendar_subscription_id, events]
source: https://support.kartra.com/en/articles/15391981-if-lead-subscribes-to-a-calendar
- action: "list_subscription"
title: "If lead subscribes to a list"
action_details_fields: [list, list_id, list_name]
source: https://support.kartra.com/en/articles/15391982-if-lead-subscribes-to-a-list
- action: "list_unsubscription"
title: "If lead unsubscribes from a list"
action_details_fields: [list, list_id, list_name]
source: https://support.kartra.com/en/articles/15391983-if-lead-unsubscribes-from-a-list
- action: "kartra_page_visit"
title: "If lead visits a Kartra page"
action_details_fields: [kartra_page, kartra_page_id, kartra_page_name]
source: https://support.kartra.com/en/articles/15391984-if-lead-visits-a-kartra-page
ipn_events:
- id: one-time-payment
title: Sale, refund or chargeback for one-time payments without an initial payment (trial) enabled
discriminator: transaction_type
values: [sale, refund, partial_refund]
source: https://support.kartra.com/en/articles/15369004-sale-refund-or-chargeback-for-one-time-payments-without-an-initial-payment-aka-trial-enabled
- id: trial-or-subscription-sale
title: Sale for one-time payments with an initial payment (trial), or sale for a subscription
source: https://support.kartra.com/en/articles/15369005-sale-for-one-time-payments-with-an-initial-payment-aka-trial-or-sale-for-a-subscription
- id: rebill
title: Rebill for a subscription, or a follow up after a one-time payment initial payment (trial)
source: https://support.kartra.com/en/articles/15369006-rebill-for-a-subscription-or-a-follow-up-after-a-one-time-payment-initial-payment-trial
- id: recurring-refund-or-failure
title: Refund, failed rebill, or chargeback for a recurring subscription payment, or for a one time payment with a trial
source: https://support.kartra.com/en/articles/15369007-refund-failed-rebill-or-chargeback-for-a-recurring-subscription-payment-or-for-a-one-time-payment-with-a-trial
- id: subscription-cancellation
title: Cancelation of a recurring payment subscription
source: https://support.kartra.com/en/articles/15369008-cancelation-of-a-recurring-payment-subscription
- id: ipn-system
title: The IPN system (variable reference and configuration notes)
source: https://support.kartra.com/en/articles/15369003-the-ipn-system
ipn_core_variables:
transaction: [transaction_id, transaction_full_amount, transaction_base_amount, transaction_discount, transaction_shipping, transaction_tax, transaction_date, transaction_type, transaction_parent_id, transaction_affiliate, transaction_jv, transaction_quantity, transaction_subscription_id, transaction_internal_subscription_id, transaction_subscription_pay_number, transaction_last_4_card_digits, original_id]
product: [product_name, product_id, product_price_point, trial, trial_amount, trial_period, payments_left]
buyer: [lead_id, lead_first_name, lead_last_name, lead_email, lead_username, lead_phone_country_code, lead_phone_number, lead_address, lead_city, lead_zip, lead_state, lead_country, lead_country_code_2]
refund_note: >-
On refund or partial_refund the system additionally sends
transaction_parent_id, the original sale's order id, so the consumer can
match the reversal to the original transaction.
security:
signing: none
shared_secret: none
replay_protection: none
source_ip_allowlist: not published
note: >-
Kartra documents no HMAC signature, no timestamp header and no shared secret
for either the Outbound API or IPN. A receiver cannot cryptographically
verify that a callback came from Kartra. The documented consumption pattern
is a bare file_get_contents("php://input") with no verification step. This
is the most significant security gap on Kartra's event surface.
delivery:
retries: not documented
ordering: not documented
at_least_once: not documented
gaps:
- No AsyncAPI or JSON Schema for any event payload.
- No signature verification on either callback surface.
- No delivery/retry semantics published, so consumers cannot reason about duplicates or gaps.
- The two surfaces overlap (buy_product on the Outbound API vs the IPN sale) with different encodings — JSON body vs form POST — and different field naming.
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/kartra-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.