# Ranla — full documentation bundle Generated for AI agents. Canonical index: https://docs.ranla.ai/llms.txt OpenAPI: https://docs.ranla.ai/openapi.yaml --- # What is Ranla Ranla is the AI growth engineer. It runs the marketing across six jobs from what people do in your product, and ships the product events and conversion tracking it needs as pull requests you review. Transactional email runs on the same stack. You talk to Ranla in the app, in Slack, or from Cursor and Claude over [MCP](./ai/mcp.md). Each job has a desk in the app where you see what Ranla found, what it drafted, and what is waiting on you. ## The six jobs | Job | What Ranla does | What you connect | How-to | |-----|-----------------|------------------|--------| | **Engineering** | Writes the product events and conversion tracking the other jobs need, as a pull request you review. It does not push to your default branch. | GitHub, or send events with the SDK | [Instrument your product](./instrument-quickstart.md) | | **Lifecycle email** | Campaigns and automations for activation, trial endings, and win-backs, with a holdout when you want proof of lift. Transactional email and SMS run on the same stack. | A verified sending domain. SMS uses your own Twilio account. | [Automations](./api/automations.md) | | **Paid advertising** | Drafts ads and landing angles, watches spend against the goals you named, and recommends pausing what does not earn. Google Ads today. | Google Ads. Google bills ad spend to your own card. | [Google Ads](./guides/google-ads.md) | | **Search** | Finds the queries your buyers actually run, drafts pages that answer them, and tracks whether they rank. | Google Search Console. GitHub to deliver pages as pull requests. | [Search](./guides/seo.md) | | **AEO** | Tracks whether answer engines cite you, drafts the pages and proof that earn mentions, and reports lift. Google AI Overview, ChatGPT, and Perplexity. | Nothing | — | | **Social** | Finds threads worth joining, drafts posts and replies in your voice, and schedules what you approve. Reddit today. | Nothing to find threads and draft. Your Reddit account to post. | [Social](./guides/reddit.md) | ## What every job shares | Part | What it is | How-to | |------|------------|--------| | **Events** | The product signals every job reads: signup, activation, billing. Sent through the API, the dashboard, or PostHog, Amplitude, and Mixpanel. | [Events](./guides/events.md) · [Connect analytics](./guides/connect-analytics.md) | | **Brand** | How your product looks and talks, seeded from your website. Every draft uses it. | [Brand](./guides/brand.md) | | **Creative** | Images and ad assets composed in your brand style. | [Creative](./guides/creative.md) | | **Revenue** | Conversions and revenue by channel, from Stripe and Google Ads. | [Revenue](./guides/revenue.md) | | **On-site messages** | Banners and modals for visitors to your website. | [On-site messages](./guides/on-site-messages.md) | ## How far Ranla acts on its own You choose a mode on **Settings → Ranla**: | Mode | What it does | |------|--------------| | **Draft** | Nothing sends, spends, publishes, posts, or lands in your repo until you do it. | | **Propose** | It asks before each email, ad, page, post, or pull request, in the app or Slack. | | **Autopilot** | It runs inside the limits you set. Big or expensive work still waits. | The frequency cap and the daily account cap you set are enforced on every send, and any audience over 5,000 people needs your approval in every mode. See [Modes](./guides/modes.md). ## Free and paid plans | | Free | Paid, from $99/mo | |---|------|-------------------| | **Chat with Ranla** | 500 credits a month | 5,000 to 125,000 credits a month | | **Drafts and proposals in all six jobs** | Yes | Yes | | **Every desk and report** | Yes | Yes | | **Pull requests in your repo** | Yes, they use credits | Yes, they use credits | | **Transactional email** | 3,000 a month, 100 a day, 1 domain | On the same credits as lifecycle email | | **Sending campaigns and automations** | No | Yes | | **Autopilot and desks that check in daily** | No | Yes, inside the limits you set | Every paid plan has every feature; plans differ only in monthly credits. Start on Free and upgrade from **Billing** when you want Ranla to send. See [ranla.ai/pricing](https://ranla.ai/pricing). ## Next steps - [Instrument your product](./instrument-quickstart.md): connect GitHub (Ranla opens a pull request) or send events with the SDK - [Quickstart: send email](./quickstart.md): API key, domain DNS, first `POST /emails` - [Modes](./guides/modes.md): how far Ranla acts on its own - [MCP server](./ai/mcp.md): work with Ranla from Cursor or Claude - Product site: [ranla.ai](https://ranla.ai) · Dashboard: [app.ranla.ai](https://app.ranla.ai) --- # Instrument your product Wire Ranla into your SaaS so lifecycle email runs on product data — not only `POST /emails` for password resets. There are **two ways** to get events into Ranla: 1. **Have Ranla wire it** — Connect GitHub; Ranla inspects your product and opens one pull request for you to review. 2. **Install it yourself** — Add the SDK (or REST) and emit events from your app. **Only need auth email today?** Skip to [Quickstart: send email](./quickstart.md). **Marketing site, not product?** That is one line of HTML and a separate install — see [Track your website](#track-your-website). --- ## What you are setting up | Piece | GitHub path | DIY path | |-------|-------------|----------| | Account on [app.ranla.ai](https://app.ranla.ai) | Required | Required | | GitHub App on your product repo | Required | — | | Pull request with lifecycle events | Ranla opens it; you merge | — | | API key + SDK / REST | Often included in the PR | You add it | | Product events flowing | After you merge and deploy | You call `events.trigger` | | Verified sending domain | Still needed to send from your brand | Same | | Growth workspace (hire Ranla) | Optional for campaigns / agent | Same | Ranla reads events from your app. Campaigns and automations react to those events. Sends go through the same API as transactional mail. You can use **both** paths: GitHub for the first wiring (or later moments), and the SDK anytime you want to emit an event by hand. You can also [connect analytics](./guides/connect-analytics.md) for moments you already track elsewhere. --- ## Path A — Have Ranla wire it (recommended) Best when you want Ranla to find the right call sites in your codebase and open a PR. Ranla never pushes to your default branch. ### 1. Open Install Ranla on Home 1. Sign in at [app.ranla.ai](https://app.ranla.ai). 2. Go to **Home** (`/overview`). 3. Expand **Install Ranla** → **Show installation options**. ### 2. Connect GitHub 1. Click **Connect GitHub**. 2. Install the Ranla GitHub App and grant access to the repository that runs your product (not a docs-only or marketing-only repo unless that is where the app code lives). 3. When GitHub is connected, use **Choose a repository** to pick which repo Ranla may read. Connecting GitHub does **not** require hiring Ranla. You can still send events and use the send API on the free tier. ### 3. Let Ranla inspect and open a PR In **Growth** (or the agent window after hire), ask Ranla to instrument your product — or continue from the Install Ranla / welcome flow if it already started a scan. Ranla will: 1. Read the selected repository. 2. Propose lifecycle events (signups, activation, subscription moments, and similar). 3. Open **one pull request** with the wiring for you to review. You review and merge on GitHub. Deploy as you normally would. After merge, product moments should start showing up in **Events**. ### 4. Confirm events are live 1. Open **Events** in the dashboard and check that new moments appear after real product use (or a test signup). 2. Open **Growth** after you hire Ranla to see how those events feed segments and campaigns. ### 5. Wire more moments later When you need a new product moment (for example “emit when the first meaningful action happens”): - Ask the agent to wire that event, or - Start **Wire** from **Events** (proposed row or empty state) Ranla opens another scoped pull request for that moment. Status stays visible on **Events** (wiring → PR open → merged → live once the first matching event arrives). --- ## Path B — Install it yourself Use this when you prefer to own the integration, or to add events the GitHub PR did not cover. ### 1. Create an account and API key 1. Sign up at [app.ranla.ai](https://app.ranla.ai). 2. Open **Home** (`/overview`) or **Settings → API keys** and click **Create API key**. 3. Copy the `rnl_…` secret once. ```bash export RANLA_API_KEY=rnl_your_key_here ``` ### 2. Install the SDK ```bash npm install @supersend/ranla ``` ```ts import { Ranla } from '@supersend/ranla' const client = new Ranla(process.env.RANLA_API_KEY!) ``` **Other languages** — same API, Ranla defaults (`https://api.ranla.ai`): | Language | Install | |----------|---------| | Python | `pip install ranla` · `from ranla import Ranla` | | Go | `go get github.com/Super-Send/supersendtx-sdks/go/ranla` | | PHP | `composer require ranla/ranla` | | Ruby | `gem install ranla` · `Ranla::Client` | The legacy `supersendtx` packages on each registry remain supported for existing integrations. Working in Cursor or Claude? You can also drive setup through the [MCP server](./ai/mcp.md) and [agent skill notes](./ai/agent-skill.md). ### 3. Track product events Send events when something meaningful happens in your product. Ranla uses these for segments, automations, and the growth agent. ```ts await client.events.trigger({ name: 'user.created', user_id: 'user_123', email: 'ada@yourdomain.com', data: { plan: 'trial', source: 'signup' }, idempotencyKey: 'evt_user_created_123', }) ``` Common first events: | Event | When to fire | |-------|----------------| | `user.created` | Account or workspace created | | `user.activated` | Finished onboarding or first value action | | `subscription.started` | Paid or trial started | | `subscription.churned` | Cancelled or expired | REST equivalent: ```bash curl -X POST https://api.ranla.ai/events \ -H "Authorization: Bearer $RANLA_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: evt_user_created_123" \ -d '{ "name": "user.created", "user_id": "user_123", "email": "ada@yourdomain.com", "data": { "plan": "trial" } }' ``` See [Events API](./api/events.md) for fields, idempotency, and automation matching. ### 4. Verify a sending domain Lifecycle and transactional email must send from a domain you control. 1. **Domains → Add domain** in the dashboard. 2. Add DNS records (Cloudflare one-click if offered). 3. **Verify DNS** on the domain page. Until DNS is verified, use sandbox self-test sends to your account email. See [Quickstart: send email](./quickstart.md) §4 for the full DNS table. ### 5. Send a test email (optional but recommended) Confirm the pipe works before you rely on automations: ```bash curl -X POST https://api.ranla.ai/emails \ -H "Authorization: Bearer $RANLA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "from": "noreply@yourdomain.com", "to": "you@yourdomain.com", "subject": "Ranla pipe check", "html": "
Send path works.
" }' ``` Free tier: 3,000 emails/mo · 100/day · 1 domain. Add a payment method to unlock production sends to other recipients. --- ## Track your website Product events tell you what people do *after* they sign up. The browser script tells you who showed up in the first place. It is a separate one-line install, and it is what fills **Acquisition → Analytics**. ### 1. Paste the script 1. Open **Home** in the dashboard and expand **Connect your marketing site**. 2. Copy the snippet for your account and paste it before `