Skip to main content
✦Atlas AI is here. 14 intelligent agents, one unified revenue OS.See what's new →
A
Atlas
Customers
Pricing
Sign inBook demoStart free
Webhooks

Events that land. Every time.

50+ event types across every Atlas object. HMAC-SHA256 signed, delivered with exponential backoff, and replayable for 30 days. Your endpoint is always the source of truth.

Start free Book a demo
POST /your-endpoint · deal.created
# Headers
Atlas-Event: deal.created
Atlas-Delivery: evt_01HFXZR2V3...
Atlas-Signature: t=1712345678,v1=a4f8c9d2...
Atlas-Attempt: 1
# Body
{
"id": "evt_01HFXZR2V3K8",
"type": "deal.created",
"created": 1712345678,
"api_version": "2026-01-15",
"data": {
"id": "deal_01HFXZR2V3...",
"value": 48000,
"stage": "qualified"
}
}

Everything you need, built in.

The essentials for teams that want to move fast without giving up control.

50+ event types
Deals, contacts, activities, tasks, meetings, calls, tickets, subscriptions — every mutation fires an event.
HMAC-SHA256 signed
Every payload signed with your endpoint secret. Timestamp-bound to defeat replay attacks.
At-least-once delivery
Exponential backoff: 10s, 30s, 1m, 5m, 30m, 2h, 12h, 24h. 9 attempts over 48 hours.
30-day replay window
Replay any event from the dashboard or via API. Fix a bug, re-run deliveries, carry on.
Per-endpoint filtering
Subscribe one endpoint to 3 events, another to all. Filter by object type, stage, or tag.
Signature verification

Verify like Stripe verifies.

Every request carries an `Atlas-Signature` header with a timestamp and HMAC-SHA256. Verify the signature before trusting the payload — we ship helpers in every SDK.

  • HMAC-SHA256 over `timestamp.payload` with your endpoint secret
  • 5-minute timestamp tolerance defeats replay attacks
  • Signature helpers built into every SDK (`atlas.webhooks.verify`)
  • Rotate endpoint secrets without downtime — old secrets valid for 24h
verify signature (TypeScript)
import { atlas } from "@atlas/sdk";
export async function POST(req: Request) {
const sig = req.headers.get("atlas-signature")!;
const body = await req.text();
const event = atlas.webhooks.verify(body, sig, process.env.WH_SECRET!);
if (event.type === "deal.created") {
await onDealCreated(event.data);
}
return new Response(null, { status: 200 });
}
Delivery guarantees

At-least-once, with escape hatches.

We retry failed deliveries 9 times over 48 hours on exponential backoff. Disable a noisy endpoint, replay missed events, or bulk-redeliver after a deploy.

  • Retries on any non-2xx, timeout after 10 seconds per attempt
  • Dashboard shows delivery log, payload, response, and duration
  • `Atlas-Attempt` header tells you which retry you're seeing
  • Dead-letter events auto-paused after 9 failures — no silent drops
Endpoint health
api.yourapp.com/atlas/webhook
Delivered
99.98%
Avg. latency
142ms
Retried
38 / 12.4K
Failed (dead-letter)
0

Teams ship revenue with this.

Real-world use cases across every revenue function.

Pipe deals into your warehouse
`deal.*` events flow into your ETL. Near-real-time Snowflake or BigQuery updates without a polling job.
Trigger user notifications
`meeting.created` fires a Slack DM to the rep. `deal.stage_changed` pages the exec on a champion win.
Sync to a billing system
`deal.closed_won` provisions a Stripe subscription. Idempotency keys on both sides keep state aligned.
Backfill after a bug fix
Replay 3 days of `contact.updated` events from the dashboard. Your downstream recovers without database surgery.

Frequently asked questions

Which events are available?

50+ events including `deal.{created,updated,stage_changed,closed_won,closed_lost,deleted}`, `contact.{created,updated,merged,deleted}`, `activity.{email,call,meeting}`, `task.*`, `ticket.*`, `subscription.*`, and more. Full list in the dashboard.

How do I handle out-of-order events?

Use `event.created` (Unix timestamp) to order events yourself. We also emit a monotonically increasing `sequence` per endpoint. For strict ordering, set your endpoint to `serialize=true` and we'll deliver one attempt at a time.

Can I receive webhooks in a local dev environment?

Yes — `atlas webhooks listen --forward-to localhost:3000` spins up a signed tunnel. Same flow Stripe developers know. No ngrok config.

What happens if my endpoint is down?

We retry 9 times on exponential backoff (10s → 30s → 1m → 5m → 30m → 2h → 12h → 24h → 48h). Final failure moves the event to the dead-letter queue, replayable for 30 days.

Can I filter which events a URL receives?

Yes — subscribe to specific event types, object properties (`deal.value > 10000`), or object tags. Multiple endpoints per workspace, filtered independently.

Keep exploring
API reference →SDKs →Guides →Integrations →

Run revenue on Atlas.

Start free, no credit card required. Setup in under 10 minutes.

Start free Talk to sales
A
Atlas

The intelligent revenue operating system for modern teams.

Platform
Pipeline & DealsContacts & CompaniesTasks & ActivitiesWorkflowsAutomationsSequencesPlaybooks
Communications
Email & InboxCalls & DialerSMS CampaignsMeetingsChatEmail Templates
Intelligence
Atlas AIDeal PredictionCall CoachingForecastingLead ScoringAnomaly DetectionAnalytics
Solutions
CRM for Small BusinessHubSpot AlternativeFree CRM SoftwareSales TeamsSDR TeamsStartups
Company
AboutCustomersBlogChangelogContact
Resources
Security
© 2026 Atlas Digital, Inc. All rights reserved.
PrivacyTermsSecurityDPACookies