Skip to main content

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.

The Integration Status page gives you a single health view of your Cello integration. It tracks four core components - the Referral component, the Attribution library, Signups tracking, and Purchases tracking - and tells you at a glance whether each one is sending events as expected. Use Integration Status to confirm a new integration is wired up correctly, monitor an existing integration in production, and quickly spot when an upstream change has broken a webhook or script. You can access it at Integrations → Integration Status in the Cello Portal. It’s available in both sandbox and production.

How it relates to Event Feed

Integration Status and the Event Feed work hand-in-hand:
  • Integration Status - high-level health per component. Use it to answer “is everything working?”
  • Event Feed - individual event log with per-field validation. Use it to answer “why did this specific event fail?”
When a component on Integration Status shows a warning or error, the Event Feed is where you drill in to see the exact payload and field-level issue. The page header gives you an at-a-glance summary of your integration before you scroll into the individual component cards. Integration Status header showing Environment, Status, Health Window, and Last Update
FieldWhat it shows
EnvironmentWhich environment you’re viewing - Sandbox or Production.
StatusAggregate health across all four components (e.g. 4/4 connected, 2/4 need attention).
Health windowThe time range Cello checks for successful events. If none arrive within this window, the integration is flagged as needing attention. The window is 1 hour in production and 24 hours in sandbox.
Last updateTime since the page last refreshed its data. Use the refresh icon to re-check all components on demand - otherwise, statuses refresh automatically within ~10 minutes of an event arriving.
Update configurationOpens the modal where you can change the signup and purchase sources. See Changing the configured source.

Status definitions

Every component reports one of three statuses, calculated against the health window shown in the page header (1 hour in production, 24 hours in sandbox):
StatusMeaning
ConnectedAt least one successful event received within the health window. Even if some events had errors, a single success is enough to count as Connected.
Connected with warningsEvents were received in the last 30 days but none in the current health window, or events arrived in the health window but had validation issues.
Not connectedNo events from this source in the last 30 days, or the source has not been configured.
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.

The four components

1. Referral component

Tracks booted events from cello.js - the script that renders the Referral Component widget in your app. Integration Status card for the Referral component showing a Connected with warnings state with a JWT token error The card shows when the last event and last error were received. When errors are present, the alert summarizes the most recent error and a View all errors link opens the last 10 widget events so you can see what went wrong.
StatusWhat it meansWhat to check
ConnectedThe Referral Component booted successfully within the health window.Nothing - everything is working as expected.
Connected with warningsNo successful boots in the health window, but no errors either.Confirm the Referral Component is still being loaded for users. Check whether traffic to pages embedding the widget has dropped.
Connected with warnings (errors present)Recent boots produced errors. The card shows the last error message and links to the last 10 widget events.See Widget errors reference below to interpret the message.
Not connectedNo boots in 30 days.Verify cello.js is loaded and cello("boot", ...) is called. See Embed the Referral Component.

Widget errors reference

The error messages shown in the portal are deliberately written to be human-readable, and they’re worded differently from what you’ll see in the browser Console or in the Network tab. Use this table to map between the portal wording and the underlying error.
Error typeConsole (browser)API (network tab)Portal
JWT token issue401 (Unauthorized) [Cello]: User is not authorized to load the widgetError 1100: Invalid JWT tokenJWT token is missing, malformed, or expired (code: Invalid token payload)
Internal errorInternal server errorInternal server errorAn internal error occurred - contact support
Token issue (InvalidJwt)
The portal collapses several underlying token failures into a single message: “JWT token is missing, malformed, or expired”. The actual underlying cause is one of:
  • token verification failed - decodeWidgetToken could not verify the signature.
  • token schema not validated - the token payload is invalid (e.g. wrong shape).
  • token missing iat field - the token has no iat claim and allowMissingTokenIat = false.
  • token creation time in future - the iat is in the future.
  • No referrer found for productUserId - the token references a productUserId that doesn’t exist.
  • No auth token found - no token was sent with the boot request.
If the portal shows this error, regenerate the widget token on your backend and confirm it’s signed with the right secret, contains a valid productUserId, and has a current iat timestamp. See User Authentication for details.

2. Attribution library

Tracks referral link visits picked up by cello-attribution.js - the script you embed on your landing pages to capture referral codes. Integration Status card for the Attribution library
StatusWhat it meansWhat to check
ConnectedA referral link was visited within the health window.Nothing - attribution is being captured.
Connected with warningsNo referral link visits in the last few hours.Likely just low traffic. Check sharing activity in the portal.
Not connected (no signup URL)No signup URL is set in your Cello configuration.Set the signup URL in User Experience → Settings.
Not connected (URL set, no events)The signup URL is configured but no visits have been recorded.Confirm cello-attribution.js is embedded on the landing pages reachable from your referral links. See Web attribution setup.

3. Signups tracking

