Conversion Event Reconciler
Deterministically deduplicate browser and server conversion events and reconcile them with first-party business outcomes.
Access
Read only · Local event fixtures or approved event export
Inputs
- JSON browser_events and server_events, with optional first-party outcomes
- Pseudonymous event and order IDs
Outputs
- Canonical events with deduplication and source provenance
- Outcome reconciliation, counts and warnings
Before you begin
- Python 3 for the packaged sample. Keep access tokens, raw emails and payment credentials out of event payloads.
Try this first
Inspect the packaged offline sample before running it. After file installation, use the stated runtime from the installed package directory.
Limits for this step
- A local deterministic script is packaged, but clean-client installation evidence is not yet recorded.
- Live event collection and platform uploads are outside this package.
- Reads supplied files and writes JSON to stdout; live event collection and platform uploads are out of scope.
Inspect offline sampleHide offline sample
Runtime · Python 3. Run from the installed package directory after file installation.
python3 scripts/reconcile_events.py examples/input.jsonExpected result · JSON canonical events, reconciliation counts and missing-ID warnings on standard output.
Sample input
{
"browser_events": [
{
"event_name": "purchase",
"event_id": "evt-100",
"order_id": "ord-100",
"value": 79,
"currency": "GBP"
},
{
"event_name": "lead",
"order_id": null,
"value": 0,
"currency": "GBP"
}
],
"server_events": [
{
"event_name": "purchase",
"event_id": "evt-100",
"order_id": "ord-100",
"value": 79,
"currency": "GBP"
},
{
"event_name": "purchase",
"event_id": "evt-101",
"order_id": "ord-101",
"value": 49,
"currency": "GBP"
}
],
"outcomes": [
{
"order_id": "ord-100",
"status": "settled"
},
{
"order_id": "ord-101",
"status": "refunded"
}
]
}
Expected sample output
{
"canonical_events": [
{
"conflicts": [],
"currency": "GBP",
"event_id": "evt-100",
"event_name": "purchase",
"key": "purchase:evt-100",
"order_id": "ord-100",
"outcome": {
"order_id": "ord-100",
"status": "settled"
},
"sources": [
"browser_events",
"server_events"
],
"value": 79
},
{
"conflicts": [],
"currency": "GBP",
"event_id": null,
"event_name": "lead",
"key": "unmatched:691465d8951926e5",
"order_id": null,
"outcome": null,
"sources": [
"browser_events"
],
"value": 0
},
{
"conflicts": [],
"currency": "GBP",
"event_id": "evt-101",
"event_name": "purchase",
"key": "purchase:evt-101",
"order_id": "ord-101",
"outcome": {
"order_id": "ord-101",
"status": "refunded"
},
"sources": [
"server_events"
],
"value": 49
}
],
"summary": {
"canonical_event_count": 3,
"duplicate_event_count": 1,
"raw_event_count": 4,
"reversed_outcome_count": 1,
"verified_outcome_count": 1
},
"warnings": [
{
"code": "missing_event_id",
"key": "unmatched:691465d8951926e5",
"source": "browser_events"
}
]
}
View capabilities and accessHide capabilities and access
What it can do
- Deduplicate browser and server events by event name and event ID.
- Preserve event provenance and flag conflicting values.
- Reconcile conversions with first-party outcomes.
Access limits
Reads supplied files and writes JSON to stdout; live event collection and platform uploads are out of scope.
Credentials and setup
- None for local fixtures
Install tool files
These commands install package files and generate runtime configuration where supported. Confirm discovery in your agent app, then check configuration, authentication and a first useful operation.
Install (Codex)
./bin/skills-hub install --module tools --entry adtech/[email protected] --runtime codex
Install (Claude)
./bin/skills-hub install --module tools --entry adtech/[email protected] --runtime claude
Install (Generic)
./bin/skills-hub install --module tools --entry adtech/[email protected] --runtime generic --target ./my-agent/tools-mcp