> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polynode.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Position Merge Event

> Outcome tokens merged back into collateral on Polymarket.

Emitted when outcome tokens (YES + NO shares) are merged back into collateral (USDC) via the Conditional Tokens Framework `mergePositions` function. The inverse of a [position split](/websocket/events/position-split).

Merges are much rarer than splits (\~20x less frequent). They happen when a trader holds both YES and NO tokens for a condition and redeems them back to USDC.

```json theme={null}
{
  "data": {
    "amount": 1414.0,
    "block_number": 84090704,
    "collateral_token": "0x3a3bd7bb9528e159577f7c2e685cc81a765002e2",
    "condition_id": "0xd1747284d6048b2a3dcfbee489db405f36de18f9590197dd0e5c9f0c246bf050",
    "event_title": "Republican Presidential Nominee 2028",
    "event_type": "position_merge",
    "log_index": 1004,
    "market_image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/Byron_Donalds.png",
    "market_slug": "will-byron-donalds-win-the-2028-republican-presidential-nomination",
    "market_title": "Will Byron Donalds win the 2028 Republican presidential nomination?",
    "neg_risk": true,
    "stakeholder": "0xd91e80cf2e7be2e162c6513ced06f1dd0da35296",
    "taker_base_fee": 0.0,
    "tick_size": 0.001,
    "timestamp": 1773301441000,
    "tokens": {
      "311624663652221737215322113380496984764966764039692273354641152455298576851": "Yes",
      "43292374563904271719486871569114922516560719431752184778538513591321835161630": "No"
    },
    "tx_hash": "0x92fa6de980f6cad9eae9ef28e908d19faa10838a07f01352b0cae63b5f8299fb"
  },
  "timestamp": 1773301441000,
  "type": "position_merge"
}
```

## Fields

<ResponseField name="type" type="string" required>
  Always `"position_merge"`.
</ResponseField>

<ResponseField name="timestamp" type="number" required>
  Block timestamp in Unix milliseconds.
</ResponseField>

<ResponseField name="data" type="object" required>
  <Expandable title="data fields">
    <ResponseField name="tx_hash" type="string" required>
      Transaction hash.
    </ResponseField>

    <ResponseField name="block_number" type="number" required>
      Block number.
    </ResponseField>

    <ResponseField name="log_index" type="number" required>
      Log index within the transaction.
    </ResponseField>

    <ResponseField name="timestamp" type="number" required>
      Block timestamp in Unix milliseconds.
    </ResponseField>

    <ResponseField name="stakeholder" type="string" required>
      Address that triggered the merge.
    </ResponseField>

    <ResponseField name="collateral_token" type="string" required>
      Collateral token address. USDC.e (`0x2791bca1f2de4661ed88a30c99a7a9449aa84174`) for standard markets, wrapped collateral (`0x3a3bd7bb...`) for neg\_risk markets.
    </ResponseField>

    <ResponseField name="condition_id" type="string" required>
      Market condition ID — identifies which market's outcome tokens were burned.
    </ResponseField>

    <ResponseField name="amount" type="number" required>
      USDC amount received from merging outcome tokens (6 decimal precision).
    </ResponseField>

    <ResponseField name="market_title" type="string">
      Human-readable market question. Populated when metadata is available.
    </ResponseField>

    <ResponseField name="market_slug" type="string">
      URL slug for the market.
    </ResponseField>

    <ResponseField name="market_image" type="string">
      Market image URL. Enriched from metadata.
    </ResponseField>

    <ResponseField name="event_title" type="string">
      Parent event title. Enriched from metadata.
    </ResponseField>

    <ResponseField name="neg_risk" type="boolean">
      Whether this market uses the negRisk contract type. Enriched from metadata.
    </ResponseField>

    <ResponseField name="tick_size" type="number">
      Minimum price increment (e.g. `0.01` or `0.001`). Enriched from metadata.
    </ResponseField>

    <ResponseField name="taker_base_fee" type="number">
      Taker fee rate in basis points. `200` = 2%, `1000` = 10%, `null` = no fee. Short-term crypto markets (5-minute ETH/BTC) typically have `1000` (10%), while standard markets have `200` (2%). Enriched from Polymarket metadata.
    </ResponseField>

    <ResponseField name="tokens" type="object">
      Map of token ID → outcome name for all outcomes in this market. Enriched from metadata.
    </ResponseField>
  </Expandable>
</ResponseField>

## Use cases

* **Position unwinding** — detect when traders are closing positions by merging outcome tokens
* **Liquidity withdrawal tracking** — merges reduce the total supply of outcome tokens in a market
* **Arbitrage detection** — merges after buying both outcomes at favorable prices signal arbitrage

<Note>
  Not included in `global` firehose (full data stream) by default. Subscribe explicitly with `event_types: ["position_merge"]` or use the `wallets`/`markets` subscription types which include it automatically.
</Note>
