Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Manage your Sensorpro email marketing account in OpenClaw.
Manage your Sensorpro email marketing account in OpenClaw.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Set these environment variables in your OpenClaw .env (or in the shell before running curl): SENSORPRO_API_KEY — API key for the x-apikey header SENSORPRO_ORG — organization code/name SENSORPRO_USER — API username (must be an API user) SENSORPRO_PASS — API user password
From the Sensorpro UI: Go to API → API keys Select “Sensorpro rest API default key” Copy the key value into SENSORPRO_API_KEY If your API key is IP-restricted, whitelist the calling IP (the machine running OpenClaw) The key is passed as an HTTP header: x-apikey: $SENSORPRO_API_KEY
Sensorpro distinguishes between UI users and API users: API users have no UI access but can use the REST API. Normal users have UI access but typically cannot use the REST API. Create a dedicated API user in Sensorpro and set: SENSORPRO_USER to that username SENSORPRO_PASS to that password
Put secrets in ~/.openclaw/.env (or your process manager), not in SKILL.md. Don’t commit .env to git. Rotate the API key if it’s ever pasted into a public place.
IP allowlisting: Sensorpro REST API can be locked to whitelisted IPs. Every response includes Result.TotalErrors; treat 0 as success. Signin token (Token) must be used in the URL path for most endpoints. Logoff: server may require a body (HTTP 411 otherwise). Use -d '{}'.
Signin once → store TOKEN Make one or more API calls Logoff Example (bash): TOKEN=$(curl -sS -X POST "https://apinie.sensorpro.net/auth/sys/signin" \ -H "Content-Type: application/json" \ -H "x-apikey: ${SENSORPRO_API_KEY}" \ -d "{\"Organization\":\"${SENSORPRO_ORG}\",\"User\":\"${SENSORPRO_USER}\",\"Password\":\"${SENSORPRO_PASS}\"}" \ | python3 -c 'import sys,json; print(json.load(sys.stdin).get("Token",""))') # Call an endpoint (example) curl -sS -X POST "https://apinie.sensorpro.net/api/Contact/UpdateAdd/${TOKEN}" \ -H "Content-Type: application/json" \ -d '{"AddToList":[],"Contact":[{"PersonalEMail":"someone@example.com"}],"Options":{"Parameters":{},"Action":""},"ReturnFailedRequests":false,"UpdateByKey":"email","SendWelcomeEmail":false,"SignupFormId":"00000000-0000-0000-0000-000000000000"}' # Log off (some servers require a body) curl -sS -X POST "https://apinie.sensorpro.net/auth/sys/logoff/${TOKEN}" \ -H "Content-Type: application/json" -d '{}'
POST https://apinie.sensorpro.net/auth/sys/signin (header x-apikey required) POST https://apinie.sensorpro.net/auth/sys/logoff/[Token]
Base: https://apinie.sensorpro.net/api/Contact/<Endpoint>/[Token] UpdateAdd (recommended) Add, Update GetContacts, GetContactsPaged UpdateAddAsync, GetUpdateAddAsyncStatus ChangeStatus, ChangeOptOutStatus DeleteContacts, ForgetMe
Base: https://apinie.sensorpro.net/api/campaign/<Endpoint>/[Token] (note casing differs for some Get endpoints) AddCampaign, AddDesign, AddSegment, AddBroadcast
POST https://apinie.sensorpro.net/api/Campaign/GetBroadcastStatus/[Token] POST https://apinie.sensorpro.net/api/campaign/GetCampaignResults/[Token] POST https://apinie.sensorpro.net/api/campaign/GetCampaignResultsLinks/[Token]
POST https://apinie.sensorpro.net/api/Email/SendEmail/[Token]
POST https://apinie.sensorpro.net/api/import/ExecuteFTPImport/[Token] POST https://apinie.sensorpro.net/api/import/GetImportStatus/[Token] POST https://apinie.sensorpro.net/api/import/ClearTagList/[Token]
POST https://apinie.sensorpro.net/api/Account/AddSubOrganization/[Token] POST https://apinie.sensorpro.net/api/Account/AddUpdateUser/[Token]
curl -sS -X POST "https://apinie.sensorpro.net/auth/sys/signin" \ -H "Content-Type: application/json" \ -H "x-apikey: ${SENSORPRO_API_KEY}" \ -d '{"Organization":"'"${SENSORPRO_ORG}"'","User":"'"${SENSORPRO_USER}"'","Password":"'"${SENSORPRO_PASS}"'"}'
curl -sS -X POST "https://apinie.sensorpro.net/api/Contact/UpdateAdd/${TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "AddToList": [], "Contact": [{"PersonalEMail":"someone@example.com","FirstName":"","LastName":""}], "Options":{"Parameters":{},"Action":""}, "ReturnFailedRequests": true, "UpdateByKey": "email", "SendWelcomeEmail": false, "SignupFormId": "00000000-0000-0000-0000-000000000000" }'
curl -sS -X POST "https://apinie.sensorpro.net/api/campaign/GetCampaignResults/${TOKEN}" \ -H "Content-Type: application/json" \ -d '{"CampaignId": 53}'
curl -sS -X POST "https://apinie.sensorpro.net/api/Email/SendEmail/${TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "From": {"DisplayName":"Marketing","Email":"marketing@myco.net"}, "To": [{"DisplayName":"","Email":"recipient@example.com"}], "Cc": [], "Bcc": [], "Headers": {}, "ReplyTo": null, "ReturnPath": null, "Subject": "Hello", "HTMLMessageStyle": "", "HTMLMessageEncoded": "<html><body><p>Hello</p></body></html>", "PlainTextMessage": "Hello", "MsgType": 0, "MailEncoding": "UTF8", "Schedule": {"DelayByMinutes": 0, "DelayUntilUTC": ""} }'
Messaging, meetings, inboxes, CRM, and teammate communication surfaces.
Largest current source with strong distribution and engagement signals.