Logs.soLogs.so
Pricing

How teams use Logs.so

See how different teams leverage real-time logs to improve their workflows

Support Teams

Empower non-technical teams to search payments and resolve tickets 73% faster

TubeMagicTubeMagic case study

AI Builders

Building with an AI agent? Install logs.so by pasting one prompt

LovableBoltCursorv0

Sales Teams

Track customer engagement and conversion events

Coming soon
Docs

it's just one HTTP call.Send an event. Watch it land.

Everything you need is on this page. No SDK required, no code required either: your AI builder can do all of this from one prompt.

Anatomy of a logRich logsQuick startAPI referenceExamplesMCP

Anatomy of a log

this JSON becomes this card.

A log is one tiny package of JSON. Three fields are required, the rest are seasoning.

what your app sends
{
"project": "your-workspace-id",
"channel": "revenue",
"event": "💰 Payment received",
"description": "richard@piedpiper.com paid $49",
"tags": { "plan": "Solo", "amount": "$49" },
"notify": true
}
💰

Payment received

● revenuejust now

richard@piedpiper.com paid $49

plan: Soloamount: $49

notify: true also sends a push notification to your phone.

Hover the JSON, or the card, to see what maps where

projectRequired

Which workspace this belongs to. Your workspace ID, copied once from Setup.

e.g. "wsp_4f2k…"

channelRequired

Which shelf of your feed this lands on. revenue, signups, failures. You invent them just by using them.

e.g. "revenue"

eventRequired

The headline. Short, human, emoji up front so you can read the feed at a glance.

e.g. "💰 Payment received"

descriptionOptional

One sentence of detail under the headline. The who and how much.

e.g. "richard@piedpiper.com paid $49"

iconOptional

One emoji that becomes the face of the event in the feed. Skipped? We use the one in your title.

e.g. "💰"

notifyOptional

Set true and your phone buzzes. Save it for events you would get out of bed for.

e.g. true

tagsOptional

Little labeled chips on the card. Amounts, plans, ids. Searchable forever.

e.g. {"plan": "Solo", "amount": "$49"}

user_idOptional

Who did it. Send an email or id and every event builds that customer's timeline.

e.g. "richard@piedpiper.com"

timestampOptional

When it happened, in Unix seconds. Skip it and we stamp it on arrival.

e.g. 1735123456

keywordsOptional

Extra search words that do not show on the card but make it findable.

e.g. ["stripe", "checkout"]

parserOptional

How the description is rendered. MARKDOWN by default, TEXT if you want it raw.

e.g. "MARKDOWN"

Click any log

and it opens up.

Every event in the feed is clickable. Inside, the description renders Markdown, and any media URL you send becomes a real preview. Not just text: proof.

say your app makes videos
{
  "channel":     "renders",
  "event":       "🎬 Video rendered",
  "description": "**24s clip** for [gwen](mailto:gwen@web.app),
                  ready to publish.",
  "tags": {
    "video": "https://cdn.yourapp.com/render-42.mp4",
    "duration": "24s",
    "preset": "vertical-1080p"
  }
}
🎬

Video rendered

just now

24s clip for gwen, ready to publish.

0:24
duration: 24spreset: vertical-1080p
Markdown

Descriptions render bold, links, and lists by default. Write a readable sentence, not a code dump.

Media

Any image, video, or audio URL in your tags embeds automatically, lazy-loaded. Generated a thumbnail, a render, a voice note? Preview it right in the feed.

Buttons

Attach an action link with buttonData: "Open order", "View in admin". One click from the event to the fix.

Media is detected by URL: png, jpg, gif, webp for images · mp4, webm, mov for video · mp3, wav, m4a for audio.

Quick start

Live in three steps.

Step 1

Create a workspace

Sign up, name your workspace, done. Free for 7 days, no credit card.

Step 2

Grab your key

Your Project ID and API key live in Workspace → Settings → API (click Reveal to show the key). Each key is scoped to a single workspace. Authenticate every request with it:

Authorization: <your-api-key>

Keep it server-side. Never ship it to the browser.

Step 3

Send your first event

curl
curl -X POST https://api.logs.so/v2/log \
  -H "Content-Type: application/json" \
  -H "Authorization: your-api-key-here" \
  -d '{
    "project": "my-project",
    "channel": "api-logs",
    "event": "User Registration",
    "description": "New user registered successfully",
    "tags": {"user": "123"},
    "notify": false,
    "timestamp": 1735123456
  }'

Open your feed. It's already there.

API reference

One endpoint.

POSThttps://api.logs.so/v2/log
Content-Type: application/json
Authorization: <your-api-key>
FieldTypeRequiredDescription
projectstringyesYour workspace/project ID
channelstringyesChannel name for the log
eventstringyesEvent title
descriptionstringnoEvent description
iconstringnoSingle emoji character
notifybooleannoSend notification (default: false)
tagsobjectnoCustom tags (object)
parserstringnoParser type [MARKDOWN, TEXT]
user_idstringnoUser ID
timestampnumbernoUnix timestamp (seconds)
keywordsarraynoKeywords for search (array)
TypeScript schema
export interface CreateLogParams {
  project: string,
  channel: string,
  event: string,
  description?: string,
  icon?: string,
  notify?: boolean,
  tags?: Record<string, any>,
  parser?: string,
  user_id?: string,
  timestamp?: number, // Unix timestamp (seconds)
  keywords?: string[],
}

export interface CreateLogRemoteParams extends CreateLogParams {
  apiKey: string;
  apiUrl?: string;
}

Examples

Pick your flavor.

curl -X POST https://api.logs.so/v2/log \
  -H "Content-Type: application/json" \
  -H "Authorization: your-api-key-here" \
  -d '{
    "project": "my-project",
    "channel": "api-logs",
    "event": "User Registration",
    "description": "New user registered successfully",
    "tags": {"user": "123"},
    "notify": false,
    "timestamp": 1735123456
  }'

Connect your agent

Your agent can read the feed.

Hook an MCP client to your feed and ask things like:

"Did anything fail in checkout today?""What did sarah@customer.com do before churning?""Any errors while I slept?""Did the Stripe webhook fire for every payment this week?"

Rather not write any of this?

Paste one prompt into your AI builder and it wires everything up.

Logs.soLogs.so

Server-side truth for your app.

Product

  • Pricing
  • Docs
  • Demo
  • Contact

Builders

  • For Lovable
  • For Bolt
  • For Cursor
  • For v0
  • For Claude Code
  • For Codex
  • For 10x.app
  • For Xcode

Company

  • Support Teams
  • Privacy
  • Terms
© 2026 Logs.sosomeone just used the thing you built · logs.so tells you the moment they do