Developer docs

Wire your workspace’s ordering, enquiry, and catalog into any site — embeddable widgets or a REST API. Create a key under Admin → Developers.

Embed (one line)

Drop the script on any landing page with your publishable key.

<script src="https://afterlaunch.app/embed.js"
  data-key="wpk_your_publishable_key"
  data-launcher="true"></script>

<!-- Wire any element: -->
<button data-afterlaunch="enquiry">Contact us</button>
<button data-afterlaunch="order" data-service="smtp-gateway">Order</button>
<div data-afterlaunch="services"></div>

Or call it programmatically:

AfterLaunch.init({ key: "wpk_..." });
AfterLaunch.openEnquiry();
AfterLaunch.openOrder({ service: "smtp-gateway" });
AfterLaunch.mountServices("#services");

REST API

Base URL https://afterlaunch.app/api/v1. Authenticate with Authorization: Bearer <key>. Publishable keys (wpk_) are browser-safe; secret keys (wsk_) are server-side.

# List services + multi-currency prices
curl https://afterlaunch.app/api/v1/services -H "Authorization: Bearer wpk_..."

# Create an order (returns a checkout payload)
curl -X POST https://afterlaunch.app/api/v1/orders \
  -H "Authorization: Bearer wpk_..." -H "Content-Type: application/json" \
  -d '{"planId":"<plan-uuid>","email":"client@acme.com","currency":"INR"}'

# Submit an enquiry
curl -X POST https://afterlaunch.app/api/v1/enquiries \
  -H "Authorization: Bearer wpk_..." -H "Content-Type: application/json" \
  -d '{"email":"client@acme.com","message":"Tell me more","productSlug":"smtp-gateway"}'

# Check status
curl https://afterlaunch.app/api/v1/orders/<id>     -H "Authorization: Bearer wpk_..."
curl https://afterlaunch.app/api/v1/enquiries/<id>  -H "Authorization: Bearer wpk_..."

Full schema: openapi.json.

Webhooks

Add endpoints under Developers and subscribe to events:order.completed,enquiry.created,payment.succeeded and more. Each delivery is signed — verify it:

import { createHmac, timingSafeEqual } from "crypto";

function verify(rawBody, signature, secret) {
  const expected = createHmac("sha256", secret).update(rawBody).digest("hex");
  return timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}
// header: x-afterlaunch-signature
Keys, CORS origins, and webhook endpoints are managed per workspace inAdmin → Developers.