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

# Create Data Point

> Create a Customer Value data point. The `identifier` is lowercased on save and must be unique within the network. `type` is required and is rejected rather than coerced if it is not `text` or `number`, since it cannot be changed afterwards.


Create a Customer Value data point — a custom attribute you send with conversions, which rules can then read as a goal metric or as a payout or revenue source.

`identifier` is the key you send the attribute under. It is lowercased on save and must be unique within the network.

`type` is required, and a value other than `text` or `number` is rejected rather than defaulted. Pick it carefully: only `number` data points can drive a payout or revenue amount, and neither `identifier` nor `type` can be changed afterwards — a wrong type means recreating the data point.


## OpenAPI

````yaml openapi/customer-value.yaml post /networks/customervalue/datapoints
openapi: 3.0.3
info:
  title: Everflow Network API - Customer Value
  description: >
    Endpoints for managing Customer Value data points and rules. Customer Value
    tracks the lifetime activity of an individual customer (identified by the
    `user_id` passed on conversions) and adjusts payout and revenue based on
    what that customer has done so far. Data points are the custom attributes
    you send with conversions; rules define the goals a customer must reach and
    the payout or revenue outcome applied once they do.
  version: 1.0.0
servers:
  - url: https://api.eflow.team/v1
security: []
tags:
  - name: Data Points
  - name: Rules
paths:
  /networks/customervalue/datapoints:
    post:
      tags:
        - Data Points
      summary: Create Data Point
      description: >
        Create a Customer Value data point. The `identifier` is lowercased on
        save and must be unique within the network. `type` is required and is
        rejected rather than coerced if it is not `text` or `number`, since it
        cannot be changed afterwards.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataPointInput'
            example:
              identifier: subscription_tier
              name: Subscription tier
              type: text
              status: active
              description: The plan the customer is subscribed to.
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataPoint'
      security:
        - API Key: []
components:
  schemas:
    DataPointInput:
      type: object
      required:
        - identifier
        - name
        - type
      properties:
        identifier:
          type: string
          maxLength: 255
          description: >
            The key used to send this data point on a conversion. Lowercased on
            save and must be unique within the network.
        name:
          type: string
          maxLength: 255
          description: Display name of the data point.
        type:
          type: string
          enum:
            - text
            - number
          description: >
            The value type. Required — there is no default, and a value outside
            `text` and `number` is rejected rather than coerced. Cannot be
            changed after creation, so a wrong type means recreating the data
            point.
        status:
          type: string
          enum:
            - active
            - inactive
          default: active
          description: Whether rules can reference this data point.
        description:
          type: string
          description: Free-form description of the data point.
    DataPoint:
      type: object
      properties:
        network_id:
          type: integer
          example: 1
          readOnly: true
          description: Network ID.
        data_point_id:
          type: integer
          example: 12
          readOnly: true
          description: Unique data point ID.
        identifier:
          type: string
          maxLength: 255
          example: subscription_tier
          description: >
            The key used to send this data point on a conversion. Lowercased on
            save and unique within the network.
        name:
          type: string
          maxLength: 255
          example: Subscription tier
          description: Display name of the data point.
        type:
          type: string
          enum:
            - text
            - number
          description: >
            The value type. `number` data points can be summed and compared and
            are the only ones usable as a payout or revenue source; `text` data
            points support string comparisons only.
        status:
          type: string
          enum:
            - active
            - inactive
          description: >
            Only `active` data points can be referenced by a rule. Setting a
            data point to `inactive` stops new rules from using it.
        description:
          type: string
          description: Free-form description of the data point.
        time_created:
          type: integer
          example: 1734455015
          readOnly: true
          description: Unix timestamp of creation.
        time_saved:
          type: integer
          example: 1734455015
          readOnly: true
          description: Unix timestamp of last update.
  securitySchemes:
    API Key:
      description: The Everflow API key generated from the Control Center > Security.
      in: header
      name: X-Eflow-Api-Key
      type: apiKey

````