Operator guideEN

Reporting / Affiliate Events Report

Audit log of the events and saved amounts the platform sent to the affiliate system, with per-currency successful totals, CSV export, suspicious-traffic visibility, and a guarded force-send override.

How to use this guide

Start with the main guide

Follow the explanation and examples first. Extra definitions and formulas are available below when you need them.

What this page shows

Affiliate Events Report is the audit log of events the platform tried to send to the affiliate system. Each row is one stored affiliate event: when it was created, what kind of event it was, which affiliate and player it belonged to, the amount and currency that were saved with it, whether the affiliate link was marked suspicious, whether the send succeeded, and the exact request URL and payload that were used.

Above the table, a row of green chips shows the successful totals grouped by currency.

When to use it

  • confirm whether registration, deposit, GGR, withdrawal, or bonus events were actually sent to the affiliate provider
  • investigate why a specific event failed by reading its stored error and request payload
  • check how much was reported to affiliates per currency over a date range
  • pull a CSV of the matching events for reconciliation with the affiliate platform
  • force-send a non-success event only when an operator intentionally wants to bypass the normal CPA qualification and scheduling checks

How to read it

  • Each chip in Successful totals is the summed amount for one currency, plus the count of successful events in parentheses, for example EUR 1,250.00 (42).
  • The totals only include events whose status is success and that carry a numeric amount.
  • Currencies are never mixed. Each currency is summed on its own and shown as its own chip. There is no single combined total and no exchange-rate conversion on this page.
  • The table count line (N events found) reflects every matching event, not just successful ones.
  • A row marked success shows when it was sent; any other status shows the stored error message instead.
  • Suspicious shows whether the event belongs to an affiliate link flagged by the traffic-quality logic. The tooltip lists stored suspicious reasons when they exist.
  • Amount and Currency are read from the saved event payload. When the payload carries no currency, the row and the totals show UNKNOWN.

Filters that change the result

  • Start date and End date bound the event creation date. The end date is inclusive of the whole day.
  • Event type limits to one of registration, deposit, ggr, withdrawal, or bonus.
  • Status limits to one of pending, processing, success, failed, not_qualified, cancelled, or retried.
  • Affiliate / partner matches a partner identifier exactly against the event PID, the affiliate link external id, or the link payload pid / stag.
  • Filters are staged in the form and applied only when you press Apply. Reset returns to the default last-7-days window and clears the other filters.

Export

Export downloads the events that match the currently applied filters as a CSV. The export ignores the on-screen page size and streams up to the matching rows within the date range. It uses the same filters as the table, so the date range, event type, status, and partner filter all carry through. The CSV lists one row per event with the resolved identifiers, amount, currency, error, request URL, the suspicious-traffic fields, and the saved payload. The per-currency totals chips are a screen-only summary and are not part of the CSV.

Force send

Force send is a guarded override for rows that are not already success. It opens a confirmation dialog first; opening the dialog does not send anything.

This is not the normal scheduled affiliate flow. When confirmed, the platform loads the stored event, affiliate link, and affiliate provider settings, fires the provider postback, then marks the event success or failed. The override intentionally bypasses CPA qualification, monthly cap, suspicious-traffic filtering, scheduled send time, and current event status. It does not remove the suspicious flag from the affiliate link, and it does not create a separate audit row for the override.

Why values may differ from other reports

  • This page reports what was sent to the affiliate system, not the platform's own ledger. A deposit can exist in finance reports without a successful affiliate event here, and vice versa.
  • The amount shown is whatever was stored on the affiliate event at the time it was created. It is not re-converted or revalued, so it reflects the currency that was recorded with the event.
  • Failed, pending, and cancelled events are listed in the table but never counted in the successful totals.
  • Force-sent rows can later appear as successful sent events because the override updates the stored affiliate event status when the provider accepts the postback.

Known caveats

  • The successful totals are per-currency sums only. There is no cross-currency grand total on this page.
  • Amount and currency come from the saved payload using a fixed precedence. If a provider stored the amount under an unexpected key, that event can show no amount and is then excluded from totals.
  • UNKNOWN currency groups any successful event whose payload had no recognizable currency.
  • The partner filter is an exact match, not a contains search.
  • Force send is an operational override, not a formula or report recalculation. Use it only when the operator intentionally wants to send the provider postback outside the normal qualification flow.
More details

Definitions and formulas

Open only the section you need. The relevant section opens automatically when you request help for a specific item on screen.

Calculations7 topicsOpen details

Resolved sent payload

