Telloo for app developers

Content reporting for App Store review, done in an afternoon

If your app has posts, comments, photos or profiles, App Store guideline 1.2 and Google Play’s user-generated content policy expect a report button and a team that acts on it. Telloo is the report inbox behind that button — alerts, a 24-hour clock and a signed callback — so you don’t build one.

What reviewers ask for, and who covers it

Rejections under 1.2 usually ask you to act on reports within 24 hours by removing the content and the user. That window comes from App Review messages, not the guideline text — it is still the one to plan for. Telloo handles the reporting side; a few items stay in your app.

RequirementWhoHow
A way for users to report objectionable contentTellooA report link you open from your “Report” button, or one API call from your server.
Timely responses to reportsTellooEmail and Slack the moment a report arrives, a 24-hour clock on every report, and a reminder before it runs out.
Removing the content and the user who posted itYour appYou decide in the inbox; Telloo sends a signed callback to your server so it can hide the post or ban the account.
Letting users block abusive usersYour appA block button in your app. Telloo does not see your users’ social graph.
Filtering objectionable materialYour appA word list or a moderation API on your side, before content is published.
Terms users accept before posting (Google Play)Your appA terms screen in your sign-up flow that says what is not allowed.

The full checklist for Apple and Google →

Option 1 · no backend

A report link

Your “Report” button opens a Telloo page in a web view. The user picks one of eight reasons (offensive, sexual, violence, harassment, spam, rights, illegal, other) and adds a note. The page has no header, comes in seven languages and is protected by a bot check.

https://telloo.io/report/{your-source-id}
  ?kind=post&id=8842
  &title=Best+budget+headphones
  &url=https://yourapp.com/p/8842
  &sig=<hmac>

In signed mode (recommended) the link carries an HMAC of the target, so nobody can file reports against content that doesn’t exist:

import { createHmac } from "node:crypto";

// kind, id, url, title, author — joined by newlines
const payload = [kind, id, url, title, author].join("\n");
const sig = createHmac("sha256", process.env.TELLOO_SIGNING_SECRET)
  .update(payload)
  .digest("hex");

Option 2 · your own screen

One API call

Keep your own report screen and forward it from your server. The key stays on the server — never ship it in the app binary.

POST https://telloo.io/api/v1/reports
Authorization: Bearer tlr_…
Content-Type: application/json

{
  "target": { "kind": "comment", "id": "c_19", "url": "https://yourapp.com/c/19",
              "author": "user_204" },
  "reason": "harassment",
  "note": "Keeps replying to my posts",
  "reporter": "user_377"
}

Returns 201 for a new report, or 200 when the same person already reported it.

Copy-paste snippets for Node.js and Workers →

After a report comes in

  • One open item per piece of content — ten reports of the same post are one row with a count
  • The same reporter is only counted once
  • Email to admins and a Slack or webhook message the moment it arrives
  • A reminder before the 24 hours run out, so nothing slips over a weekend
  • Any team member can resolve, so cover doesn’t depend on one admin
  • Resolving sends a signed callback to your server (Stripe-style HMAC header), with a resend button if it fails
  • Reports are private — they never appear on your public boards or in board-level Slack channels
  • CSV export and an audit log of who resolved what, for when a reviewer asks
POST https://api.yourapp.com/telloo-callback
Telloo-Signature: t=1761800000,v1=<hex>

{ "event": "report.resolved",
  "report": { "id": "…", "status": "removed",
              "target": { "kind": "comment", "id": "c_19", "author": "user_204" },
              "reportCount": 3, "resolvedAt": "…", "note": "…" } }

We built it for our own app first

TierLoop, our ranking app, got the reporting question in App Review. We built this inbox to answer it and then made it part of Telloo, so the next small team doesn’t have to write the same tables, alerts and admin screen again.

Which plan

Included from Starter ($19.99/mo), next to your feedback boards — no per-report or per-user pricing. The 14-day trial includes it, no card needed.

Compare plans →

Ship your report button this afternoon

Start the 14-day trial, create a report source and paste the link into your app.