Home/Docs/Event types
Developers

Event types.

The Event types Evinor emits today, and the roles each one extracts. These are the payload.eventCodeName values you gate on and the details.roles[].code values you read.

Last updated July 9, 2026

Detection difficulty is not uniform across Event types. Every type below carries a maturity chip: Established types have tight, well-bounded detection criteria; Emerging types are noisier to detect. That difference is exactly what the confidence band is for — gate on it, and gate harder on the Emerging types.

Wire contract: protocolVersion 0.1. We intend Event type codeNames to be stable, and we treat renaming one as a breaking change. Role codeNames may still change before 1.0 — read them defensively and skip codes you do not recognize. The envelope that wraps all of this is documented on Event delivery.
roles is a list, not a map. The same code may appear more than once: a round backed by three investors arrives as three INVESTING_COMPANY_NAME entries. Roles that can repeat are tagged repeatable in the tables below. Do not key by code Object.fromEntries(roles.map(r => [r.code, r.textValue])) keeps the last entry and silently discards the others. Group by code instead.

Each role table below has a Typecolumn — the role’s value type, and which parsed companion it carries on the wire:

NAMED_ENTITY
An organization or person named in the Event. Carries namedEntityId when the text resolved to a known entity.
CURRENCY
A monetary amount. Carries a parsed parsedAmount; a role that does not parse is dropped rather than delivered unparsed.
NUMBER
A plain count or percentage. Carries a parsed parsedAmount, the same guarantee as CURRENCY.
DURATION
A span of time, validated as text. May carry parsedAmount, but only sometimes.
CATEGORICAL
One value from a fixed vocabulary, delivered as an uppercase token in textValue. No parsed companion.
NONE
Free text with no parsing — the value is in textValue only.

01Acquisition

ACQUISITIONEstablished

A company acquires another company.

Role codeNameTypeDescription
ACQUIRING_COMPANY_NAMEAcquiring Company NameNAMED_ENTITYThe company taking ownership in the deal.
COMPANY_BEING_ACQUIREDCompany Being AcquiredNAMED_ENTITYThe company that is being taken over.
VALUE_OF_ACQUISITIONValue of the AcquisitionCURRENCYThe reported price paid for the deal.
ACQUISITION — roles on the wire
{
  "eventCodeName": "ACQUISITION",
  "details": {
    "roles": [
      {
        "code": "ACQUIRING_COMPANY_NAME",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "COMPANY_BEING_ACQUIRED",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "VALUE_OF_ACQUISITION",
        "textValue": "…",
        "parsedAmount": 1000000
      }
    ]
  }
}

02Investment

FUND_RAISINGEstablished

A company completes a fundraising round.

Role codeNameTypeDescription
INVESTING_COMPANY_NAME repeatableInvesting Company NameNAMED_ENTITYAn investor backing the round. A round with several investors yields one entry per investor.
COMPANY_RAISING_FUNDSCompany Raising FundsNAMED_ENTITYThe startup that raised the capital.
AMOUNT_RAISEDAmount RaisedCURRENCYTotal capital secured in this round.
FUNDING_ROUND_TYPEFunding Round TypeNONEThe round's stage label, such as Seed or Series A.
FUND_RAISING — roles on the wire
{
  "eventCodeName": "FUND_RAISING",
  "details": {
    "roles": [
      {
        "code": "INVESTING_COMPANY_NAME",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "INVESTING_COMPANY_NAME",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "COMPANY_RAISING_FUNDS",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "AMOUNT_RAISED",
        "textValue": "…",
        "parsedAmount": 1000000
      },
      {
        "code": "FUNDING_ROUND_TYPE",
        "textValue": "…"
      }
    ]
  }
}

03Layoff

LAYOFFEstablished

A company lays off employees.

Role codeNameTypeDescription
COMPANY_NAMECompany NameNAMED_ENTITYThe employer reducing its headcount.
AFFECTED_EMPLOYEES_COUNTNumber of Employees AffectedNUMBERHow many roles were eliminated.
PERCENTAGE_OF_WORKFORCE_AFFECTEDPercentage of Workforce AffectedNUMBERShare of total staff let go, as a percentage.
ANNOUNCED_REASONReason for LayoffNONEThe publicly stated rationale for the cuts.
CATEGORY_OF_EMPLOYEES_AFFECTEDCategory of Employees AffectedNONEWhich team or function bore the cuts, such as sales.
LAYOFF — roles on the wire
{
  "eventCodeName": "LAYOFF",
  "details": {
    "roles": [
      {
        "code": "COMPANY_NAME",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "AFFECTED_EMPLOYEES_COUNT",
        "textValue": "…",
        "parsedAmount": 1000000
      },
      {
        "code": "PERCENTAGE_OF_WORKFORCE_AFFECTED",
        "textValue": "…",
        "parsedAmount": 1000000
      },
      {
        "code": "ANNOUNCED_REASON",
        "textValue": "…"
      },
      {
        "code": "CATEGORY_OF_EMPLOYEES_AFFECTED",
        "textValue": "…"
      }
    ]
  }
}

04Leadership Change

LEADERSHIP_CHANGEEstablished

A company's senior leadership changes through an appointment, a departure, or a succession.

