Tracked events let you measure conversions beyond the default wallet connect: NFT mints, token purchases, contract interactions, and any custom action you define in your own code. Once configured, they appear in your attribution dashboard and can be promoted to key events (your primary conversion goal) for cost-per-conversion reporting.
Prerequisites
Before adding tracked events, make sure you have:
The attribution SDK installed and verified on your site (install guide)
At least one domain added under Attribution > Setup
Event types at a glance
Type | How it fires | Requires contract |
Wallet connect | Automatic; SDK fires it on every connect; no setup needed | No |
Token purchase | Server-side indexer reads onchain Transfer logs | Yes |
NFT mint | Server-side indexer watches mint contract events | Yes |
Token swap | Server-side indexer watches DEX swap events | Yes |
Contract interaction | Server-side indexer watches any function call on a contract | Yes |
Custom | You call | No |
Onchain types (token purchase, NFT mint, token swap, contract interaction) are picked up automatically once configured. You do not need to add any code. Custom events require a one-line SDK call.
Adding a tracked event
Open Tracking in the left nav.
Click the Setup tab.
Scroll to the Tracked Events section and click Add event.
In the modal:
Event type — choose the type that matches what you want to measure.
Label — a human-readable name shown in reports (e.g. "Staking contract").
For onchain types, also provide:
Chain — the chain ID where the contract is deployed (e.g. Ethereum = 1, Base = 8453).
Contract address — the
0x...address of the token, NFT, or protocol contract.
For contract interaction, you can optionally specify a function signature (e.g.
stake(uint256)) to filter to a single entrypoint. Leave blank to match any call.For custom events, provide the event name you will pass to
track()(e.g.form_submit).
Click Save.
The event appears in the list immediately. Toggle it off with the inline switch if you want to pause collection without deleting the configuration.
Firing custom events from your site
Custom events are SDK-fired. They don't come from an onchain index, so you call track() wherever the action happens in your app.
// After a user completes a signup form window.mintfunnelAttribution?.track('form_submit'); // With an optional USD value for ROI reporting window.mintfunnelAttribution?.track('purchase_complete', { value_usd: '49.99' });The string you pass to track() must match the event name you entered when you created the tracked event in the dashboard. Names are case-sensitive.
Note: The ?. optional chain guard means the call silently does nothing if the SDK hasn't loaded yet, so it is safe to include unconditionally.
Marking an event as a key event
A key event is the conversion you care about most. Marking one unlocks cost-per-key-event metrics across all your campaigns.
Go to Tracking > Key Events tab.
Any event type that has fired at least once (or that you configured under Tracked Events) appears in the list.
Toggle the switch next to the event you want to optimize for.
You can mark multiple events as key events. The dashboard will report total key events and cost-per-key-event as a sum across all enabled types.
Editing or removing a tracked event
Edit — click the pencil icon on the event row. All fields except event type can be updated.
Delete — click the trash icon and confirm. Deleting a tracked event removes the configuration but does not delete historical attribution data already recorded.
Enable / disable — use the row toggle to pause collection without losing configuration.
Tips and common questions
Can I track the same contract on multiple chains? Yes. Add one tracked event entry per chain. Each entry has its own chain ID, so Mintfunnel knows which network to watch.
How long until onchain events appear after I add a contract? The indexer subscribes to the contract address once you save the event. New transactions after that point are picked up in near real-time. Historical transactions before the setup date are not backfilled.
My custom event isn't showing up in the Key Events list. Check that the name passed to track() exactly matches what you configured. Open your browser's Network panel and look for POST /collect/attribution/v1. A 200 response confirms the event was accepted.
Wallet connect is already tracked. Do I need to add it? No. Wallet connects are recorded automatically for every campaign with attribution enabled. You only need to add it in the tracked events list if you want to attach a custom label or explicitly surface it in the key events picker before any connects have fired.
