Refersion · AsyncAPI Specification
Refersion Webhooks
Version
View Spec
View on GitHub
Affiliate MarketingInfluencer MarketingE-CommerceReferral TrackingCommission ManagementShopifyAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-13'
method: searched
source: >-
https://www.refersion.dev/reference/webhooks-for-merchants,
https://www.refersion.dev/reference/webhooks-for-marketplace-affiliates,
https://www.refersion.dev/reference/webhook-tracking
name: Refersion Webhooks
description: >-
Refersion's outbound event surface. Refersion publishes NO AsyncAPI, CloudEvents or event-catalog
document — this is a faithful capture of the webhook catalog as documented on the developer
portal, so the artifact is Webhooks and NOT AsyncAPI. Two distinct audiences receive different
topic sets: merchants (nine topics) and marketplace affiliates (four topics). A third, INBOUND
webhook exists for server-side order reporting and is recorded separately below because it flows
the other direction.
transport: https
format: application/json
configuration:
merchant:
ui: Account > Settings > Webhooks
url: https://www.refersion.com/base/settings/integrations/webhooks
note: >-
Multiple webhook endpoints may be configured, each subscribed to a chosen topic set or to
"All Topics".
marketplace_affiliate:
ui: '"Your Name" > Edit Your Profile > Webhooks'
url: https://marketplace.refersion.com/profile
note: >-
An affiliate promoting for multiple brands receives one webhook per brand per event — five
brands means five NEW_CONVERSION deliveries for the same topic.
delivery:
method: POST
headers:
- name: Refersion-Topic
description: The event topic, upper snake case. Example values seen in the docs — AFFILIATE_DETAILS_CHANGE, APPROVED_CONVERSION.
- name: Refersion-Signature
description: >-
Signature used to validate that the delivery came from Refersion. The docs link a "Webhook
Validation" page but the link target is empty (href="#"), so the signing algorithm, the
signed payload construction and the key material are NOT publicly documented.
verification_documented: false
- name: Content-Type
description: application/json
- name: Content-Length
retries: undocumented
ordering: undocumented
ip_allowlist: undocumented
access:
note: >-
Webhooks are a paid-tier capability. The pricing feature matrix lists "Webhooks" alongside
"Access to developer APIs" in the Platform section; API access is stated as included from the
Growth tier.
source: https://www.refersion.com/pricing/
topics:
- name: New Conversion
audience:
- merchant
- marketplace-affiliate
payload: conversion
description: A new conversion has been recorded against an affiliate.
- name: Conversion Approved
audience:
- merchant
- marketplace-affiliate
payload: conversion
header_example: APPROVED_CONVERSION
description: A pending conversion moved to approved.
- name: Conversion Denied
audience:
- merchant
- marketplace-affiliate
payload: conversion
description: A conversion was denied; the payload carries denied_reason_code and reason.
- name: New Payment
audience:
- merchant
- marketplace-affiliate
payload: payment
description: >-
A commission payment was issued. The merchant-side payload is keyed by affiliate id under
data.affiliates; the affiliate-side payload is a single flat payment with its conversions.
- name: New Affiliate
audience:
- merchant
payload: affiliate
description: An affiliate account was created in the merchant's program.
- name: Affiliate Status Change
audience:
- merchant
payload: affiliate
description: An affiliate's status changed (for example PENDING to ACTIVE).
- name: Affiliate Details Change
audience:
- merchant
payload: affiliate
header_example: AFFILIATE_DETAILS_CHANGE
description: Affiliate profile fields, address, custom fields or offer assignment changed.
- name: New Conversion Trigger
audience:
- merchant
payload: conversion_trigger
description: >-
A conversion trigger (coupon code or customer email) was added for an affiliate. Documented as
useful for auto-creating discount codes in the merchant's commerce platform.
- name: Bonus Tier Movement
audience:
- merchant
payload: affiliate_with_reward
plan_restriction: Enterprise plans only
description: >-
An affiliate reached a new bonus-tier milestone. Payload is the affiliate object plus a
`reward` object carrying offer_id, milestone_reached, amount_given and notes.
payloads:
- name: conversion
fields:
- id
- created
- status
- denied_reason_code
- is_recurring
- total_items
- total
- commission_total
- currency
- is_test_conversion
- payment_status
- updated
- affiliate{id,code,first_name,last_name,email}
- payment_id
- offer{id,name,type,amount}
- customer{name,email,browser_ip}
- coupon_code
- order_id
- subscription_id
- reason
- notes
- click{created,referer,landed_url,ip,sub_id,creative_id}
- source
note: >-
Merchant deliveries carry `customer` and `source` (e.g. SHOPIFY); marketplace-affiliate
deliveries drop `customer` and instead carry `merchant{name}` and `product_names[]`.
- name: payment
fields:
- data.affiliates.<affiliate_id>{id,first_name,last_name,email,paypal_email}
- payments[]{id,created,total_conversions,payment_method,commission_total,total,currency,note}
note: Marketplace-affiliate variant is flat — {id, payment_total, payment_method, conversions[][]}.
- name: affiliate
fields:
- id
- code
- status
- last_login
- last_conversion
- first_name
- last_name
- email
- paypal_email
- company
- address_1
- address_2
- city
- state
- zip
- country
- phone_number
- source
- custom_fields[]{id,name,value}
- offer{id,name}
- is_marketplace_user
- name: conversion_trigger
fields:
- id
- affiliate_id
- trigger
- type
note: 'type is the trigger kind, e.g. EMAIL; trigger is the value, e.g. CUSTOMER@TRIGGER.COM.'
- name: affiliate_with_reward
fields:
- '<all affiliate fields>'
- reward{id,offer_id,milestone_reached,amount_given,notes}
inbound:
- name: Order Tracking Webhook
direction: inbound
description: >-
Server-side order reporting. The merchant's backend POSTs completed orders to Refersion,
matched to the browser click session by a merchant-generated cart_id previously handed over
with r.sendCheckoutEvent(). This is the server-side alternative to reporting conversions with
r.sendConversion() from the thank-you page.
endpoint: https://inbound-webhooks.refersion.com/tracker/orders/paid
method: POST
content_type: application/json
auth:
- Refersion-Public-Key
- Refersion-Secret-Key
docs: https://www.refersion.dev/reference/webhook-tracking
body:
- cart_id
- order_id
- subscription_id
- is_subscription
- auto_credit_affiliate_id
- shipping
- tax
- discount
- discount_code
- currency_code
- customer{first_name,last_name,email,ip_address}
- items[]{sku,name,quantity,price}
required:
- cart_id
- order_id
- currency_code
- 'items[].sku'
- 'items[].quantity'
- 'items[].price'
note: >-
cart_id must be non-sequential and not guessable — the docs explicitly warn against session IDs
and simple encodings. price is the UNIT price, not the extended line total.
gaps:
- No AsyncAPI, CloudEvents or JSON Schema document is published for any topic.
- >-
The Refersion-Signature verification procedure is referenced but the linked page is a dead anchor,
so consumers cannot verify webhook authenticity from public documentation.
- Retry, backoff, ordering and delivery-guarantee semantics are undocumented.
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/refersion-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.