Cardlytics · AsyncAPI Specification

Cardlytics Publisher Webhooks

Version

View Spec View on GitHub CompanyAdvertisingCommerce MediaCard-Linked OffersPurchase IntelligenceFinancial ServicesLoyalty and RewardsMarketingBankingRetail MediaAttributionOffersAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-12'
method: searched
source:
- https://docs.cardlytics.com/ads/v2/developer-tools/notifications-webhook.html
- https://docs.cardlytics.com/ads/v2/developer-tools/rtm.html
- https://docs.cardlytics.com/poweredby/api-reference-notify-transaction.html
- https://docs.cardlytics.com/poweredby/api-reference-notify-reward.html
- https://docs.cardlytics.com/poweredby/api-reference-notify-enrollment.html
- https://docs.cardlytics.com/poweredby/api-reference-notify-transaction-ach.html
spec_type: Webhooks
asyncapi: false
asyncapi_note: >-
  Cardlytics publishes NO AsyncAPI document. Searched the developer hub
  (platform.cardlytics.com, both child projects), the legacy docs snapshot
  (docs.cardlytics.com), /asyncapi.yaml and /asyncapi.json on every host, and
  there is no public GitHub organization to search. The event surface below is
  documented in prose only. Nothing here is fabricated — it is transcribed from
  the provider's own webhook and real-time-messaging pages.
summary: >-
  Cardlytics has a genuine event surface, but it is inverted relative to most
  API providers: Cardlytics does not host webhook subscriptions. The PARTNER
  builds and hosts an endpoint, and Cardlytics posts to it. Endpoint URLs are
  configured out-of-band with an implementation consultant — there is no
  self-service subscription API, no signing-secret rotation endpoint, no
  delivery-retry policy, and no replay or dead-letter surface published.
direction: cardlytics -> partner (provider-initiated, partner-hosted receiver)
delivery:
  transport: HTTPS POST, application/json
  configuration: >-
    Out-of-band. "Contact your designated Cardlytics implementation consultant"
    to have events routed to your endpoint.
  authentication:
    scheme: HS256 JWT bearer
    detail: >-
      Powered by Cardlytics webhooks are authenticated with an Authorization
      Bearer JWT signed with the shared secretKey, where sub is the hex-encoded
      MD5 digest of the JSON request body and exp is at most 60 minutes out.
      Each configured webhook gets its own applicationId.
    source: https://docs.cardlytics.com/poweredby/api-reference-authentication.html
  retries:
    documented: false
  signature_header:
    documented: false
    note: Body integrity is bound into the JWT sub claim rather than a separate signature header.
  status_codes: Standard HTTP; receivers are expected to honor the same code table as the REST APIs.
channels:
- name: publisher-notification-webhook
  description: >-
    Redemption close-the-loop and activity-based notifications. Cardlytics
    ingests authorization data through the Transaction API, matches it to a
    merchant and one or more valid offers, determines the qualifying event, and
    posts the result to the publisher-managed webhook so the publisher can
    message the customer.
  payload_fields:
  - {field: transactionIdentifier, type: string, description: Unique id for the authorization transaction record. Must not be the account number.}
  - {field: transactionType, type: integer, description: '0 = Auth, 1 = Cleared'}
  - {field: externalAccountIdentifier, type: string(120), description: Unique id for the account. Must not be the account number.}
  - {field: notificationType, type: EventType, description: Type of notification}
  - {field: merchantName, type: string(350), description: Transaction description as it appears on the customer statement.}
  - {field: brandingURL, type: string, description: Name of the merchant logo associated with an offer.}
  - {field: brandingURLFileTypeName, type: string(4), description: File extension of the offer logo.}
  - {field: sourceCustomerID, type: string, description: Unique id for the customer. Must not be the account number.}
  caveat: >-
    The sourceAccountId Cardlytics returns is the id received during transaction
    import, which is not necessarily the account id used elsewhere in publisher
    systems.
  source: https://docs.cardlytics.com/ads/v2/developer-tools/notifications-webhook.html
- name: real-time-messaging
  description: >-
    Real-Time Messaging (RTM) posts certain platform events to a
    publisher-hosted endpoint as soon as they become available, to drive
    marketing workflows.
  events:
  - name: Redemption Notification
    example_event_type: REDEMPTION_CONFIRMED
    payload_fields:
    - {field: event, type: RealtimeMessagingEventType, description: Type of RTM event}
    - {field: eventId, type: string, description: Unique uuid for the RTM event}
    - {field: eventTimestamp, type: string, description: ISO 8601 timestamp of the redemption event}
    - {field: redemptions, type: 'Redemption[]', description: List of redemptions}
    redemption_fields:
    - redemptionId
    - adId
    - amount
    - redemptionDate
    - sourceCustomerId
    - sourceAccountId
    - redeemingTransactionAmount
    - transactionId
    - rewardSettlementRunDate
  enumeration_reference: https://docs.cardlytics.com/ads/v2/objects/enumerations/realtime-messaging-event-type.html
  source: https://docs.cardlytics.com/ads/v2/developer-tools/rtm.html
- name: powered-by-notify-endpoints
  description: >-
    The Powered by Cardlytics marketplace integration defines a matching set of
    partner-hosted notify endpoints Cardlytics calls.
  endpoints:
  - {name: notify-transaction, source: https://docs.cardlytics.com/poweredby/api-reference-notify-transaction.html}
  - {name: notify-transaction-ach, source: https://docs.cardlytics.com/poweredby/api-reference-notify-transaction-ach.html}
  - {name: notify-reward, source: https://docs.cardlytics.com/poweredby/api-reference-notify-reward.html}
  - {name: notify-enrollment, source: https://docs.cardlytics.com/poweredby/api-reference-notify-enrollment.html}
  - {name: sandbox-notify-transactions, source: https://docs.cardlytics.com/poweredby/api-reference-sandbox-notify-transactions.html}
  - {name: test-sandbox-notify-reward, source: https://docs.cardlytics.com/poweredby/api-reference-test-sandbox-notify-reward.html}
  - {name: test-sandbox-notify-enrollment, source: https://docs.cardlytics.com/poweredby/api-reference-test-sandbox-notify-enrollment.html}
- name: client-events
  description: >-
    The inbound complement to the outbound events: publishers POST customer
    activity (impressions, offer activation, redemption-history browsing) back to
    Cardlytics through the Events API so the platform can model interactions.
  direction: partner -> cardlytics
  enumeration_reference: https://docs.cardlytics.com/ads/v2/objects/enumerations/client-event-type.html
  source: https://docs.cardlytics.com/ads/v2/api/data/post-customer-event.html
gaps:
- No AsyncAPI, no event schema registry, and no machine-readable event catalog.
- No published subscription/registration API; endpoints are configured by a human.
- No documented retry, backoff, replay or dead-letter behavior for failed deliveries.
- Event type enumerations are documented on the legacy docs host only.