---
ref: tool:loops/send-event
name: Send an event
company: company:loops
workflows: []
access: [mcp, cli, api]
tags: [capability:send-email, category:email, has:api, has:cli, has:mcp]
docs: https://loops.so/docs/api-reference/send-event
updated: 2026-09-27
---

# Send an event

Sends a named event for a contact, found by email address or user ID, to start the workflows it triggers, and creates the contact if it doesn't exist.

`eventProperties` are available in the emails the event sends, and contact
properties at the top level of the body update the contact. Create properties
in Loops before you send them. Send an `Idempotency-Key` header
(`--idempotency-key` on the CLI): a key reused within 24 hours returns
`409 Conflict`. On the MCP server, `search`, `describe` and `execute` find,
inspect and run this operation.

## Set up

Use the first option your agent supports.

### MCP (official, remote)

Add this server to your agent's MCP settings, then sign in when asked.

```json
{ "mcpServers": { "loops": { "url": "https://mcp.loops.so" } } }
```

Call the MCP tool `execute`.

Server URL: https://mcp.loops.so

### CLI (official)

Install the command, then confirm it runs.

```sh
brew install loops-so/tap/loops
loops --version
```

Run `loops events send`.

Set `$LOOPS_API_KEY` in your environment first (get a key: https://app.loops.so/settings?page=api).

### API (official)

- Base URL: https://app.loops.so/api
- Endpoint: `POST /v1/events/send`
- Auth: send the header `Authorization: Bearer $LOOPS_API_KEY`
- Get a key: https://app.loops.so/settings?page=api
- Docs: https://loops.so/docs/api-reference/intro

Before doing anything else, make one read-only call to confirm access.

## Rules

- Ask the user before anything that sends messages, costs money, or changes data.
- Never print API keys.
