> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cello.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Setup Overview

> Connect MCP, build your integration in pre-launch, verify it, then launch your program

Integrating Cello is a path you own end to end: connect the MCP server, build against your real product while your account is still in pre-launch, watch the steps verify themselves, then launch your program. This page covers the whole path.

## Start here

### Connect the Cello MCP server

Connect the [Cello MCP server](/mcp/introduction) to your editor before you write any code. Your coding tool then has live access to Cello's docs, your integration's health, and best-practice recommendations, so it can tell you what to build next and flag what's still missing.

It is also where your integration status lives, so connecting it is how you check your work as you go, not just how you build faster.

<CardGroup cols={2}>
  <Card title="MCP introduction" icon="plug" horizontal href="/mcp/introduction" />

  <Card title="Connect your client" icon="wrench" horizontal href="/mcp/connect" />
</CardGroup>

### Know where you're building

Everything below happens in your **production** account, while it is still in **pre-launch phase**. Events are recorded as test data, nothing is paid out, and notifications don't send until you launch your program.

You don't need a sandbox for any of it. If integrating in a separate environment suits your development process better, a sandbox is available under **My account** in the portal, and everything there stays test data as well.

### Select your event sources

Cello can't recognise your events until a **signup source** and a **purchase source** are both set in the portal. Until they are, nothing you build will flip to verified.

<Note>
  Stripe or Chargebee can only be your signup source if your payment-provider customer is created **at signup**. If the customer is created **at first purchase**, use the Cello API to send `new-signup` at the real signup moment instead.
</Note>

## Build your integration

<span className="badge-blue">Effort: \~1 day with MCP connected</span>

<img src="https://mintcdn.com/cello/9JNJovQSvwIBkkI9/images/cello-setup-overview.png?fit=max&auto=format&n=9JNJovQSvwIBkkI9&q=85&s=de7a09d4356f5387ddd4dd46d8a23bde" alt="Cello setup overview 4 steps" width="5114" height="1957" data-path="images/cello-setup-overview.png" />

These four steps mirror the tasks on the Technical integration page in the portal, and each one flips to **Verified from your setup** on its own once Cello sees it working in your product. Complete them regardless of your tech stack or payment gateway.

With the MCP server connected, your coding tool writes most of this and checks its own work as it goes, so the four steps together are typically about a day of coding. Without it, expect longer.

The portal labels the same work slightly differently: Add the referral widget, Add attribution library, Track signups, Setup purchase event tracking, and Add discount code.

<Steps>
  <Step title="Integrate the referral component">
    Add referral functionality to your web application with Cello's embeddable Referral Component.

    <CardGroup cols={2}>
      <Card title="Referral Component Quickstart" icon="js" horizontal href="/referral-component/quickstart" />
    </CardGroup>

    You can also integrate the Cello Referral Component into your mobile apps. Choose the appropriate SDK for your platform:

    <CardGroup cols={2}>
      <Card title="iOS SDK" icon="apple" horizontal href="/sdk/mobile/ios" />

      <Card title="Android SDK" icon="android" horizontal href="/sdk/mobile/android" />

      <Card title="React Native SDK" icon="react" horizontal href="/sdk/mobile/react-native" />
    </CardGroup>
  </Step>

  <Step title="Capture referral codes on landing pages">
    Set up a [Referral Landing Page](/guides/user-experience/optimizing-landing-pages) and capture referral codes (`ucc`) when users click referral links. For Web signup flow, follow this guide:

    <CardGroup cols={2}>
      <Card title="Web signup flow" icon="browser" horizontal href="/attribution/for-web" />
    </CardGroup>

    Or choose the appropriate guide for your flow:

    <CardGroup cols={2}>
      <Card title="Mobile signup flow" icon="mobile" horizontal href="/attribution/for-mobile" />

      <Card title="HubSpot forms" icon="hubspot" horizontal href="/attribution/hubspot" />

      <Card title="Typeform forms" icon="input-pipe" horizontal href="/attribution/typeform" />
    </CardGroup>
  </Step>

  <Step title="Track signups">
    When users sign up or express interest in your product, attribute these events to their referrer for potential future rewards.

    Choose your preferred method to send signup events to Cello:

    <CardGroup cols={2}>
      <Card title="Track signups" icon="user-plus" href="/attribution/tracking-signups">
        Complete guide for tracking signup events
      </Card>

      <Card title="POST /events endpoint" icon="code" href="/api-reference/generic-events/send-event">
        API reference for sending events
      </Card>
    </CardGroup>
  </Step>

  <Step title="Track purchases">
    Complete the conversion tracking by sending purchase events to Cello when users make payments.

    Choose your integration method based on your payment gateway:

    <CardGroup cols={2}>
      <Card title="Track purchases" icon="credit-card" href="/attribution/tracking-purchase">
        Complete guide for tracking purchase events
      </Card>

      <Card title="Apply discounts" icon="badge-percent" href="/attribution/apply-discounts">
        Apply discounts to referred users when creating a subscription
      </Card>

      <Card
        title="Stripe Webhook"
        icon={<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/cello/#clip0_19722_44991)">
<path d="M18 36C27.9411 36 36 27.9411 36 18C36 8.05888 27.9411 0 18 0C8.05888 0 0 8.05888 0 18C0 27.9411 8.05888 36 18 36Z" fill="#635BFF"/>
<path fillRule="evenodd" clipRule="evenodd" d="M16.596 13.995C16.596 13.149 17.289 12.816 18.441 12.816C20.097 12.816 22.185 13.32 23.841 14.211V9.09898C22.032 8.37898 20.25 8.09998 18.45 8.09998C14.031 8.09998 11.097 10.404 11.097 14.256C11.097 20.259 19.368 19.305 19.368 21.897C19.368 22.896 18.495 23.22 17.28 23.22C15.471 23.22 13.167 22.482 11.34 21.483V26.658C13.365 27.531 15.408 27.9 17.28 27.9C21.807 27.9 24.921 25.659 24.921 21.762C24.885 15.282 16.596 16.434 16.596 13.995Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_19722_44991">
<rect width="36" height="36" fill="white"/>
</clipPath>
</defs>
</svg>}
        href="/integrations/webhooks/stripe-webhook"
      >
        Stripe webhook integration for purchase events
      </Card>

      <Card
        title="Chargebee Webhook"
        icon={<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.1464 18.0024L35.9265 12.3313V0H23.5953L12.1464 18.0024Z" fill="#FF3300"/>
<path d="M0.36 17.7853C0.36 19.2605 0.539827 20.6924 0.879691 22.0664L12.1451 18.0017L0.786251 13.9024C0.509734 15.1512 0.36 16.4499 0.36 17.7819V17.7853Z" fill="#FF3300"/>
<path d="M4.54902 6.32317L12.1436 18.0031L15.6415 0.177188C11.2091 0.799913 7.3026 3.05771 4.54902 6.32317V6.32317Z" fill="#FF3300"/>
<path d="M12.1464 18.0008L35.9265 23.6686V35.9998H23.5953L12.1464 18.0008Z" fill="#FF3300"/>
<path d="M4.54902 29.6798L12.1436 17.9978L15.6415 35.8204C11.2091 35.1977 7.3026 32.9399 4.54902 29.6744L4.54902 29.6798Z" fill="#FF3300"/>
</svg>}
        href="/integrations/webhooks/chargebee-webhook"
      >
        Chargebee webhook integration for purchase events
      </Card>
    </CardGroup>
  </Step>
