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

# Customer.io Integration for AI Agents & Workflows

> Marketing automation platform for personalized customer experiences through email, SMS, and push notifications

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/customerio.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=92f25cd5698aa077cf015b866067c906" alt="Customer.io logo" width="72" height="72" data-path="logos/customerio.svg" />

## Overview

Add **Customer.io** to any ModuleX agent or workflow. Customer profile sync, event tracking, and manual-segment membership management against the Customer.io Track API v1.

<Info>
  **Categories**: Marketing & Advertising · Marketing & Email · Social Media · Customer Support · **Auth**: API Key · **Actions**: 3
</Info>

## Authentication

### API Key Authentication

Authenticate using your Customer.io Site ID and API Key

#### Required Credentials

| Field   | Description                                                                                                                   | Required | Format                             |
| ------- | ----------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------- |
| Site ID | Your Customer.io Site ID (Settings > Workspace Settings > API Credentials)                                                    | No       | `xxxxxxxx-xxxx-xxxx`               |
| API Key | Your Customer.io Tracking API Key (Settings > Workspace Settings > API Credentials)                                           | Yes      | `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |
| Region  | Customer.io data region: 'US' (default, track.customer.io) or 'EU' (track-eu.customer.io). Must match the workspace's region. | No       | `US`                               |

## Available Actions

<AccordionGroup>
  <Accordion title="create_or_update_customer — Creates a new customer profile or updates an existing one in Customer.io">
    ### Parameters

    <ResponseField name="customer_id" type="string" required>
      The unique identifier for the customer
    </ResponseField>

    <ResponseField name="email" type="string" required>
      The customer's email address
    </ResponseField>

    <ResponseField name="created_at" type="integer">
      UNIX timestamp from when the user was created in your system
    </ResponseField>

    <ResponseField name="attributes" type="object">
      Custom attributes (name, plan, company, etc.)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "customer_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Customer Id"
        },
        "email": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Email"
        }
      },
      "required": [
        "success"
      ],
      "title": "CreateOrUpdateCustomerOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="send_event — Sends a tracking event to a customer for triggering campaigns and segmentation">
    ### Parameters

    <ResponseField name="customer_id" type="string" required>
      The unique identifier for the customer
    </ResponseField>

    <ResponseField name="event_name" type="string" required>
      The name of the event to track
    </ResponseField>

    <ResponseField name="event_type" type="string">
      Event type modifier (set to 'page' for page views)
    </ResponseField>

    <ResponseField name="data" type="object">
      Custom data to include with the event
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "customer_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Customer Id"
        },
        "event_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Event Name"
        }
      },
      "required": [
        "success"
      ],
      "title": "SendEventOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="add_customers_to_segment — Adds customers to a manual segment by their IDs (max 1000 per request)">
    ### Parameters

    <ResponseField name="segment_id" type="string" required>
      The segment ID
    </ResponseField>

    <ResponseField name="customer_ids" type="array" required>
      List of customer IDs (max 1000)
    </ResponseField>

    <ResponseField name="id_type" type="string">
      The type of IDs: 'id', 'email', or 'cio\_id' (Default: `id`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "segment_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Segment Id"
        },
        "customer_count": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Customer Count"
        },
        "id_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id Type"
        }
      },
      "required": [
        "success"
      ],
      "title": "AddCustomersToSegmentOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* Manual segment add: max 1000 customer IDs per call (enforced
  client-side; the tool returns `success=False` if the cap is
  exceeded).
* All actions are idempotent on the Customer.io side.

## Related integrations

<CardGroup cols={3}>
  <Card title="Klaviyo" href="/integrations/tools/klaviyo" />

  <Card title="Mailchimp" href="/integrations/tools/mailchimp" />

  <Card title="Pinterest" href="/integrations/tools/pinterest" />
</CardGroup>

## Links

* [Customer.io](https://customer.io)
