Renatus Icm
Manage Renatus event campaigns by setting up landing pages, running email blasts, handling guest registrations, exporting leads, and syncing unsubscribes. Skill: Renatus Icm Owner: earlvanze Summary: Manage Renatus event campaigns by setting up landing pages, running email blasts, handling guest registrations, exporting leads, and syncing unsubscribes. Tags: latest:2.1.5 Version history: v2.1.5 | 2026-07-22T17:34:06.286Z | user Add sanitized Renatus Back Office order-entry API reference and safety preflight. v2.1.4 | 2026-04-04T18:43:14.351Z | user Add Bitwarden/Browse
Rank
62
Safety
84
Downloads
2.0k
Updated
Oct 9, 2026
Version
2.1.5
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 2K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 2K downloadsadoption · observed Oct 9, 2026
- Latest release
- 2.1.5release · observed Jul 22, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17e9q72w7rrtswh8zeszvr87s8476ga:renatus-icm- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-earlvanze-renatus-icm/snapshot"
Documentation
CLAWHUB
152,199 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
--- name: renatus-icm description: Manage Renatus event marketing campaigns as an ICM. Use when running event registration campaigns, sending commercial email blasts, setting up event landing pages, exporting leads from Supabase, syncing unsubscribes to Renatus, or performing browser-based guest registration via CDP. Requires: Renatus credentials, Supabase project, SMTP sender account. Trigger phrases: "run a Renatus event campaign", "send Renatus email campaign", "register a guest for Renatus", "download Renatus leads", "set up event landing page". --- ## ⚠️ Credentials & Security **Required environment variables** (declare these before running any script): | Variable | Purpose | Minimum Scope | |---|---|---| | `RENATUS_USERNAME` | Renatus back office login | ICM-level account | | `RENATUS_PASSWORD` | Renatus back office login | ICM-level account | | `SUPABASE_URL` | Supabase project URL | Read leads | | `LEAD_ADMIN_TOKEN` | Supabase admin export | `anon` key or limited service role | | `SENDER_EMAIL` | From address for campaigns | Send-only SMTP account | | `SENDER_PASSWORD` | SMTP auth for email | Send-only | | `SUPABASE_SERVICE_ROLE_KEY` | Supabase admin actions (destructive) | Service role — do not use for read-only ops | **Security recommendations:** - Use a dedicated Supabase project for testing — do not supply your production `service_role_key` - Create a least-privilege Supabase anon key scoped to `funnel_leads` table reads only - Use a separate Chrome/Brave **profile** for CDP access (not your main browser session) - `renatus_delete_lead.py` performs deletions — always run with `--dry-run` first - Rotate credentials after use; revoke tokens that were shared or exposed - Do not commit real credentials to `config.json` — use the `.example` file and environment variables **CDP access:** Scripts connect to `http://127.0.0.1:9222` to inspect your browser's localStorage/cookies for Renatus auth tokens. This requires Chrome/Brave launched with `--remote-debugging-port=9222`. The skill does not extract your master Renatus password from CDP — it reads existing session tokens only. --- name: renatus-icm description: Run a Renatus event marketing campaign as an ICM (Independent Campaign Manager). Use when managing Renatus event registrations, sending commercial email campaigns, setting up event landing pages, downloading/exporting leads, syncing unsubscribes to Renatus, or performing browser-based guest registration via CDP. Handles: Supabase Edge Function registration (submit-renatus-registration), gws/gog email sending (commercial-core-day1), bounce detection and SMS recovery, CDP browser registration/delete scripts, weekly unsubscribe cron, and lead export via lead-admin-export. Trigger phrases: "run a Renatus event campaign", "send Renatus email campaign", "register a guest for Renatus", "download Renatus leads", "set up event landing page", "handle Renatus unsubscribes". --- # Renatus ICM Skill Complete toolkit for running a Renatus ev
_meta.json
{
"ownerId": "kn7a5vdq619nymw8zq4aq95b49846rhq",
"slug": "renatus-icm",
"version": "2.1.5",
"publishedAt": 1784741646286
}references/email-campaign.md
# Email Campaign Guide ## Overview Commercial email campaigns are sent from `[email protected]` via gws CLI. The email template is `commercial-core-day1.html`. Campaigns target leads from `renatus_leads.csv` and track delivery via `logs/email_send_log.json`. ## Campaign Assets | File | Purpose | |---|---| | `email/commercial-core-day1.html` | HTML email template | | `renatus_leads.csv` | Lead list (export via `renatus_leads.py --export`) | | `logs/email_send_log.json` | Sent log (resumable sends) | | `logs/bounced_emails.json` | Bounced email tracking | ### Getting the Leads CSV ```bash # Export fresh from Supabase python3 scripts/renatus_leads.py --export # Convert existing JSON to CSV (if you have old JSON export) python3 scripts/renatus_leads.py --convert-json ``` ## Sending Emails ### Prerequisites - `gws` CLI authenticated as `[email protected]` - `renatus_leads.csv` exists with at least `email` column - `commercial-core-day1.html` template ### Dry Run (Preview) ```bash python3 scripts/send_commercial_email_batches.py --dry-run ``` ### Send in Batches (with Resume) ```bash # First batch python3 scripts/send_commercial_email_batches.py --batch-size 20 --start 0 --send # Resume from batch 2 python3 scripts/send_commercial_email_batches.py --batch-size 20 --start 20 --send # Resume from batch 3 python3 scripts/send_commercial_email_batches.py --batch-size 20 --start 40 --send ``` ### Batch Script Flags | Flag | Default | Description | |---|---|---| | `--batch-size` | 20 | Emails per batch | | `--start` | 0 | Starting index | | `--dry-run` | — | Preview without sending | | `--send` | — | Actually send | | `--delay` | 2.0 | Seconds between sends | ## Personalizing the Template The template uses `{{recipient_email}}` as a placeholder for the unsubscribe link target. ### Adding Personalized Unsubscribe URL Replace `{{recipient_email}}` with a base64-encoded unsubscribe URL: ```python import base64 def encode_unsubscribe_url(email: str, base_url: str = "https://YOUR_DOMAIN/unsubscribe.html") -> str: encoded = base64.urlsafe_b64encode(email.encode()).decode().rstrip('=') return f"{base_url}?e={encoded}" ``` ### Unsubscribe URL in Email Template ```html <a href="https://YOUR_DOMAIN/unsubscribe.html?e={{recipient_email}}" style="color: #999999; font-size: 12px;"> Unsubscribe </a> ``` When the user clicks unsubscribe, their email is pre-filled and they confirm removal. ## Subject Line Options Tested subject lines for Commercial Core: 1. `They turned $7K into $103M. Learn how (April 16)` 2. `Commercial real estate: free training from $100M operators` 3. `[Only 9 days] Learn commercial underwriting from operators` 4. `From skeptical to 90+ doors in 8 months (free training)` ## Bounce Handling ### Check for Bounces ```bash python3 scripts/handle_bounced_emails.py --check ``` ### Export Bounced Contacts with Phone Numbers for SMS ```bash python3 scripts/handle_bounced_emails.py --export-sms # Output: logs/sms_fo
references/event-page-setup.md
# Event Page Setup Guide
## Overview
The event landing page is a static HTML form at `site/commercial/index.html` (or similar path on your hostinger/YOUR_DOMAIN deployment). It submits directly to a Supabase Edge Function which registers the lead in Renatus Back Office.
## Page Structure
### Registration Form Fields
- `firstName` (required)
- `lastName` (required)
- `email` (required)
- `phone` (required)
- `website` (honeypot — hidden, must be empty)
- `source_page` (auto-populated from `window.location.href`)
### Submit Endpoint
```
POST https://<PROJECT_REF>.supabase.co/submit-renatus-registration
```
### Request Body
```json
{
"firstName": "Jane",
"lastName": "Smith",
"email": "[email protected]",
"phone": "(555) 555-5555",
"website": "",
"source_page": "https://YOUR_DOMAIN/commercial/"
}
```
### Success Response
```json
{
"ok": true,
"eventId": "0817966f-b9bb-448e-bbb8-b4160115bcc8",
"eventName": "Commercial Core - Live Education",
"registrationId": "...",
"leadId": "...",
"guestUserId": "...",
"registeredSessions": ["Session Name 1", "Session Name 2"]
}
```
### Error Response
```json
{ "error": "Error message", "details": "optional details" }
```
## Setting Up a New Event Page
### 1. Copy the Template
Copy `site/commercial/index.html` to a new directory, e.g., `site/<event-slug>/index.html`
### 2. Update the Edge Function URL
In the `<script>` section, update:
```javascript
const EDGE_URL = 'https://<PROJECT_REF>.supabase.co/submit-renatus-registration';
```
### 3. Update Event Details
Update the visible event details in the HTML (date, location, speakers, description).
### 4. Update the Event ID
Either:
- Set `RENATUS_EVENT_ID` secret in Supabase (affects all form submissions)
- Add `eventId` field to the form and pass it in the payload
### 5. Get the Event GUID from Renatus
1. Log into `backoffice.myrenatus.com`
2. Navigate to Events
3. Open the event
4. Copy the event GUID from the URL or API response
### 6. Verify Registration Flow
Submit a test registration and confirm:
- Lead appears in `funnel_leads` table
- Lead appears in Renatus Back Office
- Email confirmation is sent by Renatus
## Customizing the Landing Page
### Styling
The page uses CSS custom properties for easy theming:
```css
:root {
--bg: #0f172a;
--card: #111827;
--accent: #22c55e;
--text: #e5e7eb;
}
```
### Adding a Second Event (In-Person Option)
Modify the `feesPayload` to include multiple sessions, or use separate event pages with different event IDs.
### Redirect to Confirmation Page
After successful form submission:
```javascript
if (resp.ok) {
window.location.href = '/confirmation.html';
}
```
## Hosting Options
### Option A: Deploy with your hosting scripts
```bash
python3 scripts/deploy_hostinger.py
```
### Option B: Manual FTP Upload
Upload `site/commercial/` directory to your web host's `public_html/` or equivalent.
### Option C: Subdirectory on Existing Site
Upload to `public_html/commercial/` — page wireferences/order-entry-backoffice-api.md
# Renatus Back Office Order Entry API
This reference is a sanitized, capture-derived map of the Renatus **Orders** page. It records endpoint paths, parameter names, status counts, and JSON key shapes only. It contains no captured credentials, identifiers, addresses, payment data, or response records.
## Safety Boundary
- The capture showed authenticated browser transport through `backoffice.myrenatus.com`; use a current, logged-in Chrome/Brave CDP session. Do not reuse values from the HAR.
- Read calls use `GET /api/queryproxy/execute?url=<target-path>` with target-specific parameters appended to the proxy request.
- Command calls use `POST /api/commandproxy/execute?url=<target-path>` with JSON bodies. The observed browser requests used `x-requested-with` and an XSRF header.
- `POST` endpoints below can create a lead or save an order. They are external actions: run a dry-run/read preflight first and do not call them unless the user explicitly approves the exact customer, products, payment method, and submission state.
- Do not replay captured payloads. Build values from the live browser session and the authorized order only.
## Capture Scope
The July 22, 2026 order-entry capture contains 78 network entries. All 50 query-proxy calls and all four command-proxy calls returned HTTP 200. It covers the Orders page, lead/customer selection, product and payment lookup, and one successful order-container save.
## Read Endpoints
| Target path | Parameters observed | Use |
|---|---|---|
| `/api/orders/customersList` | `Value` | Customer search/list |
| `/api/orders/sellersList` | `Value` | Seller search/list |
| `/api/orders/containers/search` | `CurrentPage`, `PageSize`, `SortDirection`, `SortField`, `TotalCount`, `UserId`, `StatusFilter[n][Join]`, `StatusFilter[n][Data][Item]`, `StatusFilter[n][Data][Operation]` | Existing order-container list |
| `/api/orders/products` | — | Product catalog |
| `/api/orders/agreements` | — | Agreement catalog |
| `/api/orders/availableproductsforcustomer` | `BuyerLeadId`, `IsInternational`, `LeadCountryCode` | Products eligible for the selected customer |
| `/api/orderpayments/downpayments` | `CountryCode`, `ProductIds[]` | Down-payment options for selected products |
| `/api/paymentMethod/getUserPaymentMethods` | `CurrentDate`, `UserId` | Saved payment methods |
| `/api/marketinglead/validatelead` | `Value` | Lead validation |
| `/api/userprofile/current` | — | Current authenticated user |
The page also loads campaign/status, settings, domain, notification, grid-filter, and event-status data. Those calls are contextual UI support, not required order-entry mutations.
## Observed Command Endpoints and Payload Shapes
### `POST /api/marketingLead/customerbyleadid`
Observed twice, returning HTTP 200. JSON shape:
```json
{ "Value": "string", "Key": "string" }
```
### `POST /api/guestRegistration/addcustomer`
Observed once, returning HTTP 200. This can create a customer/lead. JSON key shape:
```text
LeadId, OwneAionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/earlvanze/skills/renatus-icm",
"sourceUrl": "https://clawhub.ai/earlvanze/skills/renatus-icm",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T20:49:14.416Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-earlvanze-renatus-icm/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-earlvanze-renatus-icm/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T20:49:14.416Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "2K downloads",
"href": "https://clawhub.ai/earlvanze/renatus-icm",
"sourceUrl": "https://clawhub.ai/earlvanze/renatus-icm",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T20:49:14.416Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "2.1.5",
"href": "https://clawhub.ai/earlvanze/renatus-icm",
"sourceUrl": "https://clawhub.ai/earlvanze/renatus-icm",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-07-22T17:34:06.286Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-earlvanze-renatus-icm/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-earlvanze-renatus-icm/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 2.1.5",
"description": "Add sanitized Renatus Back Office order-entry API reference and safety preflight.",
"href": "https://clawhub.ai/earlvanze/renatus-icm",
"sourceUrl": "https://clawhub.ai/earlvanze/renatus-icm",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-07-22T17:34:06.286Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