The Payload column and CSV payload field show whatever was actually sent, not always the full stored record.

Transform
Precedence is request_body first, then affiliate_event_payload._payload, then the full affiliate_event_payload. This is the "what we sent" value and is applied identically in the table cell, the CSV builder, and the totals aggregation.

Resolved amount

Amount is read from the saved payload, not from a dedicated amount column.

Transform
From the resolved payload, take the first present of value, then amount, then sum. A row is excluded from totals when no numeric amount resolves.

Resolved currency

Currency is inferred from the payload; UNKNOWN means the payload had no currency hint.

Transform
From the resolved payload, take the first present of currency, currencyCode, currency_code, then affiliate_event_payload._conversion_metadata.currencyCodeTo, then the 3-letter suffix of the payload goal, then uppercase it. Falls back to UNKNOWN when nothing resolves.

Sent timestamp / error

The Sent / Error column shows a sent time for success and the stored failure reason otherwise.

Transform
When status is success, sentAt is updated_at and error is null. Otherwise sentAt is null and error is the parsed response_message (message, then error, then code, then raw text).

Related ID label

One identifier is surfaced per row using a fixed precedence.

Transform
Display label precedence: `User <userId>`, then `Transaction <transactionId>`, then accountId, then `Link <affiliateLinkId>`, else N/A.

Partner identifier

The Affiliate column shows the most specific partner identifier available.

Transform
Service selects ae.pid plus link payload pid/stag and affiliate_link_external_id; the page picks the first present of pid, link_pid, link_stag, affiliate_link_external_id for display.

Status chip color

Color is a visual cue only and does not change the stored status.

Transform
success maps to green; failed and not_qualified map to red; pending, processing, and retried map to amber; anything else maps to default. Presentation only.
Columns14 topicsOpen details

Created / Sent

Render
Primary line is created_at formatted in UTC. Caption is sentAt in UTC, or `Not sent` when sentAt is null.

Type

Render
Primary line is the event type; caption is the event kind (ae.type) when present.

Event ID

Render
Raw stored affiliate event id.

Related ID

Render
Label precedence: `User <userId>`, then `Transaction <transactionId>`, then accountId, then `Link <affiliateLinkId>`, else N/A. Tooltip shows accountId.

Affiliate

Render
Primary line is partnerIdentifier or affiliateKey; caption is affiliateProvider or affiliateLinkExternalId.

Currency

Render
Currency code, or `UNKNOWN` when the payload had no recognizable currency.

Amount

Render
Formatted as `<CURRENCY> <amount>` with two decimals. Shows N/A when no amount was resolved.

Status

Render
Status chip. Green for success; red for failed or not_qualified; amber for pending, processing, or retried; default otherwise.

Suspicious

Shows whether the joined affiliate link was flagged by traffic-quality logic. This is visibility only; the report does not clear or change the suspicious flag.

Render
Warning chip labelled Suspicious when isSuspicious is true; otherwise a default Clean chip. Tooltip shows suspiciousReasons joined by comma, then trafficQuality, then `Suspicious traffic`.

Sent / Error

Render
For success, shows the sent timestamp (UTC) or `Sent`. For any other status, shows the parsed error message or N/A.

Action / Click / TID

Render
Shows the first present of actionId, clickId, tid. Tooltip lists all three.

Request URL

Render
Request URL used for the send, or N/A. Tooltip shows the full URL.

Payload

Render
Monospace JSON of what was sent. Tooltip pretty-prints the same payload.

Actions

Manual override for firing the provider postback outside the normal affiliate qualification/scheduling flow. See actions.yaml for side effects.

Render
`Force send` warning button. Disabled when status is success. Opens a confirmation dialog before the force-send override.
Filters7 topicsOpen details

Start date

Type
date
Default
today minus 7 days
Source Query Param
startDate
Behavior
Staged in the form; applied on Apply. Serialized as yyyy-MM-dd. Source filters ae.created_at >= startDate.

End date

Type
date
Default
today
Source Query Param
endDate
Behavior
Staged in the form; applied on Apply. Serialized as yyyy-MM-dd. Source filters ae.created_at < (endDate + interval '1 day'), so the end day is inclusive.

Event type

Type
select
Source Query Param
eventType
Options
registration, deposit, ggr, withdrawal, bonus
Behavior
All when empty. Service matches ae.affiliate_event_type exactly. Option list is page-provided; the service does not constrain the value.

Status

