Stop hand-coding
Slack messages.
Visual templates, versioned and team-owned. Send them with a single POST /v1/templates/send call.
// the problem
Stop putting Block Kit in your codebase.
Block Kit JSON in your repo means engineers own every copy change. LithoBlocks holds the template; your code only sends data.
Before
~60 lines · engineer-owned
After
one REST call · data only
// In your codebase await fetch('https://api.lithoblocks.com/v1/templates/send', { method: 'POST', headers: { 'Authorization': 'Bearer $LB_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ template_id: 'tmpl_stripe_webhook_failed', channel_id: 'C0123456', data: { service: 'payment-service', env: 'production', region: 'us-east-1', events_affected: 14, event_type: 'payment.succeeded', window: '5 min', first_seen: '2:08 PM', last_seen: '2:13 PM', top_error: 'WebhookProcessingException: timeout', events_url: 'https://dash.acme.co/events' } }) })
// Response · 200 OK { "success": true, "message_ts": "1715539834.001200", "channel": "C0123456", "remaining_credits": 986, "warnings": [], "slack_truncation": { "fields_truncated": 0 } }
// what's in the box
Everything you'd build yourself. None of the work.
Six things you'd otherwise wire up across your codebase, automation tools, and a few internal docs.
01
Visual Block Kit builder
Drag blocks onto a canvas. Type real content. See the rendered message instantly. Exports valid Block Kit JSON if you want it.
02
Modals, integrated
Build interactive forms with inputs, selects, and date pickers. Wire a button on a message to open a modal, update the message on submit.
03
Message updates
When a button is clicked, update the original message to reflect what happened. One-click actions stay single-click. Get a built-in archive of who clicked what, how many people responded, and which items are still unattended.
04
Directives for summaries
Send an array of data, get an array of formatted blocks. Build digests and batched alerts without writing loops in your backend.
05
Versioned templates
Every template change is versioned. Edit in the builder, every workflow using that template picks up the change. Roll back if it broke something.
06
Simple REST API
One POST endpoint with bearer auth. Route a message to a channel ID, Slack user ID, or email. Get back the Slack message timestamp for updates later.
// call from anywhere
One endpoint. Any caller.
POST /v1/templates/send with a template ID, a destination, and your data. Call it from your backend, a Make scenario, a Zapier zap, GitHub Actions, or a bash script.
// your-backend.ts await fetch('https://api.lithoblocks.com/v1/templates/send', { method: 'POST', headers: { 'Authorization': 'Bearer $LB_API_KEY' }, body: JSON.stringify({ template_id: 'tmpl_stripe_webhook_failed', channel_id: 'C0123456', data: { ...alertData } }) })
curl -X POST https://api.lithoblocks.com/v1/templates/send \ -H "Authorization: Bearer $LB_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "template_id": "tmpl_payment_failed", "channel_id": "C0123456", "data": {"count": 14} }'
# Make.com scenario Trigger → HTTP POST → api.lithoblocks.com/v1/templates/send # Body { template_id, channel_id, data }
All three deliver the same template. Edit it once in LithoBlocks. All three pick up the change.
// pricing
Priced by messages, not seats.
Every plan includes unlimited templates, the visual builder, modal builder, message updates, and full API access.
Builder
$25/mo
250 messages / mo · 1 user
Team
popular$50/mo
1,000 messages / mo · 3 users
Business
$250/mo
10,000 messages / mo · unlimited users
Move Slack messaging
out of your codebase.
Start your 14-day free trial. Any plan, any time.
Start free trial →