Skip to main content
The polymarket_polygon.market_actions table contains position lifecycle actions on the CTF stack — splits, merges, redemptions, and neg-risk converts — enriched with condition-level market context from market_details. One row per user-level action; trade fills live in market_trades. Settlement-internal splits/merges are excluded by construction — those are the mint/merge legs of CLOB fills and live in market_trades.
condition_id and event_market_id are never both populated on the same row: split/merge/redemption rows key on condition_id, convert rows key on event_market_id. To get a market’s full action history, filter on condition_id for split/merge/redemption and separately on event_market_id for convert.

Table Schema

ColumnTypeDescription
block_monthDATEUTC month of the event block time (partition key)
block_timeTIMESTAMPUTC event block time
block_numberBIGINTBlock number in which the action was executed
actionVARCHARLifecycle action type (split, merge, redemption, convert)
condition_idVARBINARYCTF condition ID (bytes32); NULL on convert rows (keyed by event_market_id instead)
event_market_idVARBINARYNegRiskAdapter market ID of the overarching multi-outcome event (convert rows only); joins market_details.event_market_id (varchar there) — not a CTF condition ID
questionVARCHARConcrete outcome being bet on (from market_details)
event_market_nameVARCHAROverarching question for negRisk markets
polymarket_linkVARCHARLink to the Polymarket site (may be broken for archived markets)
neg_riskVARCHARWhether the condition belongs to a neg-risk market
index_setsARRAY(UINT256)Outcome index sets of the action: the partition of CTF splits/merges, the redeemed index sets of CTF redemptions, the converted outcome bitmask of converts; NULL for adapter actions (full YES/NO set implied)
stakeholderVARBINARYAddress whose position is acted on; may be a Polymarket router/proxy contract — see tx_from for the sender
amountDOUBLEShare/set quantity (= USDC collateral moved 1:1 for splits/merges). NULL for CTF and auto redemptions (not emitted)
payoutDOUBLECollateral returned by redemptions in USD; NULL otherwise
is_auto_redeemedBOOLEANOn redemptions: TRUE when executed by the AutoRedeemer on the user’s behalf; NULL for non-redemption actions
collateral_tokenVARBINARYCollateral token of CTF events; NULL for adapter/AutoRedeemer events
parent_collection_idVARBINARYCTF parent collection ID (0x00 for Polymarket’s flat binary positions); NULL for adapter/AutoRedeemer events
contract_addressVARBINARYContract that emitted the event (CTF, NegRiskAdapter, or AutoRedeemer proxy)
evt_indexINTEGERIndex of the event within the transaction
tx_hashVARBINARYTransaction hash
tx_fromVARBINARYTransaction sender — useful when stakeholder is a router/operator contract
_updated_atTIMESTAMPWhen this row was last inserted or updated by the dbt pipeline

Table sample

Example query