First-party app
Ontraport

Ontraport

Manage contacts, tasks, tags, campaigns, sequences and orders in Ontraport's CRM and marketing automation platform.

stable Customer Relationship ManagementMarketing

About

Ontraport ships in the w6w first-party pack. It declares 31 actions, 2 health checks, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.ontraport
Version
0.1.0
Author
w6w
Licence
MIT
Categories
Customer Relationship Management · Marketing

Overview

Ontraport is a CRM and marketing automation platform built around one generic “Object” model: every record — a contact, a task, a tag, an order — is an instance of a numbered object type (a contact is object type 0, a task is object type 1, and so on), and the API exposes both a generic /objects family that takes that number as a parameter and dedicated per-object endpoints (/Contact, /Contacts, /Task, /Tags, …) that don’t.

This app covers the core CRM path over the dedicated endpoints: full CRUD on contacts, plus merge-by-email; reading and life-cycle-managing tasks (Ontraport’s own permission table refuses task creation and deletion through the API entirely — only read, update, assign, cancel, complete and reschedule exist); full CRUD on tags plus tagging/untagging any object by name; read access to campaigns (Ontraport’s automations) and sequences; and read (plus delete, where documented) access to orders, transactions and purchases.

Every path, parameter and object-type number here was verified against Ontraport’s own API reference at api.ontraport.com/doc, cross-checked with live probes against api.ontraport.com and the vendor’s Statuspage instance.

Build with Ontraport

Three routes to the same 31 actions. The Workflow tab is generated from Ontraport'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.

Get Campaign

campaign-get

Fetch a single campaign (automation) by ID.

List Campaigns

campaign-list

List campaigns (automations) — read-only; campaigns are built in the Ontraport editor, not through the API.

Create Contact

contact-create

Create a new contact. Allows duplicate emails — use Merge or Create Contact to avoid duplicates.

Delete Contact

contact-delete

Permanently delete a single contact by ID.

Get Contact

contact-get

Fetch all information for a single contact by ID.

List Contacts

contact-list

Retrieve a collection of contacts, filtered, sorted and paginated.

Merge or Create Contact

contact-merge

Update the contact matching the given email (or unique ID), or create a new one if no match exists.

Update Contact

contact-update

Update an existing contact by ID or unique ID. Only supplied fields change.

Delete Order

order-delete

Permanently delete a single order by ID.

Get Order

order-get

Fetch all information for a single order by ID.

List Orders

order-list

Retrieve a collection of orders, filtered, sorted and paginated.

Get Purchase

purchase-get

Fetch all information for a single purchase by ID.

List Purchases

purchase-list

Retrieve a collection of purchases, filtered, sorted and paginated.

Get Sequence

sequence-get

Fetch a single sequence by ID via the generic Objects endpoint.

List Sequences

sequence-list

List sequences via the generic Objects endpoint (Sequence has no dedicated endpoint of its own).

Apply Tags by Name

tag-apply

Apply one or more tags, by name, to one or more objects. Creates any tag that doesn't already exist for the object type.

Create Tag

tag-create

Create a new tag for an object type. Defaults to Contacts.

Delete Tag

tag-delete

Permanently delete a tag by ID. Any object with this tag has it removed.

Get Tag

tag-get

Fetch a single tag by ID.

List Tags

tag-list

Retrieve a collection of tags, filtered, sorted and paginated.

Remove Tags by Name

tag-remove

Remove one or more tags, by name, from one or more objects. Nonexistent tag names are ignored.

Rename Tag

tag-update

Rename an existing tag by ID. Every object with this tag keeps it under the new name.

Assign Task

task-assign

Assign a task message to one or more contacts, creating the task(s).

Cancel Task

task-cancel

Cancel one or more tasks by ID, or by Group ID / Condition for a bulk cancel.

Complete Task

task-complete

Mark one or more tasks as completed, optionally recording an outcome and updating related object fields.

Get Task

task-get

Fetch all information for a single task by ID.

List Tasks

task-list

Retrieve a collection of tasks, filtered, sorted and paginated.

Reschedule Task

task-reschedule

Reschedule a single task for a different date and time.

Update Task

task-update

Reassign a task, change its due date, or change its status.

Get Transaction

transaction-get

Fetch all information for a single transaction by ID.

List Transactions

transaction-list

Retrieve a collection of transactions, filtered, sorted and paginated.

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 Ontraport's real ids.

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

Here are some of the things you can do

  • Get Campaign

    read
    campaign-get
  • List Campaigns

    search
    campaign-list
  • Create Contact

    perform
    contact-create
  • Get Contact

    read
    contact-get
  • List Contacts

    search
    contact-list

+26 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 Ontraport, 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 Ontraport. 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-get",
  payload: {
    id: "<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-get --payload '{"id":"<value>"}'

Give an AI agent Ontraport — without giving it Ontraport'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.ontraport#campaign-get",
    "input": {
      "id": "<id>"
    }
  }
}

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 Ontraport 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

Ontraport'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. Ontraport itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

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

service

Ontraport platform status

The API component from ontraport.statuspage.io, scoped away from the page's many non-API components (Landing Pages, Payment Forms, Hosted Wordpress Sites, DNS, ...).

quota

Rate-limit headroom

Requests remaining in the current rolling one-minute window, read from the X-Rate-Limit-* response headers Ontraport attaches to every request.