Tracks signup events from your configured source. The expected event type depends on which source you use:
SourceEvents tracked
Cello APInew-signup
Stripecustomer.created, customer.updated
ChargebeeCustomer Created, Customer Changed
Auto AttributionSignup detected by Auto Attribution (only used if no other source is set)
Integration Status card for Signups tracking showing a Connected with warnings state The card shows the configured source, when the last attributed signup event was received (i.e. the last event that included a referral code), and a Change link to update the source. When the card needs attention, the alert links directly to the Event Feed so you can drill into the offending events.

Common alerts

Status / SourceAlertWhat to do
Not connected - Cello APINo new-signup events received from Cello API.Confirm your backend is calling POST /events with trigger: "new-signup". See Track Signups.
Not connected - StripeNo customer.created / customer.updated events from Stripe.Confirm the Stripe webhook is installed and pointed at the right Cello endpoint.
Not connected - ChargebeeNo Customer Created / Customer Changed events from Chargebee.Confirm the Chargebee webhook is configured.
Not connected - Auto AttributionNo signups detected.Verify Auto Attribution is enabled and a signup has actually occurred.
Not configuredEvent source is not set.Set the source from the Update configuration modal (sandbox), or contact Cello Support (production).
Missing API keyCello API key has not been generated.Generate an API key in Integrations → API Keys.
Missing webhookThe webhook for the selected source has not been installed.Follow the webhook setup guide for your provider.
Connected with warnings - events received, none attributed”We are receiving events from [source], but no attributed events in the last [health window]. Go to the events page.”Events are arriving but none include a referral code (ucc), so they can’t be attributed. Open the Event Feed (linked directly from the alert) and inspect the recent events to see which ucc values are missing or malformed.
Connected with warnings - attributed events have errorsAll attributed events received in the health window failed validation.Open the Event Feed and inspect the recent attributed events to see which required fields are failing.

4. Purchases tracking

Tracks purchase events from your configured source:
SourceEvents tracked
Cello APIinvoice-paid
StripePurchase events (e.g. invoice.paid, charge.succeeded)
ChargebeePurchase events
Integration Status card for Purchases tracking showing a Connected with warnings state The card shows the configured source, when the last attributed purchase event was received (i.e. the last event that included a referral code), and a Change link to update the source. When the card needs attention, the alert links directly to the Event Feed so you can drill into the offending events.

Common alerts

Status / SourceAlertWhat to do
Not connected - Cello APINo invoice-paid events received from Cello API.Confirm purchase events are being sent. See Track Purchases.
Not connected - StripeNo purchase events from Stripe.Confirm the Stripe webhook is forwarding purchase events.
Not connected - ChargebeeNo purchase events from Chargebee.Confirm the Chargebee webhook is forwarding purchase events.
Not configuredEvent source is not set.Set the source from the Update configuration modal (sandbox), or contact Cello Support (production).
Connected with warnings - events received, none attributed”We are receiving events from [source], but no attributed events in the last [health window]. Go to the events page.”Events are arriving but none include a referral code (ucc), so they can’t be attributed. Open the Event Feed (linked directly from the alert) and inspect the recent events to see which ucc values are missing or malformed.
Connected with warnings - attributed events have errorsAll attributed events received in the health window failed validation.Open the Event Feed and inspect the recent attributed events to see which required fields are failing.

Changing the configured source

Use the Update configuration modal to choose where Cello should track signups and purchases from. You can open it from the Update configuration button in the page header, or from the link inside the Signups tracking and Purchases tracking cards. Update configuration modal with Signup source and Purchase source dropdowns

What you can configure

  • Signup source - Cello API, Stripe, Chargebee, or Auto Attribution.
  • Purchase source - Cello API, Stripe, or Chargebee.
When you change a source, the corresponding component on Integration Status will revert to Not connected until events from the new source start arriving.

Sandbox vs production

EnvironmentWho can change the configuration
SandboxYou can change the signup and purchase sources yourself while testing your integration.
ProductionSource configuration in production is handled by Cello Support. Reach out whenever you need to set or change a production source.

Auto Attribution

Auto Attribution can only be enabled by Cello Support. Once enabled for your tenant, Auto Attribution appears as a selectable option in the Signup source dropdown. If Auto Attribution is on but a CRM source (Cello API, Stripe, or Chargebee) is selected as the primary signup source, Auto Attribution runs in the background to catch any signups missed by the primary source.

Troubleshooting

ProblemCauseSolution
Component shows Not connected even though events are flowingStatus updates can take up to 10 minutesClick the refresh icon next to Last update to re-check immediately.
Component shows Connected with warnings but you can’t see whyThe summary doesn’t include payload-level detailOpen the Event Feed to inspect the latest events for that source.
Signup or Purchase tracking shows “source not set”No source has been configured for this tenantSet the source from the Update configuration modal in sandbox, or contact Cello Support to configure it for production.
Status flipped to Not connected after you updated your integrationSource was changed and no new events have arrived yetTrigger a test event from the new source - the status will update within ~10 minutes.
Auto Attribution doesn’t appear in the Signup source dropdownAuto Attribution has not been enabled for your tenantContact Cello Support to enable Auto Attribution.