First-party app
systeme.io

systeme.io

Manage contacts, tags, funnels, email campaigns and newsletters, courses and communities, and webhooks on systeme.io.

stable Marketing

About

systeme.io ships in the w6w first-party pack. It declares 41 actions, 1 health check, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.systemeio
Version
0.1.1
Author
w6w
Licence
MIT
Categories
Marketing

Overview

systeme.io manages contacts, tags, funnels, email campaigns and newsletters, courses and enrollments, communities and memberships, and outbound webhooks — the full breadth of systeme.io’s all-in-one marketing platform, at the granularity its public API actually exposes. Contacts can be created, tagged and updated; funnels, campaigns and newsletters can be created, read and updated; course enrollments and community memberships can be managed; and webhooks can be registered so a workflow reacts to systeme.io’s own events rather than polling for them.

Partial updates use systeme.io’s own merge-patch format so an update only touches the fields actually sent, and pagination follows systeme.io’s own cursor convention, always keyed off the last item returned rather than a page number. Because systeme.io publishes no account or profile endpoint, connection health is checked against a harmless list of custom field definitions rather than a page of real contact data.

Authoring the actual content inside a funnel or campaign — individual pages and emails — is left to systeme.io’s own visual editor, and billing surfaces like coupons, price plans and subscriptions sit outside this app’s marketing-automation focus.

Build with systeme.io

Three routes to the same 41 actions. The Workflow tab is generated from systeme.io's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

Create Email Campaign

campaign-create

Create an automated email Campaign. Its steps are authored in the campaign editor.

Delete Email Campaign

campaign-delete

Remove a Campaign resource.

Get Email Campaign

campaign-get

Retrieve a single Campaign resource by id.

List Email Campaigns

campaign-list

Retrieve the collection of automated email Campaign resources.

Update Email Campaign

campaign-update

Update a Campaign's name, sender email and/or description.

List Communities

community-list

Retrieve the collection of Community resources.

Create Contact

contact-create

Create a Contact resource. Re-creating a recently deleted email may inherit some of its prior properties — deletion is not immediate on systeme.io's side.

Delete Contact

contact-delete

Remove a Contact resource. Actual data deletion may take several days on systeme.io's side.

Create Contact Field

contact-field-create

Create a custom ContactField definition.

Delete Contact Field

contact-field-delete

Remove a custom ContactField definition.

List Contact Fields

contact-field-list

Retrieve the collection of custom ContactField definitions.

Update Contact Field

contact-field-update

Rename a custom ContactField definition. The slug itself cannot be changed.

Get Contact

contact-get

Retrieve a single Contact resource by id.

List Contacts

contact-list

Retrieve the collection of Contact resources, with optional filters.

Add Tag to Contact

contact-tag-add

Assign a Tag to a Contact.

Remove Tag from Contact

contact-tag-remove

Remove a Tag from a Contact.

Update Contact

contact-update

Update a Contact's locale and/or custom fields. Email cannot be changed — the vendor's own patch schema has no email property.

List Courses

course-list

Retrieve the collection of Course resources.

Enroll Contact in Course

enrollment-create

Create an Enrollment resource, giving a Contact access to a Course.

Delete Enrollment

enrollment-delete

Remove an Enrollment resource, revoking the contact's course access.

List Enrollments

enrollment-list

Retrieve the collection of Enrollment resources.

Create Funnel

funnel-create

Create an empty Funnel resource. Steps are added in the systeme.io page editor.

Get Funnel

funnel-get

Retrieve a single Funnel resource by id.

List Funnels

funnel-list

Retrieve the collection of Funnel resources.

Add Contact to Community

membership-create

Create a Membership resource, adding a Contact to a Community. Processed asynchronously — the API answers 202 Accepted with no resource body.

Remove Contact from Community

membership-delete

Remove a Membership resource.

List Community Memberships

membership-list

Retrieve the collection of Membership resources.

Create Newsletter

newsletter-create

Create a one-off Newsletter (email blast).

Get Newsletter

newsletter-get

Retrieve a single Newsletter resource by id, including its body.

List Newsletters

newsletter-list

Retrieve the collection of one-off Newsletter resources.

Update Newsletter

newsletter-update

Update a Newsletter's content. Only unsent newsletters can meaningfully change.

Create Tag

tag-create

Create a Tag resource.

Delete Tag

tag-delete

Remove a Tag resource.

Get Tag

tag-get

Retrieve a single Tag resource by id.

List Tags

tag-list

Retrieve the collection of Tag resources.

Update Tag

tag-update

Replace a Tag resource's name.

Create Webhook

webhook-create

Register a Webhook that systeme.io calls when a subscribed event fires.

Delete Webhook

webhook-delete

Remove a Webhook resource.

Get Webhook

webhook-get

Retrieve a single Webhook resource by id.

List Webhooks

webhook-list

Retrieve the collection of Webhook resources.

Update Webhook

webhook-update

Update a Webhook's name, signing secret, subscriptions and/or active state. The target URL cannot be changed — the vendor's own update schema has no url property.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying systeme.io's real ids.

{
  "manifestVersion": "2",
  "name": "systemeio-example",
  "steps": [
    {
      "id": "campaign-create",
      "uses": {
        "app": "io.w6w.systemeio",
        "action": "campaign-create",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "name": "<name>"
      }
    }
  ]
}

Here are some of the things you can do

  • Create Email Campaign

    perform
    campaign-create
  • Get Email Campaign

    read
    campaign-get
  • List Email Campaigns

    read
    campaign-list
  • Update Email Campaign

    perform
    campaign-update
  • List Communities

    read
    community-list

+36 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for systeme.io, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to systeme.io. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "campaign-create",
  payload: {
    name: "<value>",
    // senderEmail: "<value>",
    // description: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action campaign-create --payload '{"name":"<value>"}'

Give an AI agent systeme.io — without giving it systeme.io's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.systemeio#campaign-create",
    "input": {
      "name": "<name>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's systeme.io connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

systeme.io's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. systeme.io itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

systeme.io declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

systeme.io platform status