</Steps>

## Integration Guides

Ready-to-use webhook integrations for Stripe and Chargebee provide the **fastest path** to track referral conversions automatically.

<Tip>
  These guides are **optimized for the typical freemium scenario with Stripe or Chargebee**.

  Use one of these guides if you:

  * Create a Stripe or Chargebee customer on signup
  * Use the Stripe or Chargebee webhook to send Cello referral conversion events
</Tip>

<CardGroup cols={2}>
  <Card title="Stripe Webhook Quickstart" icon="book-open" horizontal href="/attribution/use-cases/stripe" />

  <Card title="Chargebee Webhook Quickstart" icon="book-open" horizontal href="/attribution/use-cases/chargebee" />
</CardGroup>

## Performance enhancements

<span className="badge-green">Recommended, not required</span>

The portal also shows **recommendations** (if they're enabled for your account): enhancements scored across activation, sharing and conversion. See [Performance Recommendations](/guides/attribution/recommendations) for how the score works.

They don't block **Launch program**, but they are **what separates a program that performs from one that merely works**. A referral program users can't find doesn't get used, however correct the integration behind it is.

These are as much user-experience decisions as technical ones, so they may take some alignment before you build - worth starting that early. They're also much easier to fold in while you're already in the code, since they touch your navigation, your product's key moments and your checkout.

<Note>
  Shipping a minimal integration first and adding these later is a legitimate plan - just expect your performance numbers to stay low until they're done.
</Note>

<Tip>
  **Ask your coding tool about recommendations.** With the Cello MCP connected, ask *"what recommendations apply to my program, and which of them need code changes rather than portal configuration?"* You get your own scored list, with the code work separated from what's only portal configuration.
</Tip>

## Verify and launch

Work through the pre-launch testbook while you build, and again at the end. It covers the manual, front-end checks Cello can't see for you: whether the referral component sits well in your UI, whether the new-user banner reads correctly, and whether the discount math is right on both monthly and yearly plans.

<CardGroup cols={2}>
  <Card title="Pre-launch Testbook" icon="list-check" horizontal href="/guides/integration/pre-launch-testbook" />
</CardGroup>

The **Go live** card in the portal stays locked while anything is outstanding. Once every task is complete, **Launch program** opens a short pre-launch checklist asking you to confirm you have tested:

* The referral widget loads and opens for signed-in users
* Notifications work: badge, announcement, email
* New users land on the correct page from a referral link
* The new-user discount shows correctly at checkout
* Signups and purchases are attributed correctly

<Warning>
  Launching takes your account out of pre-launch and **can't be undone**. From that point rewards pay out, notifications reach real referrers, fraud checks run, the payout delay applies, and all new data is treated as live. To test changes after launch, use a sandbox.
</Warning>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.