Role codeNameTypeDescription
COMPANY_NAMECompany NameNAMED_ENTITYThe organization whose leadership shifted.
ROLE_TITLERole TitleNONEThe executive position that changed hands.
INCOMING_PERSONIncoming PersonNAMED_ENTITYThe individual stepping into the role.
OUTGOING_PERSONOutgoing PersonNAMED_ENTITYThe individual departing the role.
REASONReasonNONEThe publicly stated rationale for the move.
LEADERSHIP_CHANGE — roles on the wire
{
  "eventCodeName": "LEADERSHIP_CHANGE",
  "details": {
    "roles": [
      {
        "code": "COMPANY_NAME",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "ROLE_TITLE",
        "textValue": "…"
      },
      {
        "code": "INCOMING_PERSON",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "OUTGOING_PERSON",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "REASON",
        "textValue": "…"
      }
    ]
  }
}

05IPO

IPOEstablished

A company makes a concrete move toward going public: an exchange filing, a priced offering, or a first day of trading. A filing alone counts, so this Event can arrive long before any share changes hands.

Role codeNameTypeDescription
COMPANY_NAMECompany NameNAMED_ENTITYThe business seeking or completing a public listing.
VALUATIONValuationCURRENCYWhat the company is valued at for the offering. On a filing this is a target or an expectation, not a settled market price.
AMOUNT_RAISEDAmount RaisedCURRENCYHow much capital the share sale brings in. Sought or projected until the offering actually prices.
STOCK_EXCHANGEStock ExchangeNONEThe exchange named for the listing, such as NYSE. It can be announced before anything trades there.
IPO — roles on the wire
{
  "eventCodeName": "IPO",
  "details": {
    "roles": [
      {
        "code": "COMPANY_NAME",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "VALUATION",
        "textValue": "…",
        "parsedAmount": 1000000
      },
      {
        "code": "AMOUNT_RAISED",
        "textValue": "…",
        "parsedAmount": 1000000
      },
      {
        "code": "STOCK_EXCHANGE",
        "textValue": "…"
      }
    ]
  }
}

06Partnership Announcement

PARTNERSHIP_ANNOUNCEMENTEmerging

Two companies form a strategic partnership or alliance.

Emerging — noisier to detect; we recommend gating on confidence.band = HIGH.

Role codeNameTypeDescription
FIRST_PARTNER_COMPANYFirst Partner CompanyNAMED_ENTITYOne of the two collaborating organizations.
SECOND_PARTNER_COMPANYSecond Partner CompanyNAMED_ENTITYThe other collaborating organization.
VALUE_OF_PARTNERSHIPValue of the PartnershipCURRENCYThe reported financial size of the deal.
DURATION_OF_PARTNERSHIPDuration of the PartnershipDURATIONHow long the arrangement is set to run.
PARTNERSHIP_ANNOUNCEMENT — roles on the wire
{
  "eventCodeName": "PARTNERSHIP_ANNOUNCEMENT",
  "details": {
    "roles": [
      {
        "code": "FIRST_PARTNER_COMPANY",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "SECOND_PARTNER_COMPANY",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "VALUE_OF_PARTNERSHIP",
        "textValue": "…",
        "parsedAmount": 1000000
      },
      {
        "code": "DURATION_OF_PARTNERSHIP",
        "textValue": "…"
      }
    ]
  }
}

07Product Launch

PRODUCT_LAUNCHEmerging

A company introduces a product, adds a major new feature, ships a new version, expands what an existing product can do, debuts creative work, or opens a product to a wider audience.

Emerging — noisier to detect; we recommend gating on confidence.band = HIGH.

Role codeNameTypeDescription
COMPANY_NAMECompany NameNAMED_ENTITYThe organization behind the launch.
PRODUCT_OR_SERVICE_NAMEProduct or Service NameNAMED_ENTITYThe product or service being introduced.
LAUNCH_TYPELaunch TypeCATEGORICALWhich kind of launch this was, delivered as an uppercase token drawn from a fixed vocabulary rather than free text.
HOST_PRODUCTHost ProductNAMED_ENTITYThe existing product that a newly added feature or capability plugs into. Absent when the launch stands on its own.
COMPANY_SHORT_DESCRIPTIONCompany Short DescriptionNONEA brief phrase describing what the company does.
PRODUCT_DESCRIPTIONProduct DescriptionNONEA brief phrase describing what the product does.
PRODUCT_LAUNCH — roles on the wire
{
  "eventCodeName": "PRODUCT_LAUNCH",
  "details": {
    "roles": [
      {
        "code": "COMPANY_NAME",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "PRODUCT_OR_SERVICE_NAME",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "LAUNCH_TYPE",
        "textValue": "…"
      },
      {
        "code": "HOST_PRODUCT",
        "textValue": "…",
        "namedEntityId": "…"
      },
      {
        "code": "COMPANY_SHORT_DESCRIPTION",
        "textValue": "…"
      },
      {
        "code": "PRODUCT_DESCRIPTION",
        "textValue": "…"
      }
    ]
  }
}

In the samples above, marks an elided value and any number is illustrative, not real data. namedEntityId, parsedAmount and parsedDate are all optional companions to textValue — present only when entity resolution or value parsing succeeded. parsedAmount appears whenever we parsed a numeric amount. It is guaranteed on the numeric and measurement types (CURRENCY and NUMBER among the roles above), because such a role is dropped rather than delivered unparsed. It may also arrive on a DURATION role, which is validated as text and so carries an amount only sometimes — the samples above do not show that case. A role that was not extracted is absent from roles entirely, never present with a null value.