Install
openclaw skills install sendgrid-emailSendGrid email integration with API key authentication. Manage marketing campaigns, transactional templates, contacts, suppression lists, sender identities, IP pools, and event webhooks via the SendGrid API.
openclaw skills install sendgrid-emailConnect to Twilio SendGrid to manage email marketing campaigns, transactional templates, contacts, suppression lists, sender identities, IP address pools, and event webhooks.
This skill uses ClawLink for hosted connection flows and credentials so you do not need to configure SendGrid API access yourself.
| Step 1: Install | Step 2: Pair Account | Step 3: Connect SendGrid |
|---|---|---|
![]() | ![]() | App-specific connection GIF coming soon |
| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect SendGrid |
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ OpenClaw │────▶│ ClawLink │────▶│ SendGrid API │
│ (User Chat) │ │ (Proxy) │ │ (Email, Marketing│
│ │ │ │ │ Campaigns) │
└─────────────────┘ └──────────────┘ └──────────────────┘
│ │ │
│ 1. Install Plugin │ │
│ 2. Pair Device │ │
│ 3. Connect SendGrid │ │
│ │ 4. API Key Proxy │
│ │ 5. Request Forward │
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ SKILL │ │ Dashboard│ │ SendGrid│
│ File │ │ Auth │ │ Cloud │
└──────────┘ └──────────┘ └──────────┘
Install the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.
openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
Then tell the user: "OpenClaw has been restarted. Send /new as a standalone message to start a fresh chat, then ask for SendGrid again."
# Check account verification status
clawlink_call_tool --tool "sendgrid_completed_steps"
# Create a new contact
clawlink_call_tool --tool "sendgrid_add_or_update_a_contact" --params '{"contacts": [{"email": "alice@example.com", "first_name": "Alice", "last_name": "Smith"}]}'
# Create a transactional template
clawlink_call_tool --tool "sendgrid_create_a_transactional_template" --params '{"name": "Welcome Email Template"}'
All SendGrid tool calls are authenticated automatically by ClawLink using your SendGrid API key stored securely in the dashboard.
No API key is required in chat. ClawLink injects your API key into every SendGrid API request on your behalf.
clawlink_begin_pairing if it is not configured yet.clawlink_list_integrations to verify the connection is active.clawlink_list_integrations
Response: Returns all connected integrations. Look for sendgrid in the list.
clawlink_list_tools --integration sendgrid
Response: Returns the live tool catalog for SendGrid.
If SendGrid tools are missing or the connection shows an error:
clawlink_list_integrations to verifyclawlink_list_tools --integration sendgrid| Tool | Description | Mode |
|---|---|---|
sendgrid_completed_steps | Retrieve verification status of Domain Authentication and Single Sender Verification | Read |
| Tool | Description | Mode |
|---|---|---|
sendgrid_add_or_update_a_contact | Add or update contacts asynchronously (matched by email, phone, external_id; returns job_id) | Write |
sendgrid_create_a_list | Create a new contact list in Marketing Campaigns | Write |
sendgrid_create_list | Create a new contact list (up to 1000 lists per account; names must be unique) | Write |
sendgrid_create_a_segment | Create a segment using SQL-like conditions for targeted campaigns | Write |
sendgrid_create_segment | Create a contact segment using Segmentation V2 API | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_a_campaign | Create a marketing campaign with subject, sender, content, and list/segment | Write |
sendgrid_create_single_send | Create a Single Send draft (uses email_config; scheduling requires separate endpoint) | Write |
sendgrid_bulk_delete_single_sends | Permanently delete multiple Single Sends by ID (up to 1000 per request) | Write |
sendgrid_cancel_or_pause_a_scheduled_send | Cancel or pause scheduled email sends by batch_id | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_a_transactional_template | Create a transactional email template (up to 300 per account) | Write |
sendgrid_create_a_new_transactional_template_version | Create a new version of a transactional template | Write |
sendgrid_activate_template_version | Activate a specific version as the default for a template | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_a_sender | Create a sender identity for Marketing Campaigns (up to 100 unique senders) | Write |
sendgrid_create_a_sender_identity | Create a new sender identity with from address and identity details | Write |
sendgrid_create_verified_sender_request | Create a sender identity via POST and send a verification email | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_add_suppressions_to_a_suppression_group | Add email addresses to an unsubscribe group | Write |
sendgrid_add_to_global_suppressions_group | Add email addresses to the global suppression group (idempotent) | Write |
sendgrid_delete_a_bounce | Remove an email from the bounce suppression list | Write |
sendgrid_delete_a_global_suppression | Remove an email from suppressions to allow future delivery | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_add_a_twilio_send_grid_ip_address | Provision a new dedicated IP address (Pro/Premier plans only; additional cost) | Write |
sendgrid_add_ips | Add dedicated IP addresses to the account | Write |
sendgrid_create_an_ip_pool | Create a new IP pool to group dedicated IPs | Write |
sendgrid_create_an_ip_pool_with_a_name_and_ip_assignments | Create an IP pool and assign IPs in a single atomic operation | Write |
sendgrid_add_an_ip_address_to_a_pool | Add a dedicated IP address to an existing pool | Write |
sendgrid_assign_a_batch_of_subusers_to_an_ip | Assign multiple subusers to a specified IP address | Write |
sendgrid_delete_a_batch_of_ips_from_an_ip_pool | Remove IPs from a pool (IPs remain in account, not deleted) | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_authenticate_a_domain | Enable domain authentication for users or subusers | Write |
sendgrid_associate_an_authenticated_domain_with_a_given_user | Associate an authenticated domain with a subuser | Write |
sendgrid_add_an_ip_to_an_authenticated_domain | Add an IP address to an authenticated domain for custom SPF | Write |
sendgrid_bind_authenticated_domains_to_user | Associate additional authenticated domains with a subuser (up to 5) | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_a_branded_link | Create a new branded link for link tracking | Write |
sendgrid_associate_a_branded_link_with_a_subuser | Associate a branded link with a subuser for link tracking | Write |
sendgrid_delete_a_branded_link | Permanently delete a branded link | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_a_new_alert | Create an alert (usage_limit or stats_notification type) | Write |
sendgrid_create_a_new_event_webhook | Set up an Event Webhook with URL, events, and OAuth/signature verification | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_a_parse_setting | Create an Inbound Parse Webhook setting to receive and parse incoming emails | Write |
sendgrid_delete_a_parse_setting | Delete a specific inbound parse webhook setting by hostname | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_a_custom_field | Create a custom field for storing additional contact information (up to 120 per account) | Write |
sendgrid_create_custom_field_definition | Create a unique case-insensitive custom field definition | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_design | Create a new email design in the SendGrid Design Library | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_integration | Create a SendGrid Marketing Integration for forwarding events to Segment | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_api_keys | Create a new SendGrid API key with specified permissions (up to 100 keys) | Write |
sendgrid_add_one_or_more_ips_to_the_allow_list | Add IPv4 addresses to IP access management allow list (max 1000 total) | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_an_sso_integration | Create a SAML 2.0 SSO integration with an Identity Provider | Write |
sendgrid_create_an_sso_certificate | Create an SSO certificate for SAML 2.0 authentication | Write |
sendgrid_create_an_sso_teammate | Create an SSO Teammate (requires Enterprise account with SSO enabled) | Write |
sendgrid_approve_access_request | Approve a teammate's access request (admin only) | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_an_account | Create a new customer account (reseller partners only) | Write |
sendgrid_authenticate_an_account_with_single_sign_on | Generate a one-time SSO URL for a customer's Twilio SendGrid account (reseller partners only) | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_subuser | Create a new subuser account | Write |
| Tool | Description | Mode |
|---|---|---|
sendgrid_create_a_batch_id | Generate a new mail batch ID to group multiple email sends | Write |
clawlink_call_tool --tool "sendgrid_add_or_update_a_contact" \
--params '{
"contacts": [
{"email": "alice@example.com", "first_name": "Alice", "last_name": "Smith", "custom_fields": {"industry": "tech"}}
]
}'
clawlink_call_tool --tool "sendgrid_create_a_new_transactional_template_version" \
--params '{
"template_id": "YOUR_TEMPLATE_ID",
"active": 1,
"name": "Version 2",
"html_content": "<html><body><h1>Welcome {{name}}!</h1></body></html>"
}'
clawlink_call_tool --tool "sendgrid_create_a_new_suppression_group" \
--params '{
"name": "Newsletter Unsubscribes",
"description": "Recipients who opted out of newsletter emails"
}'
clawlink_call_tool --tool "sendgrid_add_one_or_more_ips_to_the_allow_list" \
--params '{"ips": ["192.168.1.0/24", "10.0.0.1"]}'
clawlink_call_tool --tool "sendgrid_create_a_new_event_webhook" \
--params '{
"url": "https://your-app.com/webhook/sendgrid",
"events": ["delivered", "open", "click", "bounce", "dropped"]
}'
clawlink_list_integrations to confirm SendGrid is connected.clawlink_list_tools --integration sendgrid to see the live catalog.clawlink_search_tools with a short query and integration sendgrid.┌─────────────────────────────────────────────────────────────┐
│ READ OPERATIONS (Safe) │
│ list → get → describe → call │
│ │
│ Example: Check verification status → List contacts │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ WRITE OPERATIONS (Require Confirmation) │
│ describe → preview → confirm → call │
│ │
│ Example: Describe tool → Preview changes → User approves │
│ → Execute create │
└─────────────────────────────────────────────────────────────┘
clawlink_describe_tool first.whenToUse, askBefore, safeDefaults, examples, and followups to shape the call.clawlink_preview_tool first.clawlink_call_tool. Pass confirmation only after the preview matches the user's intent.create_an_account, authenticate_an_account_with_single_sign_on) return 403 for non-partner accounts.add_or_update_a_contact returns a job_id for tracking import status.| Status / Error | Meaning |
|---|---|
| Tool not found | The tool name does not exist in the current catalog. Verify with clawlink_list_tools --integration sendgrid. |
| Missing connection | SendGrid is not connected. Direct the user to https://claw-link.dev/dashboard?add=sendgrid. |
403 Forbidden | The API key lacks permissions for this operation, or the feature requires a higher plan (Pro/Premier/Enterprise). |
400 Bad Request | Invalid parameters — check the tool schema with clawlink_describe_tool. |
404 Not Found | The referenced resource (campaign, template, IP) does not exist. |
429 Too Many Requests | Rate limit exceeded — wait and retry with exponential backoff. |
| Write rejected | User did not confirm a write action. Always confirm before executing writes. |
openclaw plugins list
/new as a standalone message to reload the catalog.openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
/new again and retry.sendgrid.clawlink_describe_tool to verify parameter names and types before calling.clawlink_preview_tool first.Powered by ClawLink — an integration hub for OpenClaw
