cello_get_integration_status checks whether all four required parts of a Cello referral program integration are working for your product, and returns a plain-language Integration Health Report. It is the fastest way to answer “is my integration working?” without leaving your editor.
You don’t call it directly. Ask your coding tool in natural language and it picks the tool for you:
“Is my Cello integration working?”
“I just finished the Cello integration. Verify that everything is set up correctly.”
“Why aren’t my Cello referral rewards being triggered?”
What it checks
A complete Cello integration has four components. The tool reports on all four, every time.
For what each component’s statuses mean and how to fix them, see the Component reference below.
When to call it
- While you’re integrating, to confirm the step you just finished actually worked before you move on to the next one.
- After the integration is complete, to verify all four components are set up and communicating correctly.
- When rewards aren’t triggering, to find out which component is at fault.
- As your coding tool’s own check, once it has finished writing the integration code.
What the report contains
The tool returns one section per component. Each section includes these fields:Status definitions
Every component reports one of three statuses, calculated against a health window of 1 hour in production and 24 hours in sandbox. If no successful events arrive within that window, the component is flagged as needing attention.
Statuses can move in any direction. A component can go from Connected to warnings if recent events have errors, or to Not connected if you change the source.
Connected with warnings is not the same as Not connected. Connected with warnings means events are arriving and the integration is fundamentally wired up. The fix is usually about the referral code (
ucc) or field validation, not about setting up or changing a source. Always match troubleshooting to the source that is already configured.How to read the report
The tool instructs your assistant to follow four rules. Knowing them helps you sanity-check the answer you get back. All four components are always reported. Every component keeps its own Conclusion and Status, and the last-event timing on a connected component is part of the verdict rather than noise. If your assistant summarises only the broken ones, ask it for the full report. Only the fixes on the Action line apply. Each component’s Action line is the remediation for that component. Fixes invented outside it, or borrowed from another component, tend to make things worse. Auto-attribution is context, not a lever. TheAuto-attribution for signup detection field is read-only configuration detail on Signup tracking. It is a separate mechanism from the Attribution library (cello-attribution.js), and toggling it never fixes an attribution problem or a webhook problem. See Auto Attribution for what it actually does.
Recency warnings can be normal. If the report flags recency warnings only, or describes a quiet period, that is expected for a small or new program. It isn’t evidence of a broken install or webhook unless you were expecting recent activity, or another component’s Action line says otherwise.
Component reference
What each component tracks, what its statuses mean, and what to do about them.Referral component
Tracksbooted events from cello.js, the script that renders the referral component in your app.
Widget errors
Widget error messages are written to be human-readable, and they’re worded differently from what you’ll see in the browser Console or the Network tab. Use this table to map between them.Token issue (InvalidJwt)
Several underlying token failures collapse into the single message “JWT token is missing, malformed, or expired”. The actual cause is one of:
token verification failed-decodeWidgetTokencould not verify the signature.token schema not validated- the token payload is invalid (e.g. wrong shape).token missing iat field- the token has noiatclaim andallowMissingTokenIat = false.token creation time in future- theiatis in the future.No referrer found for productUserId- the token references aproductUserIdthat doesn’t exist.No auth token found- no token was sent with the boot request.
productUserId, and has a current iat timestamp. See User Authentication for details.
Attribution library
Tracks referral link visits picked up bycello-attribution.js, the script you embed on your landing pages to capture referral codes.
Signup tracking
Tracks signup events from your configured source. The expected event type depends on the source:
Whatever the state, troubleshoot the source that is already configured rather than switching sources or setting up a webhook for a different one.
Purchase tracking
Tracks purchase events from your configured source:
Purchases have no Auto Attribution path and no recency warning. A configured purchase source that has never received events shows Not connected until the first event arrives.
Changing the configured source
Your signup source and purchase source tell Cello where to expect your events. Cello can’t recognise events until both are set. You can set them yourself, and change them while you’re still testing. The options are:- Signup source - Cello API, Stripe, Chargebee, or Auto Attribution
- Purchase source - Cello API, Stripe, or Chargebee
new-signup at the real signup moment instead, or backfill with the purchase-first, signup-later pattern.
The right choice also depends on:
- Payment provider. Stripe and Chargebee can use webhooks. Other providers such as Paddle, Recurly and RevenueCat use the Cello API.
- Reward model. Recurring vs one-time rewards, free-to-paid conversion, renewals, and refunds.
- Motion. Self-serve vs sales-led, for example Salesforce.
- Auto Attribution. Can be primary or fallback, and is enabled by Cello only.
A wrong source silently breaks attribution rather than failing loudly. If you’re unsure which one fits your setup, confirm it with Cello before you build against it.
Auto Attribution
Auto Attribution can only be enabled by Cello. Once it is enabled for your tenant, it becomes selectable as a signup source. If Auto Attribution is on but a CRM source (Cello API, Stripe, or Chargebee) is your primary signup source, Auto Attribution runs in the background to catch any signups the primary source missed.When to use cello_get_events instead
cello_get_integration_status answers “is everything working?” at the component level. It does not validate individual webhook payloads.
When you need to know why one specific event failed, or which field in it was missing or malformed, use cello_get_events instead. The usual sequence is to run the health check first, then drill into events for whichever component came back with warnings.
Developers → Events
Per-event, per-field validation. Answers “why did this specific event fail?”
Pre-launch Testbook
The manual, front-end checks no automated tool can see for you
Troubleshooting
Programmatic use
Alongside the formatted report, the response includesstructuredContent with the raw per-component status objects: connectionStatus (connected, connectedWithWarnings, or notConnected), an optional warningType, and a lastEventReceived timestamp, plus the configured signup and purchase sources and any widget errors. Use it when you want to gate a deployment or build your own check rather than read prose.
Related
All tools
Every tool the Cello MCP server exposes
Prompts
Example prompts for building and debugging your integration