Kartra · AsyncAPI Specification
Kartra Webhooks
Version
View Spec
View on GitHub
CompanyMarketing AutomationEmail MarketingCRMContactsE-CommercePaymentsSubscriptionsMembershipLanding PagesWebhooksSaaSAsyncAPIWebhooksEvents
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.