Type
select
Source Query Param
status
Options
pending, processing, success, failed, not_qualified, cancelled, retried
Behavior
All when empty. Service matches ae.affiliate_event_status exactly. Option list is page-provided; the service does not constrain the value.

Affiliate / partner

Type
text
Source Query Param
partnerIdentifier
Behavior
Trimmed on Apply. Exact match (not contains) against any of the listed sources.
Source Matching
ae.pid = partnerIdentifier, al.affiliate_link_external_id = partnerIdentifier, al.affiliate_link_payload->>'pid' = partnerIdentifier, al.affiliate_link_payload->>'stag' = partnerIdentifier

Page

Type
pagination-state
Default
0
Source Query Param
page
Behavior
Page index is zero-based; service page is one-based (page + 1). Reset to 0 on Apply, Reset, and rows-per-page change.

Rows per page

Type
pagination-state
Default
20
Source Query Param
limit
Options
10, 20, 50, 100
Behavior
Service default 20, clamped to a maximum of 1000.
Metrics3 topicsOpen details

Successful totals

For each currency, the summed amount of successful affiliate events plus the count of those events, shown as one green chip. Only events with status `success` and a numeric amount are included. Different currencies are never combined.

Aliases
affiliate successful sent amounts, affiliate totals per currency, affiliate sent amount total
Numerator
SUM(amount_text::numeric) per currency group
Denominator
none; this is a sum and a per-currency COUNT(*), not a ratio
Formula
For each matching affiliate event, resolve the saved payload, take the first numeric amount from value, amount, or sum, resolve the currency from the same payload precedence, keep only successful numeric-amount events, then sum amounts and count events per resolved currency.
Currency Basis
Reporting Currency: None imposed by the report. Each chip reports in the currency that was stored on the event payload. Currencies are grouped, never converted or summed across currencies. | Exchange Rate Source: Not applicable. This report performs no FX conversion. When an event payload carries `_conversion_metadata.currencyCodeTo`, that target currency is used as the grouping key, but the amount summed is still the stored amount value as recorded on the event; the report does not apply any rate itself. | Timing Basis: Transaction-time. The amount and currency are whatever were saved on the affiliate event at creation time. There is no period-average rate, no closing rate, and no current-snapshot remeasurement. | Rounding: Sum rounded to 2 decimals by the report aggregation and returned as text. | Missing Currency: Events with no recognizable currency are grouped under the literal 'UNKNOWN'.
Zero Value Behavior
Not a ratio, so there is no zero-denominator case. When no successful numeric-amount events match the filters, the totals array is empty and the page shows `No successful sent amounts for current filters`.

Events found

Count of all affiliate events matching the applied filters, regardless of status. Drives the `N events found` header line and table pagination.

Aliases
affiliate events count, total events found
Numerator
COUNT(*) over the filtered FROM/JOIN with the same WHERE clause as the table
Denominator
none
Formula
Count matching affiliate events after the active filter conditions and related affiliate/player context are applied.

Amount (per row)

The amount stored with a single affiliate event, shown with its currency. Same precedence as the totals aggregation; no conversion is applied.

Aliases
affiliate event amount, sent amount per event
Numerator
single stored value (value, then amount, then sum) from request body, then inner _payload, then full payload
Denominator
none
Formula
extractAffiliateEventReportMoney reads firstPresent(request.value, request.amount, request.sum, payload.value, payload.amount, payload.sum) for amount and firstPresent of currency keys plus _conversion_metadata.currencyCodeTo and the goal suffix for currency, uppercasing the currency.
Currency Basis
Reporting Currency: The currency stored on the event; no conversion. | Timing Basis: Transaction-time stored value. | Missing Currency: Renders as UNKNOWN on the row when unresolved.
More help

Related pages

Reporting

Canonical entrypoint for standalone reporting pages outside the main Dashboard widgets.

Reporting / Bonus Performance

Grouped bonus performance report for activations, amounts, deposits, withdrawals, GGR, and NGR by bonus item.

Reporting / Card Approval Rates

Snapshot report of card deposit approval rates for NetworxPay, Paydex, and Carouseller, split by Trusted and NonTrusted players, with today versus the previous 30 days and today top decline reasons.

Reporting / Change Notification Detail

Detail page for one audit entry, including actor metadata, description, and before/after comparison views.

Reporting / Change Notifications

Audit list for recorded configuration, administrator, and system change entries with filters for actor, entity, and change type.

Reporting / Control Verification

Monitoring workspace for integrity verification runs, compliance scoring, baseline control, and component-by-component failure review.