Skip to main content
The activity channel ("activity") delivers three event types: split, merge, and redeem. These represent position management operations on Polymarket’s Conditional Token Framework.

split

A user deposits collateral (USDC) to mint outcome tokens for a market.
{
  "type": "event",
  "subscription_id": "sub_2f4b15b33798",
  "data": {
    "event_type": "split",
    "user": "0x6d38b759c90c3158fa7b4fa45b0145eefd58d910",
    "condition_id": "0x7fc83e5029c8e7b752f2fda61158f6cbc185c0a7b60d34d56231fcc09c62ce44",
    "collateral_token": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
    "amount": 100000000,
    "amount_normalized": 100,
    "payout": null,
    "payout_normalized": null,
    "tx_hash": "0x0708391d4276731737d14a388491afb8a9c2f5b133f597189993b3ebf9154c37",
    "log_index": "0x355",
    "block_number": "0x4ebcd4d",
    "timestamp": 1770244769,
    "title": "Bitcoin Up or Down - February 4, 5:45PM-6:00PM ET",
    "market_slug": "btc-updown-15m-1770245100",
    "market_id": "1329555",
    "image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/BTC+fullsize.png",
    "tokens": [
      { "token_id": "3461486922...", "label": "Up" },
      { "token_id": "9291673453...", "label": "Down" }
    ]
  }
}

merge

A user returns a full set of outcome tokens to redeem collateral (USDC) before market resolution.
{
  "type": "event",
  "subscription_id": "sub_2f4b15b33798",
  "data": {
    "event_type": "merge",
    "user": "0xe8dd7741ccb12350957ec71e9ee332e0d1e6ec86",
    "condition_id": "0x4dab1a074a9dbfc122f49b1b4e683d0b9960738107623d2dfd974eb98865a020",
    "collateral_token": null,
    "amount": 40980000,
    "amount_normalized": 40.98,
    "payout": null,
    "payout_normalized": null,
    "tx_hash": "0xd198bdd0226e5225a103aaaa01cf38aac4bc34891dd8ba31832f454cb7d65da1",
    "log_index": "0x54f",
    "block_number": "0x4ebcd51",
    "timestamp": 1770244777,
    "title": "Will \"NUEVAYOL\" be played first at the Super Bowl halftime show?",
    "market_slug": "will-nuevayol-be-played-first-at-the-super-bowl-halftime-show",
    "market_id": "811834",
    "image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/...",
    "tokens": [
      { "token_id": "8405376573...", "label": "Yes" },
      { "token_id": "3675765791...", "label": "No" }
    ]
  }
}

redeem

A user redeems winning outcome tokens for collateral (USDC) after a market has resolved.
{
  "type": "event",
  "subscription_id": "sub_2f4b15b33798",
  "data": {
    "event_type": "redeem",
    "user": "0x1f4c2a421a36e5da4e013c557dc29fdec7cb2e01",
    "condition_id": "0x6b6de56b0057be1b236ef4e52745ca1160497419789ffe3c6f0f95b12e195762",
    "collateral_token": null,
    "amount": 0,
    "amount_normalized": 0,
    "payout": 20000000,
    "payout_normalized": 20,
    "tx_hash": "0x8fbd25676f0b4d0a2af786716f406100f24492b1246bb16b580cb7a5aefd0931",
    "log_index": "0x26d",
    "block_number": "0x4ebcd4a",
    "timestamp": 1770244763,
    "title": "Will Sunderland AFC win on 2026-02-02?",
    "market_slug": "epl-sun-bur-2026-02-02-sun",
    "market_id": "1225150",
    "image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/...",
    "tokens": [
      { "token_id": "3331904137...", "label": "Yes" },
      { "token_id": "9751235886...", "label": "No" }
    ]
  }
}

Field Reference

FieldTypeDescription
event_type"split" | "merge" | "redeem"
userstringUser address
condition_idstringMarket condition ID
collateral_tokenstring | nullCollateral token contract address (USDC)
amountnumberCollateral amount (raw, 6 decimal places)
amount_normalizednumberHuman-readable collateral amount
payoutnumber | nullPayout amount in raw units (redeem only)
payout_normalizednumber | nullHuman-readable payout (redeem only)
tokensarray | nullOutcome tokens for this market
titlestring | nullMarket title
market_slugstring | nullMarket URL slug
market_idstring | nullInternal market ID
imagestring | nullMarket image URL
tx_hashstringTransaction hash
log_indexstringLog index (hex)
block_numberstringBlock number (hex)
timestampnumberUnix timestamp in seconds

Example: Tracking Redemptions

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);

  if (msg.type === 'event') {
    const data = msg.data;

    if (data.event_type === 'redeem') {
      console.log(`Redemption: $${data.payout_normalized}`);
      console.log(`Market: ${data.title}`);
      console.log(`Wallet: ${data.user}`);
    }
  }
};