Install
openclaw skills install e-goiE-goi integration. Manage Organizations. Use when the user wants to interact with E-goi data.
openclaw skills install e-goiE-goi is a marketing automation platform. It's used by businesses to manage email marketing, SMS campaigns, and other communication channels. They target small to medium-sized businesses looking for an all-in-one marketing solution.
Official docs: https://apidocs.e-goi.com/
Use action names and parameters as needed.
This skill uses the Membrane CLI to interact with E-goi. Membrane handles authentication and credentials refresh automatically — so you can focus on the integration logic rather than auth plumbing.
Install the Membrane CLI so you can run membrane from the terminal:
npm install -g @membranehq/cli@latest
membrane login --tenant --clientName=<agentType>
This will either open a browser for authentication or print an authorization URL to the console, depending on whether interactive mode is available.
Headless environments: The command will print an authorization URL. Ask the user to open it in a browser. When they see a code after completing login, finish with:
membrane login complete <code>
Add --json to any command for machine-readable JSON output.
Agent Types : claude, openclaw, codex, warp, windsurf, etc. Those will be used to adjust tooling to be used best with your harness
Use membrane connection ensure to find or create a connection by app URL or domain:
membrane connection ensure "https://www.e-goi.com" --json
The user completes authentication in the browser. The output contains the new connection id.
This is the fastest way to get a connection. The URL is normalized to a domain and matched against known apps. If no app is found, one is created and a connector is built automatically.
If the returned connection has state: "READY", skip to Step 2.
If the connection is in BUILDING state, poll until it's ready:
npx @membranehq/cli connection get <id> --wait --json
The --wait flag long-polls (up to --timeout seconds, default 30) until the state changes. Keep polling until state is no longer BUILDING.
The resulting state tells you what to do next:
READY — connection is fully set up. Skip to Step 2.
CLIENT_ACTION_REQUIRED — the user or agent needs to do something. The clientAction object describes the required action:
clientAction.type — the kind of action needed:
"connect" — user needs to authenticate (OAuth, API key, etc.). This covers initial authentication and re-authentication for disconnected connections."provide-input" — more information is needed (e.g. which app to connect to).clientAction.description — human-readable explanation of what's needed.clientAction.uiUrl (optional) — URL to a pre-built UI where the user can complete the action. Show this to the user when present.clientAction.agentInstructions (optional) — instructions for the AI agent on how to proceed programmatically.After the user completes the action (e.g. authenticates in the browser), poll again with membrane connection get <id> --json to check if the state moved to READY.
CONFIGURATION_ERROR or SETUP_FAILED — something went wrong. Check the error field for details.
Search using a natural language description of what you want to do:
membrane action list --connectionId=CONNECTION_ID --intent "QUERY" --limit 10 --json
You should always search for actions in the context of a specific connection.
Each result includes id, name, description, inputSchema (what parameters the action accepts), and outputSchema (what it returns).
| Name | Key | Description |
|---|---|---|
| List Lists | list-lists | Get all contact lists |
| List Contacts | list-contacts | Get all contacts from a list |
| List Campaigns | list-campaigns | Get all campaigns |
| List Segments | list-segments | Get all segments from a list |
| List Tags | list-tags | Get all tags |
| List Email Senders | list-email-senders | Get all email senders |
| Get List | get-list | Get a specific contact list by ID |
| Get Contact | get-contact | Get a specific contact by ID |
| Get Email Campaign Report | get-email-campaign-report | Get email campaign report and statistics |
| Create List | create-list | Create a new contact list |
| Create Contact | create-contact | Create a new contact in a list |
| Create Email Campaign | create-email-campaign | Create a new email campaign |
| Create SMS Campaign | create-sms-campaign | Create a new SMS campaign |
| Create Tag | create-tag | Create a new tag |
| Create Segment | create-segment | Create a new saved segment in a list |
| Create Email Sender | create-email-sender | Create a new email sender |
| Update List | update-list | Update a specific contact list |
| Update Contact | update-contact | Update an existing contact |
| Update Tag | update-tag | Update an existing tag |
| Delete List | delete-list | Remove a contact list |
membrane action run <actionId> --connectionId=CONNECTION_ID --json
To pass JSON parameters:
membrane action run <actionId> --connectionId=CONNECTION_ID --input '{"key": "value"}' --json
The result is in the output field of the response.
When the available actions don't cover your use case, you can send requests directly to the E-goi API through Membrane's proxy. Membrane automatically appends the base URL to the path you provide and injects the correct authentication headers — including transparent credential refresh if they expire.
membrane request CONNECTION_ID /path/to/endpoint
Common options:
| Flag | Description |
|---|---|
-X, --method | HTTP method (GET, POST, PUT, PATCH, DELETE). Defaults to GET |
-H, --header | Add a request header (repeatable), e.g. -H "Accept: application/json" |
-d, --data | Request body (string) |
--json | Shorthand to send a JSON body and set Content-Type: application/json |
--rawData | Send the body as-is without any processing |
--query | Query-string parameter (repeatable), e.g. --query "limit=10" |
--pathParam | Path parameter (repeatable), e.g. --pathParam "id=123" |
membrane action list --intent=QUERY (replace QUERY with your intent) to find existing actions before writing custom API calls. Pre-built actions handle pagination, field mapping, and edge cases that raw API calls miss.